libzypp  17.8.0
zypp::Resolver Class Reference

Dependency resolver interface. More...

#include <Resolver.h>

Inheritance diagram for zypp::Resolver:

Public Member Functions

 Resolver (const ResPool &pool)
 Ctor. More...
 
virtual ~Resolver ()
 Dtor. More...
 
bool verifySystem ()
 Resolve package dependencies: More...
 
bool resolvePool ()
 Resolve package dependencies: More...
 
bool resolveQueue (solver::detail::SolverQueueItemList &queue)
 Resolve package dependencies: More...
 
void undo ()
 
void reset ()
 
bool doUpgrade ()
 Do an distribution upgrade (DUP) More...
 
void doUpdate ()
 Update to newest package. More...
 
std::list< PoolItemproblematicUpdateItems () const
 Unmaintained packages which does not fit to the updated system (broken dependencies) will be deleted. More...
 
ResolverProblemList problems ()
 Return the dependency problems found by the last call to resolveDependencies(). More...
 
void applySolutions (const ProblemSolutionList &solutions)
 Apply problem solutions. More...
 
sat::Transaction getTransaction ()
 Return the Transaction computed by the last solver run. More...
 
void setForceResolve (bool force)
 Remove resolvables which are conflicts with others or have unfulfilled requirements. More...
 
bool forceResolve () const
 
void setIgnoreAlreadyRecommended (bool yesno_r)
 Ignore recommended packages that were already recommended by the installed packages. More...
 
bool ignoreAlreadyRecommended () const
 
void setInr (ResolverNamespaces namespaces_r)
 Weak form of ignoreAlreadyRecommended =false. More...
 
void resetInr ()
 
ResolverNamespaces inr () const
 
void setOnlyRequires (bool yesno_r)
 Setting whether required packages are installed ONLY So recommended packages, language packages and packages which depend on hardware (modalias) will not be regarded. More...
 
void resetOnlyRequires ()
 
bool onlyRequires () const
 
void setUpgradeMode (bool yesno_r)
 Setting whether the solver should perform in 'upgrade' mode or not. More...
 
bool upgradeMode () const
 
void setUpdateMode (bool yesno_r)
 Setting whether the solver should perform in 'update' mode or not. More...
 
bool updateMode () const
 
void setSystemVerification (bool yesno_r)
 System verification mode also monitors and repairs dependencies of already installed packages. More...
 
void setDefaultSystemVerification ()
 
bool systemVerification () const
 
void setSolveSrcPackages (bool yesno_r)
 Set whether to solve source packages build dependencies per default. More...
 
void setDefaultSolveSrcPackages ()
 
bool solveSrcPackages () const
 
void setCleandepsOnRemove (bool yesno_r)
 Cleanup when deleting packages. More...
 
void setDefaultCleandepsOnRemove ()
 
bool cleandepsOnRemove () const
 
void addRequire (const Capability &capability)
 Adding additional requirement. More...
 
void addConflict (const Capability &capability)
 Adding additional conflict. More...
 
void removeRequire (const Capability &capability)
 Remove the additional requirement set by addRequire(Capability). More...
 
void removeConflict (const Capability &capability)
 Remove the additional conflict set by addConflict(Capability). More...
 
CapabilitySet getRequire () const
 Get all the additional requirements set by addRequire(Capability). More...
 
CapabilitySet getConflict () const
 Get all the additional conflicts set by addConflict(Capability). More...
 
bool createSolverTestcase (const std::string &dumpPath="/var/log/YaST2/solverTestcase", bool runSolver=true)
 Generates a solver Testcase of the current state. More...
 
solver::detail::ItemCapKindList isInstalledBy (const PoolItem &item)
 Gives information about WHO has pused an installation of an given item. More...
 
solver::detail::ItemCapKindList installs (const PoolItem &item)
 Gives information about WHICH additional items will be installed due the installation of an item. More...
 
solver::detail::ItemCapKindList satifiedByInstalled (const PoolItem &item)
 Gives information about WHICH installed items are requested by the installation of an item. More...
 
solver::detail::ItemCapKindList installedSatisfied (const PoolItem &item)
 Gives information about WHICH items require an already installed item. More...
 
Solver flags (non DUP modes)

