15#include <zypp-core/APIConfig.h>
18#include <zypp-core/base/InputStream>
25#include <zypp-core/parser/EconfDict>
30#include <zypp-media/MediaConfig>
36#undef ZYPP_BASE_LOGGER_LOGGROUP
37#define ZYPP_BASE_LOGGER_LOGGROUP "zconfig"
46 const char *env_confpath = getenv(
"ZYPP_CONF" );
85 Locale _autodetectTextLocale()
88 const char * envlist[] = {
"LC_ALL",
"LC_MESSAGES",
"LANG", NULL };
89 for (
const char ** envvar = envlist; *envvar; ++envvar )
91 const char * envlang = getenv( *envvar );
94 std::string envstr( envlang );
95 if ( envstr !=
"POSIX" && envstr !=
"C" )
100 MIL <<
"Found " << *envvar <<
"=" << envstr << endl;
107 MIL <<
"Default text locale is '" << ret <<
"'" << endl;
108#warning HACK AROUND BOOST_TEST_CATCH_SYSTEM_ERRORS
109 setenv(
"BOOST_TEST_CATCH_SYSTEM_ERRORS",
"no", 1 );
123 struct ZyppConfIniMap :
public IniDict {
124 ZyppConfIniMap( Pathname root_r =
"/" )
125 : IniDict { iniMapReadFrom(root_r) }
133 IniDict iniMapReadFrom(
const Pathname & root_r )
135 pMIL(
"Reading zypp.conf for root", root_r );
142 pMIL(
"$ZYPP_CONF requests reading file", conf );
143 return parser::IniDict( conf.
path() );
145 pMIL(
"$ZYPP_CONF denotes no file below root. Using builtin defaults." );
146 return parser::IniDict();
150 return parser::EconfDict(
"/zypp/zypp.conf", root_r );
171 {
set( std::move(newval_r) );
return *
this; }
183 {
_val = std::move(newval_r); }
202 { this->
set( std::move(newval_r) );
return *
this; }
218 {
_default.set( std::move(newval_r) ); }
253 bool consume(
const std::string & section,
const std::string & entry,
const std::string & value )
255 if ( section !=
"main" )
258 if ( entry ==
"solver.focus" )
262 else if ( entry ==
"solver.onlyRequires" )
266 else if ( entry ==
"solver.allowVendorChange" )
270 else if ( entry ==
"solver.dupAllowDowngrade" )
274 else if ( entry ==
"solver.dupAllowNameChange" )
278 else if ( entry ==
"solver.dupAllowArchChange" )
282 else if ( entry ==
"solver.dupAllowVendorChange" )
286 else if ( entry ==
"solver.cleandepsOnRemove" )
290 else if ( entry ==
"solver.upgradeTestcasesToKeep" )
294 else if ( entry ==
"solver.upgradeRemoveDroppedPackages" )
341 MIL <<
"libzypp: " LIBZYPP_VERSION_STRING <<
" (" << LIBZYPP_CODESTREAM <<
")" << endl;
343 ZyppConfIniMap iniMap;
344 for (
const auto & section : iniMap.sections() ) {
345 for ( const auto & [entry,value] : iniMap.entries( section ) ) {
347 if ( _initialTargetDefaults.consume( section, entry, value ) )
350 if ( _mediaConf.setConfigValue( section, entry, value ) )
353 if ( section ==
"main" )
355 if ( entry ==
"lock_timeout" )
357 str::strtonum( value, cfg_lockTimeout );
359 else if ( entry ==
"arch" )
362 if ( carch != cfg_arch ) {
363 WAR <<
"Overriding system architecture (" << cfg_arch <<
"): " << carch << endl;
367 else if ( entry ==
"cachedir" )
369 cfg_cache_path.restoreToDefault( value );
371 else if ( entry ==
"metadatadir" )
373 cfg_metadata_path.restoreToDefault( value );
375 else if ( entry ==
"solvfilesdir" )
377 cfg_solvfiles_path.restoreToDefault( value );
379 else if ( entry ==
"packagesdir" )
381 cfg_packages_path.restoreToDefault( value );
383 else if ( entry ==
"configdir" )
385 cfg_config_path = Pathname(value);
387 else if ( entry ==
"reposdir" )
389 cfg_known_repos_path = Pathname(value);
391 else if ( entry ==
"servicesdir" )
393 cfg_known_services_path = Pathname(value);
395 else if ( entry ==
"varsdir" )
397 cfg_vars_path = Pathname(value);
399 else if ( entry ==
"repo.add.probe" )
401 repo_add_probe = str::strToBool( value, repo_add_probe );
403 else if ( entry ==
"repo.refresh.delay" )
405 str::strtonum(value, repo_refresh_delay);
407 else if ( entry ==
"repo.refresh.locales" )
409 std::vector<std::string> tmp;
410 str::split( value, back_inserter( tmp ),
", \t" );
412 boost::function<Locale(const std::string &)> transform(
413 [](const std::string & str_r)->Locale{ return Locale(str_r); }
415 repoRefreshLocales.insert( make_transform_iterator( tmp.begin(), transform ),
416 make_transform_iterator( tmp.end(), transform ) );
418 else if ( entry ==
"download.use_deltarpm" )
420 download_use_deltarpm = str::strToBool( value, download_use_deltarpm );
422 else if ( entry ==
"download.use_deltarpm.always" )
424 download_use_deltarpm_always = str::strToBool( value, download_use_deltarpm_always );
426 else if ( entry ==
"download.media_preference" )
428 download_media_prefer_download.restoreToDefault( str::compareCI( value,
"volatile" ) != 0 );
430 else if ( entry ==
"download.media_mountdir" )
432 download_mediaMountdir.restoreToDefault( Pathname(value) );
434 else if ( entry ==
"download.use_geoip_mirror") {
435 geoipEnabled = str::strToBool( value, geoipEnabled );
437 else if ( entry ==
"commit.downloadMode" )
439 commit_downloadMode.set( deserializeDownloadMode( value ) );
441 else if ( entry ==
"gpgcheck" )
443 gpgCheck.restoreToDefault( str::strToBool( value, gpgCheck ) );
445 else if ( entry ==
"repo_gpgcheck" )
447 repoGpgCheck.restoreToDefault( str::strToTriBool( value ) );
449 else if ( entry ==
"pkg_gpgcheck" )
451 pkgGpgCheck.restoreToDefault( str::strToTriBool( value ) );
453 else if ( entry ==
"vendordir" )
455 cfg_vendor_path = Pathname(value);
457 else if ( entry ==
"multiversiondir" )
459 cfg_multiversion_path = Pathname(value);
461 else if ( entry ==
"multiversion.kernels" )
463 cfg_kernel_keep_spec = value;
465 else if ( entry ==
"solver.checkSystemFile" )
467 solver_checkSystemFile = Pathname(value);
469 else if ( entry ==
"solver.checkSystemFileDir" )
471 solver_checkSystemFileDir = Pathname(value);
473 else if ( entry ==
"multiversion" )
475 MultiversionSpec & defSpec( _multiversionMap.getDefaultSpec() );
476 str::splitEscaped( value, std::inserter( defSpec, defSpec.end() ),
", \t" );
478 else if ( entry ==
"locksfile.path" )
480 locks_file = Pathname(value);
482 else if ( entry ==
"locksfile.apply" )
484 apply_locks_file = str::strToBool( value, apply_locks_file );
486 else if ( entry ==
"update.datadir" )
491 else if ( entry ==
"update.scriptsdir" )
496 else if ( entry ==
"update.messagessdir" )
501 else if ( entry ==
"update.messages.notify" )
503 updateMessagesNotify.set( value );
505 else if ( entry ==
"rpm.install.excludedocs" )
507 rpmInstallFlags.setFlag( target::rpm::RPMINST_EXCLUDEDOCS,
508 str::strToBool( value, false ) );
510 else if ( entry ==
"history.logfile" )
512 history_log_path = Pathname(value);
514 else if ( entry ==
"ZYPP_SINGLE_RPMTRANS" || entry ==
"techpreview.ZYPP_SINGLE_RPMTRANS" )
516 DBG <<
"ZYPP_SINGLE_RPMTRANS=" << value << endl;
517 ::setenv(
"ZYPP_SINGLE_RPMTRANS", value.c_str(), 0 );
519 else if ( entry ==
"techpreview.ZYPP_MEDIANETWORK" )
521 DBG <<
"techpreview.ZYPP_MEDIANETWORK=" << value << endl;
522 ::setenv(
"ZYPP_MEDIANETWORK", value.c_str(), 1 );
525 pWAR(
"zypp.conf: Unknown entry in [main]:", entry,
"=", value );
529 pWAR(
"zypp.conf: Unknown section:", str::sconcat(
"[",section,
"]"), entry,
"=", value );
535 if ( getenv(
"ZYPP_TESTSUITE_FAKE_ARCH" ) )
537 Arch carch( getenv(
"ZYPP_TESTSUITE_FAKE_ARCH" ) );
540 WAR <<
"ZYPP_TESTSUITE_FAKE_ARCH: Overriding system architecture (" <<
cfg_arch <<
"): " << carch << endl;
544 MIL <<
"ZConfig singleton created." << endl;
571 MIL <<
"notifyTargetChanged (" << newRoot <<
")" << endl;
578 ZyppConfIniMap iniMap { newRoot };
579 for (
const auto & section : iniMap.sections() ) {
580 for (
const auto & [entry,value] : iniMap.entries( section ) ) {
581 (*_currentTargetDefaults).consume( section, entry, value );
668 using SpecMap = std::map<Pathname, MultiversionSpec>;
676 if ( root_r.
empty() )
678 bool cacheHit =
_specMap.count( root_r );
688 if ( root_r ==
"/" || not
scanConfAt( root_r, ret, zConfImpl_r ) )
691 using zypp::operator<<;
692 MIL <<
"MultiversionSpec '" << root_r <<
"' = " << ret << endl;
703 ZyppConfIniMap iniMap { root_r };
705 for (
const auto & section : iniMap.sections() ) {
706 for (
const auto & [entry,value] : iniMap.entries( section ) ) {
707 if ( entry ==
"multiversion" ) {
720 if ( multiversionDir.
empty() )
726 [&spec_r](
const Pathname & dir_r,
const char *
const & name_r )->
bool
728 MIL <<
"Parsing " << dir_r/name_r << endl;
730 [&spec_r](
int num_r, std::string line_r )->
bool
732 DBG <<
" found " << line_r << endl;
733 spec_r.insert( std::move(line_r) );
783 const char *
env = getenv(
"ZYPP_LOCK_TIMEOUT");
787 return _pimpl->cfg_lockTimeout;
791 {
return _pimpl->notifyTargetChanged(); }
794 {
return _pimpl->_autodetectSystemRoot(); }
798 return (
_pimpl->cfg_repo_mgr_root_path.empty()
803 {
_pimpl->cfg_repo_mgr_root_path = root; }
806 {
_pimpl->_announced_root_path = root_r; }
820 {
return _pimpl->cfg_arch; }
824 if ( arch_r !=
_pimpl->cfg_arch )
826 WAR <<
"Overriding system architecture (" <<
_pimpl->cfg_arch <<
"): " << arch_r << endl;
827 _pimpl->cfg_arch = arch_r;
839 static Locale _val( _autodetectTextLocale() );
844 {
return _pimpl->cfg_textLocale; }
848 if ( locale_r !=
_pimpl->cfg_textLocale )
850 WAR <<
"Overriding text locale (" <<
_pimpl->cfg_textLocale <<
"): " << locale_r << endl;
851 _pimpl->cfg_textLocale = locale_r;
862 {
return !
_pimpl->userData.empty(); }
865 {
return _pimpl->userData; }
869 for_( ch, str_r.begin(), str_r.end() )
871 if ( *ch <
' ' && *ch !=
'\t' )
873 ERR <<
"New user data string rejectded: char " << (int)*ch <<
" at position " << (ch - str_r.begin()) << endl;
877 MIL <<
"Set user data string to '" << str_r <<
"'" << endl;
886 return (
_pimpl->cfg_cache_path.get().empty()
897 _pimpl->cfg_cache_path = path_r;
902 return (
_pimpl->cfg_metadata_path.get().empty()
908 _pimpl->cfg_metadata_path = path_r;
913 return (
_pimpl->cfg_solvfiles_path.get().empty()
919 _pimpl->cfg_solvfiles_path = path_r;
924 return (
_pimpl->cfg_packages_path.get().empty()
930 _pimpl->cfg_packages_path = path_r;
934 {
return _pimpl->cfg_cache_path.getDefault().empty() ?
Pathname(
"/var/cache/zypp") :
_pimpl->cfg_cache_path.getDefault(); }
949 return (
_pimpl->cfg_config_path.empty()
955 return (
_pimpl->cfg_known_repos_path.empty()
961 return (
_pimpl->cfg_known_services_path.empty()
972 {
_pimpl->geoipEnabled = enable; }
975 {
return _pimpl->geoipEnabled; }
981 {
return _pimpl->geoipHosts; }
985 return (
_pimpl->cfg_vars_path.empty()
991 return (
_pimpl->cfg_vendor_path.empty()
997 return (
_pimpl->locks_file.empty()
1004 {
return _pimpl->repo_add_probe; }
1007 {
return _pimpl->repo_refresh_delay; }
1013 {
return _pimpl->repoLabelIsAlias; }
1016 {
_pimpl->repoLabelIsAlias = yesno_r; }
1019 {
return _pimpl->download_use_deltarpm; }
1025 {
return _pimpl->download_media_prefer_download; }
1028 {
_pimpl->download_media_prefer_download.set( yesno_r ); }
1031 {
_pimpl->download_media_prefer_download.restoreToDefault(); }
1034 {
return _pimpl->_mediaConf.download_max_concurrent_connections(); }
1037 {
return _pimpl->_mediaConf.download_min_download_speed(); }
1040 {
return _pimpl->_mediaConf.download_max_download_speed(); }
1043 {
return _pimpl->_mediaConf.download_max_silent_tries(); }
1046 {
return _pimpl->_mediaConf.download_transfer_timeout(); }
1053 {
return _pimpl->commit_downloadMode; }
1085 {
return (
_pimpl->solver_checkSystemFile.empty()
1089 {
return (
_pimpl->solver_checkSystemFileDir.empty()
1095 inline void sigMultiversionSpecChanged()
1109 {
return _pimpl->apply_locks_file; }
1136 {
return _pimpl->updateMessagesNotify; }
1139 {
_pimpl->updateMessagesNotify.set( val_r ); }
1142 {
_pimpl->updateMessagesNotify.restoreToDefault(); }
1147 {
return _pimpl->rpmInstallFlags; }
1152 return (
_pimpl->history_log_path.empty() ?
1158 return _pimpl->_mediaConf.credentialsGlobalDir();
1163 return _pimpl->_mediaConf.credentialsGlobalFile();
1169 {
return "system-release"; }
1174 {
return _pimpl->pluginsPath.get(); }
1178 return _pimpl->cfg_kernel_keep_spec;
1185 str <<
"libzypp: " LIBZYPP_VERSION_STRING <<
" (" << LIBZYPP_CODESTREAM <<
")" << endl;
1187 str <<
"libsolv: " << solv_version;
1188 if ( ::strcmp( solv_version, LIBSOLV_VERSION_STRING ) )
1189 str <<
" (built against " << LIBSOLV_VERSION_STRING <<
")";
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
static Arch detectSystemArchitecture()
Determine system architecture evaluating uname and /proc/cpuinfo.
'Language[_Country]' codes.
static const Locale enCode
Last resort "en".
static Pathname assertprefix(const Pathname &root_r, const Pathname &path_r)
Return path_r prefixed with root_r, unless it is already prefixed.
LocaleSet requestedLocales() const
Languages to be supported by the system.
Pathname cfg_multiversion_path
DefaultOption< Pathname > download_mediaMountdir
DefaultOption< Pathname > cfg_metadata_path
Pathname cfg_known_repos_path
Pathname cfg_known_services_path
Pathname _autodetectSystemRoot() const
bsc#1237044: Provide announceSystemRoot to allow commands using –root without launching a Target.
Impl & operator=(const Impl &)=delete
Impl & operator=(Impl &&)=delete
DefaultOption< Pathname > cfg_packages_path
bool download_use_deltarpm_always
void notifyTargetChanged()
Pathname solver_checkSystemFile
Impl(const Impl &)=delete
MultiversionMap _multiversionMap
Pathname history_log_path
const TargetDefaults & targetDefaults() const
MultiversionSpec & getMultiversion() const
LocaleSet repoRefreshLocales
DefaultOption< Pathname > cfg_cache_path
std::vector< std::string > geoipHosts
TargetDefaults & targetDefaults()
Pathname _announced_root_path
Option< Pathname > pluginsPath
std::string cfg_kernel_keep_spec
DefaultOption< TriBool > repoGpgCheck
unsigned repo_refresh_delay
Option< DownloadMode > commit_downloadMode
std::optional< TargetDefaults > _currentTargetDefaults
TargetDefaults while –root.
MultiversionSpec & multiversion()
DefaultOption< bool > download_media_prefer_download
bool download_use_deltarpm
std::set< std::string > MultiversionSpec
Pathname solver_checkSystemFileDir
TargetDefaults _initialTargetDefaults
Initial TargetDefaults from /.
target::rpm::RpmInstFlags rpmInstallFlags
const MultiversionSpec & multiversion() const
Pathname cfg_repo_mgr_root_path
DefaultOption< TriBool > pkgGpgCheck
DefaultOption< std::string > updateMessagesNotify
DefaultOption< Pathname > cfg_solvfiles_path
DefaultOption< bool > gpgCheck
bool hasUserData() const
Whether a (non empty) user data sting is defined.
bool solver_cleandepsOnRemove() const
Whether removing a package should also remove no longer needed requirements.
std::string userData() const
User defined string value to be passed to log, history, plugins...
Pathname knownServicesPath() const
Path where the known services .service files are kept (configPath()/services.d).
void removeMultiversionSpec(const std::string &name_r)
Pathname repoPackagesPath() const
Path where the repo packages are downloaded and kept (repoCachePath()/packages).
unsigned repo_refresh_delay() const
Amount of time in minutes that must pass before another refresh.
Arch systemArchitecture() const
The system architecture zypp uses.
Locale textLocale() const
The locale for translated texts zypp uses.
const std::vector< std::string > geoipHostnames() const
All hostnames we want to rewrite using the geoip feature.
ZConfig(const ZConfig &)=delete
static Pathname update_dataPath()
Path where the update items are kept (/var/adm).
ResolverFocus solver_focus() const
The resolver's general attitude when resolving jobs.
Pathname builtinRepoSolvfilesPath() const
The builtin config file value.
Pathname pluginsPath() const
Defaults to /usr/lib/zypp/plugins.
Pathname repoManagerRoot() const
The RepoManager root directory.
void resetRepoGpgCheck()
Reset to the zconfig default.
bool gpgCheck() const
Turn signature checking on/off (on).
Pathname knownReposPath() const
Path where the known repositories .repo files are kept (configPath()/repos.d).
long download_transfer_timeout() const
Maximum time in seconds that you allow a transfer operation to take.
void setRepoManagerRoot(const Pathname &root)
Sets the RepoManager root directory.
bool solver_dupAllowArchChange() const
DUP tune: Whether to allow package arch changes upon DUP.
void setTextLocale(const Locale &locale_r)
Set the preferred locale for translated texts.
bool solverUpgradeRemoveDroppedPackages() const
Whether dist upgrade should remove a products dropped packages (true).
void notifyTargetChanged()
internal
static Locale defaultTextLocale()
The autodetected preferred locale for translated texts.
Pathname download_mediaMountdir() const
Path where media are preferably mounted or downloaded.
static Pathname update_scriptsPath()
Path where the update scripts are stored ( /var/adm/update-scripts ).
void resetSolverUpgradeRemoveDroppedPackages()
Reset solverUpgradeRemoveDroppedPackages to the zypp.conf default.
bool apply_locks_file() const
Whether locks file should be read and applied after start (true).
bool solver_allowVendorChange() const
Whether vendor check is by default enabled.
void set_default_download_mediaMountdir()
Reset to zypp.cong default.
Pathname repoCachePath() const
Path where the caches are kept (/var/cache/zypp).
void setPkgGpgCheck(TriBool val_r)
Change the value.
Pathname needrebootPath() const
Path where the custom needreboot config files are kept (configPath()/needreboot.d).
bool setUserData(const std::string &str_r)
Set a new userData string.
Pathname systemRoot() const
The target root directory.
long download_max_silent_tries() const
Maximum silent tries.
bool repo_add_probe() const
Whether repository urls should be probed.
target::rpm::RpmInstFlags rpmInstallFlags() const
The default target::rpm::RpmInstFlags for ZYppCommitPolicy.
void setUpdateMessagesNotify(const std::string &val_r)
Set a new command definition (see update.messages.notify in zypp.conf).
unsigned solver_upgradeTestcasesToKeep() const
When committing a dist upgrade (e.g.
Pathname repoMetadataPath() const
Path where the repo metadata is downloaded and kept (repoCachePath()/raw).
Pathname geoipCachePath() const
Path where the geoip caches are kept (/var/cache/zypp/geoip).
Pathname vendorPath() const
Directory for equivalent vendor definitions (configPath()/vendors.d).
long download_min_download_speed() const
Minimum download speed (bytes per second) until the connection is dropped.
DownloadMode commit_downloadMode() const
Commit download policy to use as default.
Pathname needrebootFile() const
Path of the default needreboot config file (configPath()/needreboot).
void setGpgCheck(bool val_r)
Change the value.
bool solver_dupAllowVendorChange() const
DUP tune: Whether to allow package vendor changes upon DUP.
void setGeoipEnabled(bool enable=true)
Enables or disables the use of the geoip feature of download.opensuse.org.
Pathname locksFile() const
Path where zypp can find or create lock file (configPath()/locks).
RW_pointer< Impl, rw_pointer::Scoped< Impl > > _pimpl
Pointer to implementation.
Pathname repoSolvfilesPath() const
Path where the repo solv files are created and kept (repoCachePath()/solv).
bool geoipEnabled() const
Returns true if zypp should use the geoip feature of download.opensuse.org.
static Pathname update_messagesPath()
Path where the update messages are stored ( /var/adm/update-messages ).
Pathname historyLogFile() const
Path where ZYpp install history is logged.
void setSystemArchitecture(const Arch &arch_r)
Override the zypp system architecture.
TriBool pkgGpgCheck() const
Check rpm package signatures (indeterminate - according to gpgcheck).
static ZConfig & instance()
Singleton ctor.
void setRepoPackagesPath(const Pathname &path_r)
Set a new path as the default repo cache path.
void setRepoSolvfilesPath(const Pathname &path_r)
Set a new path as the default repo cache path.
void resetUpdateMessagesNotify()
Reset to the zypp.conf default.
std::ostream & about(std::ostream &str) const
Print some detail about the current libzypp version.
const std::set< std::string > & multiversionSpec() const
void set_download_mediaMountdir(Pathname newval_r)
Set alternate value.
bool download_use_deltarpm() const
Whether to consider using a deltarpm when downloading a package.
TriBool repoGpgCheck() const
Check repo matadata signatures (indeterminate - according to gpgcheck).
void set_download_media_prefer_download(bool yesno_r)
Set download_media_prefer_download to a specific value.
std::string updateMessagesNotify() const
Command definition for sending update messages.
void addMultiversionSpec(const std::string &name_r)
Pathname builtinRepoCachePath() const
The builtin config file value.
Pathname builtinRepoPackagesPath() const
The builtin config file value.
Pathname solver_checkSystemFile() const
File in which dependencies described which has to be fulfilled for a running system.
Pathname builtinRepoMetadataPath() const
The builtin config file value.
void set_default_download_media_prefer_download()
Set download_media_prefer_download to the configfiles default.
long lockTimeout() const
The number of seconds to wait for the zypp lock to become available.
Pathname solver_checkSystemFileDir() const
Directory, which may or may not contain files in which dependencies described which has to be fulfill...
void resetGpgCheck()
Reset to the zconfig default.
void setSolverUpgradeRemoveDroppedPackages(bool val_r)
Set solverUpgradeRemoveDroppedPackages to val_r.
Pathname configPath() const
Path where the configfiles are kept (/etc/zypp).
static Arch defaultSystemArchitecture()
The autodetected system architecture.
Pathname pubkeyCachePath() const
Path where the pubkey caches.
long download_max_concurrent_connections() const
Maximum number of concurrent connections for a single transfer.
void resetPkgGpgCheck()
Reset to the zconfig default.
void announceSystemRoot(const Pathname &root_r)
Announce a target root directory without launching the Target.
bool solver_onlyRequires() const
Solver regards required packages,patterns,... only.
Pathname varsPath() const
Path containing custom repo variable definitions (configPath()/vars.d).
bool solver_dupAllowNameChange() const
DUP tune: Whether to follow package renames upon DUP.
bool repoLabelIsAlias() const
Whether to use repository alias or name in user messages (progress, exceptions, .....
void clearMultiversionSpec()
LocaleSet repoRefreshLocales() const
List of locales for which translated package descriptions should be downloaded.
long download_max_download_speed() const
Maximum download speed (bytes per second).
void setRepoMetadataPath(const Pathname &path_r)
Set a new path as the default repo cache path.
bool solver_dupAllowDowngrade() const
DUP tune: Whether to allow version downgrades upon DUP.
std::string multiversionKernels() const
std::string distroverpkg() const
Package telling the "product version" on systems not using /etc/product.d/baseproduct.
bool download_use_deltarpm_always() const
Whether to consider using a deltarpm even when rpm is local.
void setRepoCachePath(const Pathname &path_r)
Set a new path as the default repo cache path.
void setRepoGpgCheck(TriBool val_r)
Change the value.
Pathname credentialsGlobalDir() const
Defaults to /etc/zypp/credentials.d.
bool download_media_prefer_download() const
Hint which media to prefer when installing packages (download vs.
Pathname credentialsGlobalFile() const
Defaults to /etc/zypp/credentials.cat.
const Pathname & path() const
Return current Pathname.
bool emptyOrRoot() const
Test for "" or "/".
bool empty() const
Test for an empty path.
void setTextLocale(const Locale &locale_r)
Set the default language for retrieving translated texts.
static Pool instance()
Singleton ctor.
void multiversionSpecChanged()
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
String related utilities and Regular expression matching.
Namespace intended to collect all environment variables we use.
std::optional< Pathname > ZYPP_CONF()
Types and functions for filesystem operations.
int dirForEach(const Pathname &dir_r, const StrMatcher &matcher_r, function< bool(const Pathname &, const char *const)> fnc_r)
int simpleParseFile(std::istream &str_r, ParseFlags flags_r, function< bool(int, std::string)> consume_r)
Simple lineparser optionally trimming and skipping comments.
bool strToBool(const C_Str &str, bool default_r)
Parse str into a bool depending on the default value.
TInt strtonum(const C_Str &str)
Parsing numbers from string.
std::string sconcat(Args &&... args)
Concat words as string.
unsigned splitEscaped(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \t", bool withEmpty=false)
Split line_r into words with respect to escape delimeters.
Easy-to use interface to the ZYPP dependency resolver.
std::unordered_set< Locale > LocaleSet
ResolverFocus
The resolver's general attitude.
@ Default
Request the standard behavior (as defined in zypp.conf or 'Job').
bool fromString(const std::string &val_r, ResolverFocus &ret_r)
relates: ResolverFocus Conversion from string (enumerator name, case insensitive, empty string is Def...
ZYpp::Ptr getZYpp()
relates: ZYppFactory Convenience to get the Pointer to the ZYpp instance.
detail::Dump< Tp > dump(const Tp &obj_r)
DownloadMode
Supported commit download policies.
@ DownloadDefault
libzypp will decide what to do.
Mutable option with initial value also remembering a config value.
DefaultOption(value_type initial_r)
void setDefault(value_type newval_r)
Set a new default value.
void restoreToDefault(value_type newval_r)
Reset value to a new default.
DefaultOption & operator=(value_type newval_r)
void restoreToDefault()
Reset value to the current default.
const value_type & getDefault() const
Get the current default value.
const value_type & get() const
Get the value.
Option & operator=(value_type newval_r)
void set(value_type newval_r)
Set a new value.
Option(value_type initial_r)
No default ctor, explicit initialisation!
MultiversionSpec & getSpec(Pathname root_r, const Impl &zConfImpl_r)
MultiversionSpec & getDefaultSpec()
void scanDirAt(const Pathname &root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
bool scanConfAt(const Pathname &root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
std::map< Pathname, MultiversionSpec > SpecMap
Settings that follow a changed Target.
Option< bool > solver_dupAllowVendorChange
DefaultOption< bool > solverUpgradeRemoveDroppedPackages
Option< unsigned > solver_upgradeTestcasesToKeep
Option< bool > solver_dupAllowDowngrade
bool consume(const std::string §ion, const std::string &entry, const std::string &value)
Option< bool > solver_dupAllowArchChange
Option< bool > solver_onlyRequires
ResolverFocus solver_focus
Option< bool > solver_cleandepsOnRemove
Option< bool > solver_allowVendorChange
Option< bool > solver_dupAllowNameChange
static PoolImpl & myPool()