URPM::Resolve(3) User Contributed Perl Documentation URPM::Resolve(3)NAMEURPM::Resolve - Resolve routines for URPM/urpmi
SYNOPSISDESCRIPTION
The property functions
The property2name* functions parse things like "mageia-release[>= 1]"
which is the format returned by URPM.xs for ->requires, ->provides,
->conflicts...
property2name($property)
Returns the property name (eg: "mageia-release" in above example)
property2name_range($property)
Returns the property name & range (eg: "mageia-release" & ">= 1" in
above example)
property2name_op_version($property)
Returns the property name, operator & range (eg: "mageia-release",
">=", & "1" in above example)
The state functions
Those are wrappers around $state (cf "The $state object" in URPM).
packages_to_remove($state)
Returns the ids of the packages to remove
removed_or_obsoleted_packages($state)
Returns the ids of the packages that are either to remove or are
obsoleted
Strict arch related functions
strict_arch($urpm)
Is "strict-arch" wanted? (cf "man urpmi") Since it's slower we only
force it on bi-arch
strict_arch_check_installed($db, $pkg)
Checks whether $pkg could be installed under strict-arch policy (ie
check whether $pkg->name with different arch is not installed)
strict_arch_check($installed_pkg, $pkg) = @_;
Check whether $installed_pkg and $pkg have same arch (except for
src/noarch of course)
Installed packages related functions
get_installed_arch($db, $n)
Returns the architecture of package $n in rpm DB
is_package_installed($db, $n)
Is $pkg->name installed?
provided_version_that_overlaps($pkg, $provide_name)
Finds $pkg "provides" that matches $provide_name, and returns the
version provided. eg: $pkg provides "a = 3", $provide_name is "a >
1", returns "3"
find_required_package($urpm, $db, $state, $id_prop)
Find the package (or packages) to install matching $id_prop.
Returns (list ref of matches, list ref of preferred matches) (see
also find_candidate_packages())
Choosing packages helpers
_find_required_package__kernel_source($urpm, $db, $choices)
Prefer the pkgs corresponding to installed/selected kernels
_find_required_package__kmod($urpm, $db, $choices)
Prefer the pkgs corresponding to installed/selected kernels
_score_for_locales($urpm, $db, $pkg)
Packages that require locales-xxx when the corresponding locales
are already installed should be preferred over packages that
require locales which are not installed.
eg: locales-fr & locales-de are installed,
prefer firefox-fr & firefox-de which respectively require
locales-fr & locales-de
Misc helpers
pkg2media($mediums, $pkg)
Return the medium that contains the URPM::Package $pkg
Dependancy resolver related functions
find_candidate_packages($urpm, $id_prop, $o_rejected)
Find candidates packages from a require string (or id). Takes care
of choices using the '|' separator. (nb: see also
find_required_package())
whatrequires($urpm, $state, $property_name)
Return packages requiring $property_name
whatrequires_id($state, $property_name)
Return ids of packages requiring $property_name
unsatisfied_requires($urpm, $db, $state, $pkg, %options)
Return unresolved requires of a package (a new one or an existing
one).
with_db_unsatisfied_requires($urpm, $db, $state, $name, $do)
This function is "suggests vs requires" safe: Traversing DB on
'whatrequires' will give both requires & suggests, but
->unsatisfied_requires() will check $p->requires and so filter out
suggests
with_state_unsatisfied_requires($urpm, $db, $state, $name, $do)
# LOG: do not ignore dropped provide from updated package
(mdvbz#40842) #
(http://svn.mandriva.com/viewvc/soft/rpm/perl-URPM/trunk/URPM/Resolve.pm?r1=242655&r2=242656&)
# TV: was introduced in order to replace one
with_db_unsatisfied_requires() call by
with_any_unsatisfied_requires()
with_any_unsatisfied_requires($urpm, $db, $state, $name, $do)
See above...
backtrack_selected($urpm, $db, $state, $dep, $diff_provides, %options)
Used when a require is not available
set_rejected($urpm, $state, $rdep)
Keep track of what causes closure. Set removed and obsoleted
level.
resolve_rejected($urpm, $db, $state, $pkg, %rdep)
Close rejected (as urpme previously) for package to be removable
without error.
resolve_requested($urpm, $db, $state, $requested, %options)
Resolve dependencies of requested packages; keep resolution state
to speed up process.
A requested package is marked to be installed; once done, an
upgrade flag or an installed flag is set according to the needs of
the installation of this package.
Other required packages will have a required flag set along with an
upgrade flag or an installed flag.
Base flag should always be "installed" or "upgraded".
The following options are recognized :
callback_choices : subroutine to be called to ask the user to
choose between several possible packages. Returns an array of
URPM::Package objects, or an empty list eventually.
keep :
nodeps :
no_suggests: ignore suggests tags
It actually calls resolve_requested__no_suggests() and
resolve_requested_suggests().
resolve_requested_suggests($urpm, $db, $state, $selected, %options)
Select newly suggested package is installed as if (hard) required.
resolve_requested__no_suggests($urpm, $db, $state, $requested,
%options)
Like resolve_requested() but doesn't handle suggests
disable_selected ($urpm, $db, $state, @pkgs_todo)
Do the opposite of the resolve_requested: unselect a package and
extend to any package not requested that is no longer needed by any
other package.
Return the packages that have been deselected.
disable_selected_and_unrequested_dependencies($urpm, $db, $state,
@pkgs_todo)
Determine dependencies that can safely been removed and are not
requested. Return the packages that have been deselected.
Dependancy related functions
_dep_to_name($urpm, $dep)
Take a string of package ids (eg: "4897|4564|454") that represent
packages providing some dependancy. Return string of package names
corresponding to package ids. eg:
"libgtk1-devel|libgtk2-devel|libgtk3-devel" for ids corresponding
to "gtk-devel"
$dep is a hashref: { required => $ID, requested =>
$requested->{$ID} } # CHECK IT REALLY IS AN ID HERE => WE SHOULD
REALLY DOCUMENT $requested
_id_to_name($urpm, $id_prop)
Returns package name corresponding to package ID (or ID if not
numerical)
_ids_to_names($urpm, @ids)
Return package names corresponding to package ids
_ids_to_fullnames($urpm, @ids)
Return package fullnames corresponding to package ids. identical
to _ids_to_names() modulo short name vs full name
Size related functions
selected_size($urpm, $state)
Compute selected size by removing any removed or obsoleted package.
Returns total package size
selected_size_filesize($urpm, $state)
Compute selected size by removing any removed or obsoleted package.
Returns both total package size & total filesize.
Other functions
compute_flags($urpm, $val, %options)
Adds packages flags according to an array containing packages
names. $val is an array reference (as returned by
get_packages_list) containing package names, or a regular
expression matching against the fullname, if enclosed in slashes.
%options :
callback : sub to be called for each package where the flag is set
skip : if true, set the 'skip' flag
disable_obsolete : if true, set the 'disable_obsolete' flag
request_packages_to_upgrade($urpm, $db, $state, $requested, %options)
Select packages to upgrade, according to package already
registered. By default, only takes best package and its obsoleted
and compute all installed or upgrade flag. (used for
--auto-select)
Graph functions
sort_graph($nodes, $edges)
Sort the graph
nb: this handles $nodes list not containing all $nodes that can be
seen in $edges
check_graph_is_sorted($sorted, $nodes, $edges)
sort_by_dependencies($urpm, $state, @list_unsorted)
sorted_rpms_to_string($urpm, @sorted)
build_transaction_set($urpm, $db, $state, %options)
Build transaction set for given selection Options: start, end,
idlist, split_length, keep
COPYRIGHT
Copyright (C) 2002-2005 MandrakeSoft SA
Copyright (C) 2005-2010 Mandriva SA
Copyright (C) 2011-2013 Mageia
perl v5.18.1 2013-11-05 URPM::Resolve(3)