Default for all flags is false unless overwritten by zypp.conf.

void setAllowDowngrade (bool yesno_r)
 Whether to allow to downgrade installed solvable. More...
 
void setDefaultAllowDowngrade ()
 
bool allowDowngrade () const
 
void setAllowNameChange (bool yesno_r)
 Whether to allow to change name of installed solvable. More...
 
void setDefaultAllowNameChange ()
 
bool allowNameChange () const
 
void setAllowArchChange (bool yesno_r)
 Whether to allow to change architecture of installed solvables. More...
 
void setDefaultAllowArchChange ()
 
bool allowArchChange () const
 
void setAllowVendorChange (bool yesno_r)
 Whether to allow to change vendor of installed solvables. More...
 
void setDefaultAllowVendorChange ()
 
bool allowVendorChange () const
 
Solver flags for DUP mode.

DUP mode default settings differ from 'ordinary' ones.

Default for all DUP flags is true unless overwritten by zypp.conf.

void dupSetAllowDowngrade (bool yesno_r)
 dup mode: allow to downgrade installed solvable More...
 
void dupSetDefaultAllowDowngrade ()
 
bool dupAllowDowngrade () const
 
void dupSetAllowNameChange (bool yesno_r)
 dup mode: allow to change name of installed solvable More...
 
void dupSetDefaultAllowNameChange ()
 
bool dupAllowNameChange () const
 
void dupSetAllowArchChange (bool yesno_r)
 dup mode: allow to change architecture of installed solvables More...
 
void dupSetDefaultAllowArchChange ()
 
bool dupAllowArchChange () const
 
void dupSetAllowVendorChange (bool yesno_r)
 dup mode: allow to change vendor of installed solvables More...
 
void dupSetDefaultAllowVendorChange ()
 
bool dupAllowVendorChange () const
 
Upgrade to content of a specific repository.
Note
This is an ordinary solver request. You should simply resolvePool to execute, and not doUpgrade.
void addUpgradeRepo (Repository repo_r)
 Adding request to perform a dist upgrade restricted to this repository. More...
 
bool upgradingRepos () const
 Whether there is at least one UpgradeRepo request pending. More...
 
bool upgradingRepo (Repository repo_r) const
 Whether there is an UpgradeRepo request pending for this repo. More...
 
void removeUpgradeRepo (Repository repo_r)
 Remove an upgrade request for this repo. More...
 
void removeUpgradeRepos ()
 Remove all upgrade repo requests. More...
 
- Public Member Functions inherited from zypp::base::ReferenceCounted
 ReferenceCounted ()
 Default ctor. More...
 
 ReferenceCounted (const ReferenceCounted &rhs)
 Copy ctor. More...
 
virtual ~ReferenceCounted ()
 Dtor. More...
 
ReferenceCountedoperator= (const ReferenceCounted &)
 Assignment. More...
 
unsigned refCount () const
 Return reference counter value. More...
 
void ref () const
 Add a reference. More...
 
void unref () const
 Release a reference. More...
 

Private Attributes

zypp::RW_pointer< solver::detail::ResolverInternal_pimpl
 

Friends

std::ostream & operator<< (std::ostream &str, const Resolver &obj)
 

Related Functions

(Note that these are not member functions.)

std::ostream & operator<< (std::ostream &str, const Resolver &obj)
 

Additional Inherited Members

- Static Public Member Functions inherited from zypp::base::ReferenceCounted
static void add_ref (const ReferenceCounted *ptr_r)
 Called by zypp::intrusive_ptr to add a reference. More...
 
static void release (const ReferenceCounted *ptr_r)
 Called by zypp::intrusive_ptr to add a reference. More...
 
- Protected Member Functions inherited from zypp::base::ReferenceCounted
virtual std::ostream & dumpOn (std::ostream &str) const
 Overload to realize std::ostream & operator<<. More...
 
virtual void ref_to (unsigned) const
 Trigger derived classes after refCount was increased. More...
 
virtual void unref_to (unsigned) const
 Trigger derived classes after refCount was decreased. More...
 

Detailed Description

Dependency resolver interface.

