15 #include <sys/utsname.h>
16 #if __GLIBC_PREREQ (2,16)
20 #include <solv/solvversion.h>
37 using namespace zypp::filesystem;
38 using namespace zypp::parser;
40 #undef ZYPP_BASE_LOGGER_LOGGROUP
41 #define ZYPP_BASE_LOGGER_LOGGROUP "zconfig"
61 Arch _autodetectSystemArchitecture()
64 if ( ::uname( &buf ) < 0 )
66 ERR <<
"Can't determine system architecture" << endl;
70 Arch architecture( buf.machine );
71 MIL <<
"Uname architecture is '" << buf.machine <<
"'" << endl;
78 std::ifstream cpuinfo(
"/proc/cpuinfo" );
81 for( iostr::EachLine in( cpuinfo ); in; in.next() )
85 if ( in->find(
"cx8" ) == std::string::npos
86 || in->find(
"cmov" ) == std::string::npos )
89 WAR <<
"CPU lacks 'cx8' or 'cmov': architecture downgraded to '" << architecture <<
"'" << endl;
97 ERR <<
"Cant open " <<
PathInfo(
"/proc/cpuinfo") << endl;
103 std::ifstream cpuinfo(
"/proc/cpuinfo" );
106 for( iostr::EachLine in( cpuinfo ); in; in.next() )
110 if ( in->find(
"sun4v" ) != std::string::npos )
113 WAR <<
"CPU has 'sun4v': architecture upgraded to '" << architecture <<
"'" << endl;
115 else if ( in->find(
"sun4u" ) != std::string::npos )
118 WAR <<
"CPU has 'sun4u': architecture upgraded to '" << architecture <<
"'" << endl;
120 else if ( in->find(
"sun4m" ) != std::string::npos )
123 WAR <<
"CPU has 'sun4m': architecture upgraded to '" << architecture <<
"'" << endl;
131 ERR <<
"Cant open " <<
PathInfo(
"/proc/cpuinfo") << endl;
136 std::ifstream platform(
"/etc/rpm/platform" );
139 for( iostr::EachLine in( platform ); in; in.next() )
144 WAR <<
"/etc/rpm/platform contains armv7hl-: architecture upgraded to '" << architecture <<
"'" << endl;
150 WAR <<
"/etc/rpm/platform contains armv6hl-: architecture upgraded to '" << architecture <<
"'" << endl;
156 #if __GLIBC_PREREQ (2,16)
159 const char * platform = (
const char *)getauxval( AT_PLATFORM );
161 if ( platform && sscanf( platform,
"power%d", &powerlvl ) == 1 && powerlvl > 6 )
185 Locale _autodetectTextLocale()
188 const char * envlist[] = {
"LC_ALL",
"LC_MESSAGES",
"LANG", NULL };
189 for (
const char ** envvar = envlist; *envvar; ++envvar )
191 const char * envlang = getenv( *envvar );
194 std::string envstr( envlang );
195 if ( envstr !=
"POSIX" && envstr !=
"C" )
197 Locale lang( envstr );
198 if ( ! lang.code().empty() )
200 MIL <<
"Found " << *envvar <<
"=" << envstr << endl;
207 MIL <<
"Default text locale is '" << ret <<
"'" << endl;
208 #warning HACK AROUND BOOST_TEST_CATCH_SYSTEM_ERRORS
209 setenv(
"BOOST_TEST_CATCH_SYSTEM_ERRORS",
"no", 1 );
256 :
Option<_Tp>( initial_r ), _default( initial_r )
261 { this->set( _default.get() ); }
265 { setDefault( newval_r ); restoreToDefault(); }
269 {
return _default.get(); }
273 { _default.set( newval_r ); }
291 Impl(
const Pathname & override_r = Pathname() )
292 : _parsedZyppConf ( override_r )
293 , cfg_arch ( defaultSystemArchitecture() )
294 , cfg_textLocale ( defaultTextLocale() )
295 , updateMessagesNotify (
"single | /usr/lib/zypp/notify-message -p %p" )
296 , repo_add_probe (
false )
297 , repo_refresh_delay ( 10 )
298 , repoLabelIsAlias (
false )
299 , download_use_deltarpm (
true )
300 , download_use_deltarpm_always (
false )
301 , download_media_prefer_download(
true )
302 , download_max_concurrent_connections( 5 )
303 , download_min_download_speed ( 0 )
304 , download_max_download_speed ( 0 )
305 , download_max_silent_tries ( 5 )
306 , download_transfer_timeout ( 180 )
308 , solver_onlyRequires (
false )
309 , solver_allowVendorChange (
false )
310 , solver_cleandepsOnRemove (
false )
311 , solver_upgradeTestcasesToKeep ( 2 )
312 , solverUpgradeRemoveDroppedPackages(
true )
313 , apply_locks_file (
true )
316 MIL <<
"libzypp: " << VERSION <<
" built " << __DATE__ <<
" " << __TIME__ << endl;
319 if ( _parsedZyppConf.empty() )
321 const char *env_confpath = getenv(
"ZYPP_CONF" );
322 _parsedZyppConf = env_confpath ? env_confpath :
"/etc/zypp/zypp.conf";
328 INT <<
"Reconfigure to " << _parsedZyppConf << endl;
329 ZConfig::instance()._pimpl.reset(
this );
331 if ( PathInfo(_parsedZyppConf).isExist() )
338 string section(*sit);
344 string entry(it->first);
345 string value(it->second);
347 if ( section ==
"main" )
349 if ( entry ==
"arch" )
352 if ( carch != cfg_arch )
354 WAR <<
"Overriding system architecture (" << cfg_arch <<
"): " << carch << endl;
358 else if ( entry ==
"cachedir" )
360 cfg_cache_path = Pathname(value);
362 else if ( entry ==
"metadatadir" )
364 cfg_metadata_path = Pathname(value);
366 else if ( entry ==
"solvfilesdir" )
368 cfg_solvfiles_path = Pathname(value);
370 else if ( entry ==
"packagesdir" )
372 cfg_packages_path = Pathname(value);
374 else if ( entry ==
"configdir" )
376 cfg_config_path = Pathname(value);
378 else if ( entry ==
"reposdir" )
380 cfg_known_repos_path = Pathname(value);
382 else if ( entry ==
"servicesdir" )
384 cfg_known_services_path = Pathname(value);
386 else if ( entry ==
"repo.add.probe" )
390 else if ( entry ==
"repo.refresh.delay" )
394 else if ( entry ==
"repo.refresh.locales" )
396 std::vector<std::string> tmp;
397 str::split( value, back_inserter( tmp ),
", \t" );
399 boost::function<Locale(const std::string &)> transform(
400 [](
const std::string & str_r)->
Locale{
return Locale(str_r); }
402 repoRefreshLocales.insert( make_transform_iterator( tmp.begin(), transform ),
403 make_transform_iterator( tmp.end(), transform ) );
405 else if ( entry ==
"download.use_deltarpm" )
407 download_use_deltarpm =
str::strToBool( value, download_use_deltarpm );
409 else if ( entry ==
"download.use_deltarpm.always" )
411 download_use_deltarpm_always =
str::strToBool( value, download_use_deltarpm_always );
413 else if ( entry ==
"download.media_preference" )
415 download_media_prefer_download.restoreToDefault(
str::compareCI( value,
"volatile" ) != 0 );
417 else if ( entry ==
"download.max_concurrent_connections" )
421 else if ( entry ==
"download.min_download_speed" )
425 else if ( entry ==
"download.max_download_speed" )
429 else if ( entry ==
"download.max_silent_tries" )
433 else if ( entry ==
"download.transfer_timeout" )
436 if ( download_transfer_timeout < 0 ) download_transfer_timeout = 0;
437 else if ( download_transfer_timeout > 3600 ) download_transfer_timeout = 3600;
439 else if ( entry ==
"commit.downloadMode" )
441 commit_downloadMode.set( deserializeDownloadMode( value ) );
443 else if ( entry ==
"vendordir" )
445 cfg_vendor_path = Pathname(value);
447 else if ( entry ==
"multiversiondir" )
449 cfg_multiversion_path = Pathname(value);
451 else if ( entry ==
"solver.onlyRequires" )
453 solver_onlyRequires.set(
str::strToBool( value, solver_onlyRequires ) );
455 else if ( entry ==
"solver.allowVendorChange" )
457 solver_allowVendorChange.set(
str::strToBool( value, solver_allowVendorChange ) );
459 else if ( entry ==
"solver.cleandepsOnRemove" )
461 solver_cleandepsOnRemove.set(
str::strToBool( value, solver_cleandepsOnRemove ) );
463 else if ( entry ==
"solver.upgradeTestcasesToKeep" )
465 solver_upgradeTestcasesToKeep.set( str::strtonum<unsigned>( value ) );
467 else if ( entry ==
"solver.upgradeRemoveDroppedPackages" )
469 solverUpgradeRemoveDroppedPackages.restoreToDefault(
str::strToBool( value, solverUpgradeRemoveDroppedPackages.getDefault() ) );
471 else if ( entry ==
"solver.checkSystemFile" )
473 solver_checkSystemFile = Pathname(value);
475 else if ( entry ==
"multiversion" )
477 str::split( value, inserter( _multiversion, _multiversion.end() ),
", \t" );
479 else if ( entry ==
"locksfile.path" )
481 locks_file = Pathname(value);
483 else if ( entry ==
"locksfile.apply" )
487 else if ( entry ==
"update.datadir" )
489 update_data_path = Pathname(value);
491 else if ( entry ==
"update.scriptsdir" )
493 update_scripts_path = Pathname(value);
495 else if ( entry ==
"update.messagessdir" )
497 update_messages_path = Pathname(value);
499 else if ( entry ==
"update.messages.notify" )
501 updateMessagesNotify.set( value );
503 else if ( entry ==
"rpm.install.excludedocs" )
508 else if ( entry ==
"history.logfile" )
510 history_log_path = Pathname(value);
512 else if ( entry ==
"credentials.global.dir" )
514 credentials_global_dir_path = Pathname(value);
516 else if ( entry ==
"credentials.global.file" )
518 credentials_global_file_path = Pathname(value);
526 MIL << _parsedZyppConf <<
" not found, using defaults instead." << endl;
527 _parsedZyppConf = _parsedZyppConf.extend(
" (NOT FOUND)" );
531 if ( getenv(
"ZYPP_TESTSUITE_FAKE_ARCH" ) )
533 Arch carch( getenv(
"ZYPP_TESTSUITE_FAKE_ARCH" ) );
534 if ( carch != cfg_arch )
536 WAR <<
"ZYPP_TESTSUITE_FAKE_ARCH: Overriding system architecture (" << cfg_arch <<
"): " << carch << endl;
540 MIL <<
"ZConfig singleton created." << endl;
597 const std::set<std::string> &
multiversion()
const {
return getMultiversion(); }
614 if ( ! _multiversionInitialized )
616 Pathname multiversionDir( cfg_multiversion_path );
617 if ( multiversionDir.empty() )
618 multiversionDir = ( cfg_config_path.empty() ? Pathname(
"/etc/zypp") : cfg_config_path ) /
"multiversion.d";
621 [
this](
const Pathname & dir_r,
const char *
const & name_r )->
bool
623 MIL <<
"Parsing " << dir_r/name_r << endl;
625 [
this](
int num_r, std::string line_r )->
bool
627 DBG <<
" found " << line_r << endl;
628 _multiversion.insert( line_r );
633 _multiversionInitialized =
true;
635 return _multiversion;
682 Target_Ptr target( getZYpp()->getTarget() );
683 return target ? target->root() : Pathname();
694 static Arch _val( _autodetectSystemArchitecture() );
699 {
return _pimpl->cfg_arch; }
703 if ( arch_r !=
_pimpl->cfg_arch )
705 WAR <<
"Overriding system architecture (" <<
_pimpl->cfg_arch <<
"): " << arch_r << endl;
706 _pimpl->cfg_arch = arch_r;
718 static Locale _val( _autodetectTextLocale() );
723 {
return _pimpl->cfg_textLocale; }
727 if ( locale_r !=
_pimpl->cfg_textLocale )
729 WAR <<
"Overriding text locale (" <<
_pimpl->cfg_textLocale <<
"): " << locale_r << endl;
730 _pimpl->cfg_textLocale = locale_r;
731 #warning prefer signal
741 {
return !
_pimpl->userData.empty(); }
744 {
return _pimpl->userData; }
748 for_( ch, str_r.begin(), str_r.end() )
750 if ( *ch <
' ' && *ch !=
'\t' )
752 ERR <<
"New user data string rejectded: char " << (int)*ch <<
" at position " << (ch - str_r.begin()) << endl;
756 MIL <<
"Set user data string to '" << str_r <<
"'" << endl;
765 return (
_pimpl->cfg_cache_path.empty()
766 ? Pathname(
"/var/cache/zypp") :
_pimpl->cfg_cache_path );
771 return (
_pimpl->cfg_metadata_path.empty()
777 return (
_pimpl->cfg_solvfiles_path.empty()
783 return (
_pimpl->cfg_packages_path.empty()
791 return (
_pimpl->cfg_config_path.empty()
792 ? Pathname(
"/etc/zypp") :
_pimpl->cfg_config_path );
797 return (
_pimpl->cfg_known_repos_path.empty()
803 return (
_pimpl->cfg_known_services_path.empty()
809 return (
_pimpl->cfg_vendor_path.empty()
815 return (
_pimpl->locks_file.empty()
822 {
return _pimpl->repo_add_probe; }
825 {
return _pimpl->repo_refresh_delay; }
831 {
return _pimpl->repoLabelIsAlias; }
834 {
_pimpl->repoLabelIsAlias = yesno_r; }
837 {
return _pimpl->download_use_deltarpm; }
843 {
return _pimpl->download_media_prefer_download; }
846 {
_pimpl->download_media_prefer_download.set( yesno_r ); }
849 {
_pimpl->download_media_prefer_download.restoreToDefault(); }
852 {
return _pimpl->download_max_concurrent_connections; }
855 {
return _pimpl->download_min_download_speed; }
858 {
return _pimpl->download_max_download_speed; }
861 {
return _pimpl->download_max_silent_tries; }
864 {
return _pimpl->download_transfer_timeout; }
867 {
return _pimpl->commit_downloadMode; }
870 {
return _pimpl->solver_onlyRequires; }
873 {
return _pimpl->solver_allowVendorChange; }
876 {
return _pimpl->solver_cleandepsOnRemove; }
879 {
return (
_pimpl->solver_checkSystemFile.empty()
883 {
return _pimpl->solver_upgradeTestcasesToKeep; }
896 {
return _pimpl->apply_locks_file; }
900 return (
_pimpl->update_data_path.empty()
901 ? Pathname(
"/var/adm") :
_pimpl->update_data_path );
906 return (
_pimpl->update_messages_path.empty()
912 return (
_pimpl->update_scripts_path.empty()
917 {
return _pimpl->updateMessagesNotify; }
920 {
_pimpl->updateMessagesNotify.set( val_r ); }
923 {
_pimpl->updateMessagesNotify.restoreToDefault(); }
928 {
return _pimpl->rpmInstallFlags; }
933 return (
_pimpl->history_log_path.empty() ?
934 Pathname(
"/var/log/zypp/history") :
_pimpl->history_log_path );
939 return (
_pimpl->credentials_global_dir_path.empty() ?
940 Pathname(
"/etc/zypp/credentials.d") :
_pimpl->credentials_global_dir_path );
945 return (
_pimpl->credentials_global_file_path.empty() ?
946 Pathname(
"/etc/zypp/credentials.cat") :
_pimpl->credentials_global_file_path );
952 {
return "redhat-release"; }
957 {
return _pimpl->pluginsPath.get(); }
963 str <<
"libzypp: " << VERSION <<
" built " << __DATE__ <<
" " << __TIME__ << endl;
965 str <<
"libsolv: " << solv_version;
966 if ( ::strcmp( solv_version, LIBSOLV_VERSION_STRING ) )
967 str <<
" (built against " << LIBSOLV_VERSION_STRING <<
")";
970 str <<
"zypp.conf: '" <<
_pimpl->_parsedZyppConf <<
"'" << endl;
static Locale defaultTextLocale()
The autodetected prefered locale for translated texts.
DefaultOption(const value_type &initial_r)
const Arch Arch_sparcv9(_sparcv9())
Pathname update_scripts_path
Pathname cfg_known_repos_path
int download_transfer_timeout
MapKVIteratorTraits< SectionSet >::Key_const_iterator section_const_iterator
Option< unsigned > solver_upgradeTestcasesToKeep
void setUpdateMessagesNotify(const std::string &val_r)
Set a new command definition (see update.messages.notify in zypp.conf).
Option< bool > solver_cleandepsOnRemove
Pathname cfg_known_services_path
int download_max_concurrent_connections
std::ostream & about(std::ostream &str) const
Print some detail about the current libzypp version.
Pathname update_messages_path
std::string distroverpkg() const
Package telling the "product version" on systems not using /etc/product.d/baseproduct.
unsigned split(const C_Str &line_r, _OutputIterator result_r, const C_Str &sepchars_r=" \t")
Split line_r into words.
unsigned solver_upgradeTestcasesToKeep() const
When committing a dist upgrade (e.g.
void setTextLocale(const Locale &locale_r)
Set the default language for retrieving translated texts.
pluginsPath("/usr/lib/zypp/plugins")
bool download_use_deltarpm
const Arch Arch_i686(_i686())
Pathname knownServicesPath() const
Path where the known services .service files are kept (configPath()/services.d).
Pathname vendorPath() const
Directory for equivalent vendor definitions (configPath()/vendors.d)
Pathname repoCachePath() const
Path where the caches are kept (/var/cache/zypp)
LocaleSet repoRefreshLocales
Pathname credentialsGlobalFile() const
Defaults to /etc/zypp/credentials.cat.
Pathname cfg_metadata_path
const Arch Arch_ppc64(_ppc64())
Option< _Tp > option_type
const Arch Arch_sparcv8(_sparcv8())
void removeMultiversionSpec(const std::string &name_r)
void setSystemArchitecture(const Arch &arch_r)
Override the zypp system architecture.
bool apply_locks_file() const
Whether locks file should be read and applied after start (true)
target::rpm::RpmInstFlags rpmInstallFlags
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
void reconfigureZConfig(const Pathname &override_r)
long download_max_download_speed() const
Maximum download speed (bytes per second)
bool setUserData(const std::string &str_r)
Set a new userData string.
const Arch Arch_armv7hl(_armv7hl())
bool solver_cleandepsOnRemove() const
Whether removing a package should also remove no longer needed requirements.
bool repo_add_probe() const
Whether repository urls should be probed.
const Arch Arch_noarch(_noarch())
const std::set< std::string > & multiversion() const
void resetSolverUpgradeRemoveDroppedPackages()
Reset solverUpgradeRemoveDroppedPackages to the zypp.conf default.
Pathname _parsedZyppConf
Remember any parsed zypp.conf.
Pathname pluginsPath() const
Defaults to /usr/lib/zypp/plugins.
const Arch Arch_sparc64v(_sparc64v())
RW_pointer< Impl, rw_pointer::Scoped< Impl > > _pimpl
Pointer to implementation.
bool solverUpgradeRemoveDroppedPackages() const
Whether dist upgrade should remove a products dropped packages (true).
DownloadMode commit_downloadMode() const
Commit download policy to use as default.
Option< bool > solver_allowVendorChange
void addMultiversionSpec(const std::string &name_r)
Pathname credentials_global_dir_path
void set_download_media_prefer_download(bool yesno_r)
Set download_media_prefer_download to a specific value.
const Arch Arch_sparcv9v(_sparcv9v())
DefaultOption< bool > download_media_prefer_download
const value_type & getDefault() const
Get the current default value.
Pathname configPath() const
Path where the configfiles are kept (/etc/zypp).
const Arch Arch_i586(_i586())
Pathname historyLogFile() const
Path where ZYpp install history is logged.
void setTextLocale(const Locale &locale_r)
Set the prefered locale for translated texts.
const Arch Arch_armv6l(_armv6l())
int simpleParseFile(std::istream &str_r, ParseFlags flags_r, function< bool(int, std::string)> consume_r)
Simple lineparser optionally trimming and skipping comments.
Pathname knownReposPath() const
Path where the known repositories .repo files are kept (configPath()/repos.d).
static Pool instance()
Singleton ctor.
Pathname update_data_path
Pathname credentials_global_file_path
LocaleSet repoRefreshLocales() const
List of locales for which translated package descriptions should be downloaded.
const Arch Arch_sparc64(_sparc64())
void set_default_download_media_prefer_download()
Set download_media_prefer_download to the configfiles default.
void restoreToDefault(const value_type &newval_r)
Reset value to a new default.
void setDefault(const value_type &newval_r)
Set a new default value.
libzypp will decide what to do.
void restoreToDefault()
Reset value to the current default.
Interim helper class to collect global options and settings.
Pathname cfg_packages_path
section_const_iterator sectionsBegin() const
Pathname update_scriptsPath() const
Path where the repo metadata is downloaded and kept (update_dataPath()/).
Pathname locksFile() const
Path where zypp can find or create lock file (configPath()/locks)
std::tr1::unordered_set< Locale > LocaleSet
long download_min_download_speed() const
Minimum download speed (bytes per second) until the connection is dropped.
void clearMultiversionSpec()
entry_const_iterator entriesEnd(const std::string §ion) const
bool hasUserData() const
Whether a (non empty) user data sting is defined.
int download_max_silent_tries
Pathname update_messagesPath() const
Path where the repo solv files are created and kept (update_dataPath()/solv).
_It strtonum(const C_Str &str)
Parsing numbers from string.
Pathname repoSolvfilesPath() const
Path where the repo solv files are created and kept (repoCachePath()/solv).
Pathname repoPackagesPath() const
Path where the repo packages are downloaded and kept (repoCachePath()/packages).
bool download_use_deltarpm() const
Whether to consider using a deltarpm when downloading a package.
Mutable option with initial value also remembering a config value.
Pathname repoMetadataPath() const
Path where the repo metadata is downloaded and kept (repoCachePath()/raw).
value_type & ref()
Non-const reference to set a new value.
long download_max_silent_tries() const
Maximum silent tries.
bool download_use_deltarpm_always
std::set< std::string > & getMultiversion() const
int compareCI(const C_Str &lhs, const C_Str &rhs)
const Arch Arch_armv6hl(_armv6hl())
bool solver_allowVendorChange() const
Whether vendor check is by default enabled.
bool solver_onlyRequires() const
Solver regards required packages,patterns,...
Option< Pathname > pluginsPath
Parses a INI file and offers its structure as a dictionary.
std::set< std::string > & multiversion()
static Arch defaultSystemArchitecture()
The autodetected system architecture.
Pathname systemRoot() const
The target root directory.
entry_const_iterator entriesBegin(const std::string §ion) const
bool download_media_prefer_download() const
Hint which media to prefer when installing packages (download vs.
DefaultOption< std::string > updateMessagesNotify
const std::set< std::string > & multiversionSpec() const
Pathname solver_checkSystemFile
target::rpm::RpmInstFlags rpmInstallFlags() const
The default target::rpm::RpmInstFlags for ZYppCommitPolicy.
const Arch Arch_armv7l(_armv7l())
Option< bool > solver_onlyRequires
Pathname history_log_path
bool strToBool(const C_Str &str, bool default_r)
Parse str into a bool depending on the default value.
Pathname update_dataPath() const
Path where the update items are kept (/var/adm)
std::string userData() const
User defined string value to be passed to log, history, plugins...
Option(const value_type &initial_r)
No default ctor, explicit initialisation!
const Arch Arch_sparc(_sparc())
int download_max_download_speed
Wrapper class for ::stat/::lstat.
void resetUpdateMessagesNotify()
Reset to the zypp.conf default.
int dirForEach(const Pathname &dir_r, function< bool(const Pathname &, const char *const)> fnc_r)
Invoke callback function fnc_r for each entry in directory dir_r.
DefaultIntegral< bool, false > _multiversionInitialized
void setSolverUpgradeRemoveDroppedPackages(bool val_r)
Set solverUpgradeRemoveDroppedPackages to val_r.
int download_min_download_speed
void set(const value_type &newval_r)
Set a new value.
Locale textLocale() const
The locale for translated texts zypp uses.
std::string updateMessagesNotify() const
Command definition for sending update messages.
EntrySet::const_iterator entry_const_iterator
unsigned repo_refresh_delay() const
Amount of time in minutes that must pass before another refresh.
Arch systemArchitecture() const
The system architecture zypp uses.
bool repoLabelIsAlias() const
Whether to use repository alias or name in user messages (progress, exceptions, ...).
Pathname cfg_multiversion_path
LocaleSet requestedLocales() const
Languages to be supported by the system.
DefaultOption< bool > solverUpgradeRemoveDroppedPackages
section_const_iterator sectionsEnd() const
long download_max_concurrent_connections() const
Maximum number of concurrent connections for a single transfer.
bool hasPrefix(const C_Str &str_r, const C_Str &prefix_r)
Return whether str_r has prefix prefix_r.
Pathname solver_checkSystemFile() const
File in which dependencies described which has to be fulfilled for a running system.
Option< DownloadMode > commit_downloadMode
unsigned repo_refresh_delay
const Arch Arch_ppc64p7(_ppc64p7())
bool download_use_deltarpm_always() const
Whether to consider using a deltarpm even when rpm is local.
long download_transfer_timeout() const
Maximum time in seconds that you allow a transfer operation to take.
Pathname credentialsGlobalDir() const
Defaults to /etc/zypp/credentials.d.
DownloadMode
Supported commit download policies.
Pathname cfg_solvfiles_path
std::set< std::string > _multiversion