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" )
97 Locale lang( envstr );
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) }
135 pMIL(
"Reading zypp.conf for root", root_r );
141 if ( conf.isFile() ) {
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 );
167 : _val(
std::move(initial_r) )
171 {
set( std::move(newval_r) );
return *
this; }
183 { _val = std::move(newval_r); }
198 , _default(
std::move(initial_r) )
202 { this->
set( std::move(newval_r) );
return *
this; }
206 { this->
set( _default.get() ); }
210 { setDefault( std::move(newval_r) ); restoreToDefault(); }
214 {
return _default.get(); }
218 { _default.set( std::move(newval_r) ); }
242 , solver_onlyRequires ( false )
243 , solver_allowVendorChange ( false )
244 , solver_dupAllowDowngrade ( true )
245 , solver_dupAllowNameChange ( true )
246 , solver_dupAllowArchChange ( true )
247 , solver_dupAllowVendorChange ( false )
248 , solver_cleandepsOnRemove ( false )
249 , solver_upgradeTestcasesToKeep ( 2 )
250 , solverUpgradeRemoveDroppedPackages ( true )
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" )
264 solver_onlyRequires.set(
str::strToBool( value, solver_onlyRequires ) );
266 else if ( entry ==
"solver.allowVendorChange" )
268 solver_allowVendorChange.set(
str::strToBool( value, solver_allowVendorChange ) );
270 else if ( entry ==
"solver.dupAllowDowngrade" )
272 solver_dupAllowDowngrade.set(
str::strToBool( value, solver_dupAllowDowngrade ) );
274 else if ( entry ==
"solver.dupAllowNameChange" )
276 solver_dupAllowNameChange.set(
str::strToBool( value, solver_dupAllowNameChange ) );
278 else if ( entry ==
"solver.dupAllowArchChange" )
280 solver_dupAllowArchChange.set(
str::strToBool( value, solver_dupAllowArchChange ) );
282 else if ( entry ==
"solver.dupAllowVendorChange" )
284 solver_dupAllowVendorChange.set(
str::strToBool( value, solver_dupAllowVendorChange ) );
286 else if ( entry ==
"solver.cleandepsOnRemove" )
288 solver_cleandepsOnRemove.set(
str::strToBool( value, solver_cleandepsOnRemove ) );
290 else if ( entry ==
"solver.upgradeTestcasesToKeep" )
292 solver_upgradeTestcasesToKeep.set( str::strtonum<unsigned>( value ) );
294 else if ( entry ==
"solver.upgradeRemoveDroppedPackages" )
296 solverUpgradeRemoveDroppedPackages.restoreToDefault(
str::strToBool( value, solverUpgradeRemoveDroppedPackages.getDefault() ) );
318 : cfg_arch ( defaultSystemArchitecture() )
319 , cfg_textLocale ( defaultTextLocale() )
320 , cfg_cache_path {
"/var/cache/zypp" }
321 , cfg_metadata_path {
"" }
322 , cfg_solvfiles_path {
"" }
323 , cfg_packages_path {
"" }
324 , updateMessagesNotify (
"" )
325 , repo_add_probe (
false )
326 , repo_refresh_delay ( 10 )
327 , repoLabelIsAlias (
false )
328 , download_use_deltarpm ( APIConfig(LIBZYPP_CONFIG_USE_DELTARPM_BY_DEFAULT) )
329 , download_use_deltarpm_always (
false )
330 , download_media_prefer_download(
true )
331 , download_mediaMountdir (
"/var/adm/mount" )
334 , repoGpgCheck ( indeterminate )
335 , pkgGpgCheck ( indeterminate )
336 , apply_locks_file (
true )
337 , pluginsPath (
"/usr/lib/zypp/plugins" )
338 , geoipEnabled (
true )
339 , geoipHosts {
"download.opensuse.org" }
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" )
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" )
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" )
399 else if ( entry ==
"repo.add.probe" )
403 else if ( entry ==
"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") {
437 else if ( entry ==
"commit.downloadMode" )
441 else if ( entry ==
"gpgcheck" )
445 else if ( entry ==
"repo_gpgcheck" )
449 else if ( entry ==
"pkg_gpgcheck" )
453 else if ( entry ==
"vendordir" )
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() );
478 else if ( entry ==
"locksfile.path" )
482 else if ( entry ==
"locksfile.apply" )
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" )
510 else if ( entry ==
"history.logfile" )
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" ) );
538 if ( carch != cfg_arch )
540 WAR <<
"ZYPP_TESTSUITE_FAKE_ARCH: Overriding system architecture (" << cfg_arch <<
"): " << carch << endl;
544 MIL <<
"ZConfig singleton created." << endl;
549 Impl &operator=(
const Impl &) =
delete;
563 return target ? target->root() : _announced_root_path;
570 Pathname newRoot { _autodetectSystemRoot() };
571 MIL <<
"notifyTargetChanged (" << newRoot <<
")" << endl;
573 if ( newRoot.emptyOrRoot() ) {
574 _currentTargetDefaults.reset();
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 );
590 long cfg_lockTimeout = 0;
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 ) )
690 scanDirAt( 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) );
745 {
return _multiversionMap.getSpec( _autodetectSystemRoot(), *
this ); }
783 const char *
env = getenv(
"ZYPP_LOCK_TIMEOUT");
785 return str::strtonum<long>(
env );
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; }
1124 return Pathname(update_dataPath()/
"update-messages");
1132 return Pathname(update_dataPath()/
"update-scripts");
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 <<
")";
std::set< std::string > MultiversionSpec
void setDefault(value_type newval_r)
Set a new default value.
bool hasUserData() const
Whether a (non empty) user data sting is defined.
Option< bool > solver_dupAllowDowngrade
static Locale defaultTextLocale()
The autodetected preferred locale for translated texts.
Pathname repoSolvfilesPath() const
Path where the repo solv files are created and kept (repoCachePath()/solv).
Pathname credentialsGlobalDir() const
Defaults to /etc/zypp/credentials.d.
Pathname builtinRepoPackagesPath() const
The builtin config file value.
Pathname cfg_known_repos_path
void setGeoipEnabled(bool enable=true)
Enables or disables the use of the geoip feature of download.opensuse.org.
void setGpgCheck(bool val_r)
Change the value.
std::ostream & about(std::ostream &str) const
Print some detail about the current libzypp version.
bool download_use_deltarpm_always() const
Whether to consider using a deltarpm even when rpm is local.
Namespace intended to collect all environment variables we use.
void setUpdateMessagesNotify(const std::string &val_r)
Set a new command definition (see update.messages.notify in zypp.conf).
void setRepoGpgCheck(TriBool val_r)
Change the value.
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.
unsigned splitEscaped(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \, bool withEmpty=false)
Split line_r into words with respect to escape delimeters.
Pathname cfg_known_services_path
static ZConfig & instance()
Singleton ctor.
long download_max_download_speed() const
Maximum download speed (bytes per second)
static Pathname update_messagesPath()
Path where the update messages are stored ( /var/adm/update-messages )
MultiversionSpec & multiversion()
static const Locale enCode
Last resort "en".
Locale textLocale() const
The locale for translated texts zypp uses.
bool repoLabelIsAlias() const
Whether to use repository alias or name in user messages (progress, exceptions, ...).
void setTextLocale(const Locale &locale_r)
Set the default language for retrieving translated texts.
bool download_use_deltarpm
void setRepoPackagesPath(const Pathname &path_r)
Set a new path as the default repo cache path.
Pathname varsPath() const
Path containing custom repo variable definitions (configPath()/vars.d).
ResolverFocus
The resolver's general attitude.
Pathname pubkeyCachePath() const
Path where the pubkey caches.
std::unordered_set< Locale > LocaleSet
LocaleSet repoRefreshLocales
Pathname builtinRepoMetadataPath() const
The builtin config file value.
Option< bool > solver_onlyRequires
int dirForEach(const Pathname &dir_r, const StrMatcher &matcher_r, function< bool(const Pathname &, const char *const)> fnc_r)
DefaultOption< Pathname > cfg_metadata_path
static Arch detectSystemArchitecture()
Determine system architecture evaluating uname and /proc/cpuinfo.
bool repo_add_probe() const
Whether repository urls should be probed.
void restoreToDefault()
Reset value to the current default.
String related utilities and Regular expression matching.
void removeMultiversionSpec(const std::string &name_r)
bool geoipEnabled() const
Returns true if zypp should use the geoip feature of download.opensuse.org.
void setSystemArchitecture(const Arch &arch_r)
Override the zypp system architecture.
unsigned solver_upgradeTestcasesToKeep() const
When committing a dist upgrade (e.g.
Option< bool > solver_allowVendorChange
std::vector< std::string > geoipHosts
Pathname vendorPath() const
Directory for equivalent vendor definitions (configPath()/vendors.d)
target::rpm::RpmInstFlags rpmInstallFlags
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
bool setUserData(const std::string &str_r)
Set a new userData string.
std::string cfg_kernel_keep_spec
Request the standard behavior (as defined in zypp.conf or 'Job')
void set_download_mediaMountdir(Pathname newval_r)
Set alternate value.
bool solver_dupAllowArchChange() const
DUP tune: Whether to allow package arch changes upon DUP.
MultiversionSpec & getDefaultSpec()
void resetSolverUpgradeRemoveDroppedPackages()
Reset solverUpgradeRemoveDroppedPackages to the zypp.conf default.
std::string userData() const
User defined string value to be passed to log, history, plugins...
RW_pointer< Impl, rw_pointer::Scoped< Impl > > _pimpl
Pointer to implementation.
const std::set< std::string > & multiversionSpec() const
void set_default_download_mediaMountdir()
Reset to zypp.cong default.
void addMultiversionSpec(const std::string &name_r)
void resetGpgCheck()
Reset to the zconfig default.
void set_download_media_prefer_download(bool yesno_r)
Set download_media_prefer_download to a specific value.
DefaultOption< Pathname > download_mediaMountdir
bool solverUpgradeRemoveDroppedPackages() const
Whether dist upgrade should remove a products dropped packages (true).
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
DownloadMode commit_downloadMode() const
Commit download policy to use as default.
DefaultOption< bool > download_media_prefer_download
LocaleSet repoRefreshLocales() const
List of locales for which translated package descriptions should be downloaded.
TriBool strToTriBool(const C_Str &str)
Parse str into a bool if it's a legal true or false string; else indeterminate.
Pathname download_mediaMountdir() const
Path where media are preferably mounted or downloaded.
Pathname repoManagerRoot() const
The RepoManager root directory.
MultiversionMap _multiversionMap
bool consume(const std::string §ion, const std::string &entry, const std::string &value)
DefaultOption< bool > gpgCheck
bool empty() const
Test for an empty path.
void setTextLocale(const Locale &locale_r)
Set the preferred locale for translated texts.
unsigned split(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \, const Trim trim_r=NO_TRIM)
Split line_r into words.
static Pool instance()
Singleton ctor.
Pathname _announced_root_path
TriBool pkgGpgCheck() const
Check rpm package signatures (indeterminate - according to gpgcheck)
Pathname solver_checkSystemFileDir() const
Directory, which may or may not contain files in which dependencies described which has to be fulfill...
std::optional< TargetDefaults > _currentTargetDefaults
TargetDefaults while –root.
void set_default_download_media_prefer_download()
Set download_media_prefer_download to the configfiles default.
Pathname solver_checkSystemFile() const
File in which dependencies described which has to be fulfilled for a running system.
LocaleSet requestedLocales() const
Languages to be supported by the system.
Pathname locksFile() const
Path where zypp can find or create lock file (configPath()/locks)
Option & operator=(value_type newval_r)
unsigned repo_refresh_delay() const
Amount of time in minutes that must pass before another refresh.
libzypp will decide what to do.
bool gpgCheck() const
Turn signature checking on/off (on)
Pathname repoCachePath() const
Path where the caches are kept (/var/cache/zypp)
Option< bool > solver_cleandepsOnRemove
bool solver_dupAllowVendorChange() const
DUP tune: Whether to allow package vendor changes upon DUP.
Option(value_type initial_r)
No default ctor, explicit initialisation!
static Pathname assertprefix(const Pathname &root_r, const Pathname &path_r)
Return path_r prefixed with root_r, unless it is already prefixed.
Interim helper class to collect global options and settings.
Pathname _autodetectSystemRoot() const
bsc#1237044: Provide announceSystemRoot to allow commands using –root without launching a Target...
Pathname credentialsGlobalFile() const
Defaults to /etc/zypp/credentials.cat.
bool solver_dupAllowDowngrade() const
DUP tune: Whether to allow version downgrades upon DUP.
DefaultOption< bool > solverUpgradeRemoveDroppedPackages
static Pathname update_dataPath()
Path where the update items are kept (/var/adm)
Types and functions for filesystem operations.
TriBool repoGpgCheck() const
Check repo matadata signatures (indeterminate - according to gpgcheck)
bool apply_locks_file() const
Whether locks file should be read and applied after start (true)
void restoreToDefault(value_type newval_r)
Reset value to a new default.
bool solver_dupAllowNameChange() const
DUP tune: Whether to follow package renames upon DUP.
TInt strtonum(const C_Str &str)
Parsing numbers from string.
std::string sconcat(Args &&... args)
Concat words as string.
Pathname needrebootPath() const
Path where the custom needreboot config files are kept (configPath()/needreboot.d).
void clearMultiversionSpec()
Pathname repoPackagesPath() const
Path where the repo packages are downloaded and kept (repoCachePath()/packages).
static PoolImpl & myPool()
Pathname geoipCachePath() const
Path where the geoip caches are kept (/var/cache/zypp/geoip)
long download_max_silent_tries() const
Maximum silent tries.
Mutable option with initial value also remembering a config value.
target::rpm::RpmInstFlags rpmInstallFlags() const
The default target::rpm::RpmInstFlags for ZYppCommitPolicy.
bool download_use_deltarpm_always
std::optional< Pathname > ZYPP_CONF()
int compareCI(const C_Str &lhs, const C_Str &rhs)
long lockTimeout() const
The number of seconds to wait for the zypp lock to become available.
static Pathname update_scriptsPath()
Path where the update scripts are stored ( /var/adm/update-scripts )
bool solver_onlyRequires() const
Solver regards required packages,patterns,...
TargetDefaults _initialTargetDefaults
Initial TargetDefaults from /.
Pathname configPath() const
Path where the configfiles are kept (/etc/zypp).
'Language[_Country]' codes.
Option< Pathname > pluginsPath
DefaultOption< Pathname > cfg_cache_path
ZYpp::Ptr getZYpp()
relates: ZYppFactory Convenience to get the Pointer to the ZYpp instance.
Parses a INI file and offers its structure as a dictionary.
DefaultOption< Pathname > cfg_packages_path
Option< bool > solver_dupAllowArchChange
Pathname builtinRepoSolvfilesPath() const
The builtin config file value.
static Arch defaultSystemArchitecture()
The autodetected system architecture.
void resetRepoGpgCheck()
Reset to the zconfig default.
ResolverFocus solver_focus() const
The resolver's general attitude when resolving jobs.
bool solver_cleandepsOnRemove() const
Whether removing a package should also remove no longer needed requirements.
DefaultOption< std::string > updateMessagesNotify
int simpleParseFile(std::istream &str_r, ParseFlags flags_r, function< bool(int, std::string)> consume_r)
Simple lineparser optionally trimming and skipping comments.
std::map< Pathname, MultiversionSpec > SpecMap
void announceSystemRoot(const Pathname &root_r)
Announce a target root directory without launching the Target.
Pathname cfg_repo_mgr_root_path
bool download_media_prefer_download() const
Hint which media to prefer when installing packages (download vs.
Pathname solver_checkSystemFile
bool fromString(const std::string &val_r, ResolverFocus &ret_r)
relates: ResolverFocus Conversion from string (enumerator name, case insensitive, empty string is Def...
Pathname needrebootFile() const
Path of the default needreboot config file (configPath()/needreboot).
Pathname historyLogFile() const
Path where ZYpp install history is logged.
Pathname history_log_path
bool strToBool(const C_Str &str, bool default_r)
Parse str into a bool depending on the default value.
std::string distroverpkg() const
Package telling the "product version" on systems not using /etc/product.d/baseproduct.
MultiversionSpec & getMultiversion() const
const TargetDefaults & targetDefaults() const
std::string multiversionKernels() const
TargetDefaults & targetDefaults()
void setRepoMetadataPath(const Pathname &path_r)
Set a new path as the default repo cache path.
DownloadMode deserializeDownloadMode(const std::string &str_r)
relates: DownloadMode Parse from string.
Wrapper class for ::stat/::lstat.
Pathname knownServicesPath() const
Path where the known services .service files are kept (configPath()/services.d).
void resetUpdateMessagesNotify()
Reset to the zypp.conf default.
Arch systemArchitecture() const
The system architecture zypp uses.
void setSolverUpgradeRemoveDroppedPackages(bool val_r)
Set solverUpgradeRemoveDroppedPackages to val_r.
DefaultOption(value_type initial_r)
bool scanConfAt(const Pathname &root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
std::string updateMessagesNotify() const
Command definition for sending update messages.
Pathname systemRoot() const
The target root directory.
Pathname builtinRepoCachePath() const
The builtin config file value.
Pathname solver_checkSystemFileDir
Pathname cfg_multiversion_path
Option< bool > solver_dupAllowVendorChange
void setPkgGpgCheck(TriBool val_r)
Change the value.
const value_type & getDefault() const
Get the current default value.
DefaultOption< Pathname > cfg_solvfiles_path
void notifyTargetChanged()
bool solver_allowVendorChange() const
Whether vendor check is by default enabled.
Easy-to use interface to the ZYPP dependency resolver.
void setRepoSolvfilesPath(const Pathname &path_r)
Set a new path as the default repo cache path.
DefaultOption & operator=(value_type newval_r)
ResolverFocus solver_focus
detail::Dump< Tp > dump(const Tp &obj_r)
const std::vector< std::string > geoipHostnames() const
All hostnames we want to rewrite using the geoip feature.
void notifyTargetChanged()
internal
bool download_use_deltarpm() const
Whether to consider using a deltarpm when downloading a package.
void setRepoCachePath(const Pathname &path_r)
Set a new path as the default repo cache path.
const MultiversionSpec & multiversion() const
void setRepoManagerRoot(const Pathname &root)
Sets the RepoManager root directory.
MultiversionSpec & getSpec(Pathname root_r, const Impl &zConfImpl_r)
Pathname pluginsPath() const
Defaults to /usr/lib/zypp/plugins.
DefaultOption< TriBool > repoGpgCheck
void scanDirAt(const Pathname &root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
Option< DownloadMode > commit_downloadMode
DefaultOption< TriBool > pkgGpgCheck
unsigned repo_refresh_delay
void resetPkgGpgCheck()
Reset to the zconfig default.
void multiversionSpecChanged()
Pathname repoMetadataPath() const
Path where the repo metadata is downloaded and kept (repoCachePath()/raw).
auto transform(Container< Msg, CArgs... > &&val, Transformation &&transformation)
Settings that follow a changed Target.
long download_min_download_speed() const
Minimum download speed (bytes per second) until the connection is dropped.
long download_max_concurrent_connections() const
Maximum number of concurrent connections for a single transfer.
DownloadMode
Supported commit download policies.
Option< unsigned > solver_upgradeTestcasesToKeep
Option< bool > solver_dupAllowNameChange