To resolve dependencies after making changes to the ResPool (using addRequire(), addConflict(), applySolutions(), or by making the changes directly on the PoolItem status objects, call the resolvePool() method.

Definition at line 54 of file Resolver.h.

Constructor & Destructor Documentation

◆ Resolver()

zypp::solver::detail::Resolver::Resolver ( const ResPool pool)

Ctor.

Definition at line 39 of file Resolver.cc.

◆ ~Resolver()

zypp::solver::detail::Resolver::~Resolver ( )
virtual

Dtor.

Definition at line 48 of file Resolver.cc.

Member Function Documentation

◆ verifySystem()

bool zypp::solver::detail::Resolver::verifySystem ( )

Resolve package dependencies:

Enter systemVerification mode to monitor and repair dependencies of already installed packages, and solve immediately.

Call setSystemVerification to turn of this mode.

Definition at line 56 of file Resolver.cc.

◆ resolvePool()

bool zypp::solver::detail::Resolver::resolvePool ( )

Resolve package dependencies:

Try to execute all pending transactions (there may be more than one!). The solver collects all transactions (install/delete resolvables) from the pool, generates task, solving it and writes the results back to pool

Returns "true" on success (i.e., if there were no problems that need user interaction) and "false" if there were problems. In the latter case, use problems() and later applySolutions() below.

Definition at line 59 of file Resolver.cc.

◆ resolveQueue()

bool zypp::solver::detail::Resolver::resolveQueue ( solver::detail::SolverQueueItemList queue)

Resolve package dependencies:

The solver works off the given queue and writes back the solution to pool.

Returns "true" on success (i.e., if there were no problems that need user interaction) and "false" if there were problems. In the latter case, use problems() and later applySolutions() below. The solution could be that the solver remove/add some entries in the task queue. So make a new call of resolveQueue after you have applied any solution AND check the parameter "queue" if there has been any changes by the solver and adapt these changes to e.g. the selectables.

Definition at line 62 of file Resolver.cc.

◆ undo()

void zypp::solver::detail::Resolver::undo ( )

Definition at line 65 of file Resolver.cc.

◆ reset()

void zypp::solver::detail::Resolver::reset ( )

Definition at line 171 of file Resolver.cc.

◆ doUpgrade()

bool zypp::solver::detail::Resolver::doUpgrade ( )

Do an distribution upgrade (DUP)

Perform a distribution upgrade. This performs an update of all packages with a special resolver algorithm which takes care of package splits, pattern and product updates, etc. This call also turns the solver into upgradeMode, so consecutive calls to resolvePool performed in this mode too. Call setUpgradeMode to turn this mode off.

See also
addUpgradeRepo

Definition at line 77 of file Resolver.cc.

◆ doUpdate()

void zypp::solver::detail::Resolver::doUpdate ( )

Update to newest package.

Install the newest version of your installed packages as far as possible. This means a newer package will NOT be installed if it generates dependency problems. So the user will not get an error message.

Definition at line 80 of file Resolver.cc.

◆ problematicUpdateItems()

PoolItemList zypp::solver::detail::Resolver::problematicUpdateItems ( ) const

Unmaintained packages which does not fit to the updated system (broken dependencies) will be deleted.

Return the list of deleted items. Note : This list is valid after the call doUpgrade() only.

Definition at line 150 of file Resolver.cc.

◆ problems()

ResolverProblemList zypp::solver::detail::Resolver::problems ( )

Return the dependency problems found by the last call to resolveDependencies().

If there were no problems, the returned list will be empty.

Definition at line 68 of file Resolver.cc.

◆ applySolutions()

void zypp::solver::detail::Resolver::applySolutions ( const ProblemSolutionList solutions)

Apply problem solutions.

No more than one solution per problem can be applied.

Definition at line 71 of file Resolver.cc.

◆ getTransaction()

sat::Transaction zypp::solver::detail::Resolver::getTransaction ( )

Return the Transaction computed by the last solver run.

Definition at line 74 of file Resolver.cc.

◆ setForceResolve()

void zypp::Resolver::setForceResolve ( bool  force)

Remove resolvables which are conflicts with others or have unfulfilled requirements.

This behaviour is favourited by ZMD.

Definition at line 83 of file Resolver.cc.

◆ forceResolve()

bool zypp::Resolver::forceResolve ( ) const

Definition at line 84 of file Resolver.cc.

◆ setIgnoreAlreadyRecommended()

void zypp::Resolver::setIgnoreAlreadyRecommended ( bool  yesno_r)

Ignore recommended packages that were already recommended by the installed packages.

Definition at line 86 of file Resolver.cc.

◆ ignoreAlreadyRecommended()

bool zypp::Resolver::ignoreAlreadyRecommended ( ) const

Definition at line 87 of file Resolver.cc.

◆ setInr()

void zypp::Resolver::setInr ( ResolverNamespaces  namespaces_r)

Weak form of ignoreAlreadyRecommended =false.

Try to re-evaluate recommendations for specific namespaces only.

Note
May not support all namespaces.

Definition at line 89 of file Resolver.cc.

◆ resetInr()

void zypp::Resolver::resetInr ( )

Definition at line 90 of file Resolver.cc.

◆ inr()

ResolverNamespaces zypp::Resolver::inr ( ) const

Definition at line 91 of file Resolver.cc.

◆ setOnlyRequires()

void zypp::Resolver::setOnlyRequires ( bool  yesno_r)

Setting whether required packages are installed ONLY So recommended packages, language packages and packages which depend on hardware (modalias) will not be regarded.

Definition at line 93 of file Resolver.cc.

◆ resetOnlyRequires()

void zypp::Resolver::resetOnlyRequires ( )

Definition at line 94 of file Resolver.cc.

◆ onlyRequires()

bool zypp::Resolver::onlyRequires ( ) const

Definition at line 95 of file Resolver.cc.

◆ setUpgradeMode()

void zypp::Resolver::setUpgradeMode ( bool  yesno_r)

Setting whether the solver should perform in 'upgrade' mode or not.

See also
doUpgrade.

Definition at line 97 of file Resolver.cc.

◆ upgradeMode()

bool zypp::Resolver::upgradeMode ( ) const

Definition at line 98 of file Resolver.cc.

◆ setUpdateMode()

void zypp::Resolver::setUpdateMode ( bool  yesno_r)

Setting whether the solver should perform in 'update' mode or not.

If on, it will add a resolver job to update all packages.

See also
doUpdate.

Definition at line 100 of file Resolver.cc.

◆ updateMode()

bool zypp::Resolver::updateMode ( ) const

Definition at line 101 of file Resolver.cc.

◆ setAllowDowngrade()

void zypp::Resolver::setAllowDowngrade ( bool  yesno_r)

Whether to allow to downgrade installed solvable.

◆ setDefaultAllowDowngrade()

void zypp::Resolver::setDefaultAllowDowngrade ( )

◆ allowDowngrade()

bool zypp::Resolver::allowDowngrade ( ) const

◆ setAllowNameChange()

void zypp::Resolver::setAllowNameChange ( bool  yesno_r)

Whether to allow to change name of installed solvable.

◆ setDefaultAllowNameChange()

void zypp::Resolver::setDefaultAllowNameChange ( )

◆ allowNameChange()

bool zypp::Resolver::allowNameChange ( ) const

◆ setAllowArchChange()

void zypp::Resolver::setAllowArchChange ( bool  yesno_r)

Whether to allow to change architecture of installed solvables.

◆ setDefaultAllowArchChange()

void zypp::Resolver::setDefaultAllowArchChange ( )

◆ allowArchChange()

bool zypp::Resolver::allowArchChange ( ) const

◆ setAllowVendorChange()

void zypp::Resolver::setAllowVendorChange ( bool  yesno_r)

Whether to allow to change vendor of installed solvables.

See also
VendorAttr for definition of vendor equivalence.

◆ setDefaultAllowVendorChange()

void zypp::Resolver::setDefaultAllowVendorChange ( )

◆ allowVendorChange()

bool zypp::Resolver::allowVendorChange ( ) const

◆ setSystemVerification()

void zypp::Resolver::setSystemVerification ( bool  yesno_r)

System verification mode also monitors and repairs dependencies of already installed packages.

See also
verifySystem

Definition at line 103 of file Resolver.cc.

◆ setDefaultSystemVerification()

void zypp::Resolver::setDefaultSystemVerification ( )

Definition at line 104 of file Resolver.cc.

◆ systemVerification()

bool zypp::Resolver::systemVerification ( ) const

Definition at line 105 of file Resolver.cc.

◆ setSolveSrcPackages()

void zypp::Resolver::setSolveSrcPackages ( bool  yesno_r)

Set whether to solve source packages build dependencies per default.

Usually turned off and if, enabled per source package. This affects only source packges selected in the ResPool. No solver rule will be generated for them. Source packages requested via e.g. addRequire will always be solved. Be carefull. The older the source package is, the stranger may be the result of solving it's build dependencies.

Definition at line 107 of file Resolver.cc.

◆ setDefaultSolveSrcPackages()

void zypp::Resolver::setDefaultSolveSrcPackages ( )

Definition at line 108 of file Resolver.cc.

◆ solveSrcPackages()

bool zypp::Resolver::solveSrcPackages ( ) const

Definition at line 109 of file Resolver.cc.

◆ setCleandepsOnRemove()

void zypp::solver::detail::Resolver::setCleandepsOnRemove ( bool  yesno_r)

Cleanup when deleting packages.

Whether the solver should per default try to remove packages exclusively required by the ones he's asked to delete.

Definition at line 111 of file Resolver.cc.

◆ setDefaultCleandepsOnRemove()

void zypp::Resolver::setDefaultCleandepsOnRemove ( )

Definition at line 112 of file Resolver.cc.

◆ cleandepsOnRemove()

bool zypp::Resolver::cleandepsOnRemove ( ) const

Definition at line 113 of file Resolver.cc.

◆ dupSetAllowDowngrade()

void zypp::Resolver::dupSetAllowDowngrade ( bool  yesno_r)

dup mode: allow to downgrade installed solvable

◆ dupSetDefaultAllowDowngrade()

void zypp::Resolver::dupSetDefaultAllowDowngrade ( )

◆ dupAllowDowngrade()

bool zypp::Resolver::dupAllowDowngrade ( ) const

◆ dupSetAllowNameChange()

void zypp::Resolver::dupSetAllowNameChange ( bool  yesno_r)

dup mode: allow to change name of installed solvable

◆ dupSetDefaultAllowNameChange()

void zypp::Resolver::dupSetDefaultAllowNameChange ( )

◆ dupAllowNameChange()

bool zypp::Resolver::dupAllowNameChange ( ) const

◆ dupSetAllowArchChange()

void zypp::Resolver::dupSetAllowArchChange ( bool  yesno_r)

dup mode: allow to change architecture of installed solvables

◆ dupSetDefaultAllowArchChange()

void zypp::Resolver::dupSetDefaultAllowArchChange ( )

◆ dupAllowArchChange()

bool zypp::Resolver::dupAllowArchChange ( ) const

◆ dupSetAllowVendorChange()

void zypp::Resolver::dupSetAllowVendorChange ( bool  yesno_r)

dup mode: allow to change vendor of installed solvables

◆ dupSetDefaultAllowVendorChange()

void zypp::Resolver::dupSetDefaultAllowVendorChange ( )

◆ dupAllowVendorChange()

bool zypp::Resolver::dupAllowVendorChange ( ) const

◆ addUpgradeRepo()

void zypp::Resolver::addUpgradeRepo ( Repository  repo_r)

Adding request to perform a dist upgrade restricted to this repository.

This is what e.g. zypper dup –repo myrepo should perform.

See also
doUpgrade

Definition at line 136 of file Resolver.cc.

◆ upgradingRepos()

bool zypp::Resolver::upgradingRepos ( ) const

Whether there is at least one UpgradeRepo request pending.

Definition at line 137 of file Resolver.cc.

◆ upgradingRepo()

bool zypp::Resolver::upgradingRepo ( Repository  repo_r) const

Whether there is an UpgradeRepo request pending for this repo.

Definition at line 138 of file Resolver.cc.

◆ removeUpgradeRepo()

void zypp::Resolver::removeUpgradeRepo ( Repository  repo_r)

Remove an upgrade request for this repo.

Definition at line 139 of file Resolver.cc.

◆ removeUpgradeRepos()

void zypp::Resolver::removeUpgradeRepos ( )

Remove all upgrade repo requests.

Definition at line 140 of file Resolver.cc.

◆ addRequire()

void zypp::Resolver::addRequire ( const Capability capability)

Adding additional requirement.

Definition at line 142 of file Resolver.cc.

◆ addConflict()

void zypp::Resolver::addConflict ( const Capability capability)

Adding additional conflict.

Definition at line 143 of file Resolver.cc.

◆ removeRequire()

void zypp::Resolver::removeRequire ( const Capability capability)

Remove the additional requirement set by addRequire(Capability).

Definition at line 144 of file Resolver.cc.

◆ removeConflict()

void zypp::Resolver::removeConflict ( const Capability capability)

Remove the additional conflict set by addConflict(Capability).

Definition at line 145 of file Resolver.cc.

◆ getRequire()

CapabilitySet zypp::Resolver::getRequire ( ) const

Get all the additional requirements set by addRequire(Capability).

Definition at line 147 of file Resolver.cc.

◆ getConflict()

CapabilitySet zypp::Resolver::getConflict ( ) const

Get all the additional conflicts set by addConflict(Capability).

Definition at line 148 of file Resolver.cc.

◆ createSolverTestcase()

bool zypp::Resolver::createSolverTestcase ( const std::string &  dumpPath = "/var/log/YaST2/solverTestcase",
bool  runSolver = true 
)

Generates a solver Testcase of the current state.

dumpPath destination directory of the created directory

Returns
true if it was successful

Definition at line 153 of file Resolver.cc.

◆ isInstalledBy()

ItemCapKindList zypp::solver::detail::Resolver::isInstalledBy ( const PoolItem item)

Gives information about WHO has pused an installation of an given item.

Parameters
itemEvaluate additional information for this resolvable.
Returns
A list of structures which contains: item Item which has triggered the installation of the given param item. initialInstallation This item has triggered the installation Not already fullfilled requierement only. cap Capability which has triggerd this installation capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... )

Note: In order to have a result start a solver run before. Not matter if it is valid or invalid.

Definition at line 159 of file Resolver.cc.

◆ installs()

ItemCapKindList zypp::solver::detail::Resolver::installs ( const PoolItem item)

Gives information about WHICH additional items will be installed due the installation of an item.

Parameters
itemEvaluate additional information for this resolvable.
Returns
A list of structures which contains: item Item which has triggered the installation of the given param item. initialInstallation This item has triggered the installation Not already fullfilled requierement only. cap Capability which has triggerd this installation capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... )

Note: In order to have a result start a solver run before. Not matter if it is valid or invalid.

Definition at line 162 of file Resolver.cc.

◆ satifiedByInstalled()

ItemCapKindList zypp::solver::detail::Resolver::satifiedByInstalled ( const PoolItem item)

Gives information about WHICH installed items are requested by the installation of an item.

Parameters
itemEvaluate additional information for this resolvable.
Returns
A list of structures which contains: item Item which has triggered the installation of the given param item. initialInstallation This item has triggered the installation Not already fullfilled requierement only. cap Capability which has triggerd this installation capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... )

Note: In order to have a result start a solver run before. Not matter if it is valid or invalid.

Definition at line 165 of file Resolver.cc.

◆ installedSatisfied()

ItemCapKindList zypp::solver::detail::Resolver::installedSatisfied ( const PoolItem item)

Gives information about WHICH items require an already installed item.

Parameters
itemEvaluate additional information for this resolvable.
Returns
A list of structures which contains: item Item which has triggered the installation of the given param item. initialInstallation This item has triggered the installation Not already fullfilled requierement only. cap Capability which has triggerd this installation capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... )

Note: In order to have a result start a solver run before. Not matter if it is valid or invalid.

Definition at line 168 of file Resolver.cc.

Friends And Related Function Documentation

◆ operator<< [1/2]

std::ostream& operator<< ( std::ostream &  str,
const Resolver obj 
)
friend

Definition at line 174 of file Resolver.cc.

◆ operator<<() [2/2]

std::ostream & operator<< ( std::ostream &  str,
const Resolver obj 
)
related

Stream output

Definition at line 174 of file Resolver.cc.

Member Data Documentation

◆ _pimpl

zypp::RW_pointer<solver::detail::ResolverInternal> zypp::Resolver::_pimpl
private

Definition at line 455 of file Resolver.h.


The documentation for this class was generated from the following files: