zypp::target::rpm::RpmDb Class Reference

Interface to the rpm program. More...

#include <RpmDb.h>

Inheritance diagram for zypp::target::rpm::RpmDb:

zypp::base::ReferenceCounted NonCopyable List of all members.

Public Types

typedef InstTargetError Error
 Default error class.
typedef std::set< std::string > FileList
enum  RpmInstFlag {
  RPMINST_NONE = 0x0000, RPMINST_NODOCS = 0x0001, RPMINST_NOSCRIPTS = 0x0002, RPMINST_FORCE = 0x0004,
  RPMINST_NODEPS = 0x0008, RPMINST_IGNORESIZE = 0x0010, RPMINST_JUSTDB = 0x0020, RPMINST_NODIGEST = 0x0040,
  RPMINST_NOSIGNATURE = 0x0080, RPMINST_NOUPGRADE = 0x0100, RPMINST_TEST = 0x0200
}
 Bits representing rpm installation options, useable as or combination. More...
enum  checkPackageResult {
  CHK_OK = 0x00, CHK_INCORRECT_VERSION = 0x01, CHK_INCORRECT_FILEMD5 = 0x02, CHK_GPGSIG_MISSING = 0x04,
  CHK_MD5SUM_MISSING = 0x08, CHK_INCORRECT_GPGSIG = 0x10, CHK_INCORRECT_PKGMD5 = 0x20, CHK_OTHER_FAILURE = 0x40
}
 Bits of possible package corruptions. More...

Public Member Functions

 RpmDb ()
 Constructor.
 ~RpmDb ()
 Destructor.
const Pathnameroot () const
const PathnamedbPath () const
bool initialized () const
void initDatabase (Pathname root_r=Pathname(), Pathname dbPath_r=Pathname())
 Prepare access to the rpm database.
void closeDatabase ()
 Block further access to the rpm database and go back to uninitialized state.
void rebuildDatabase ()
 Rebuild the rpm database (rpm --rebuilddb).
void importPubkey (const Pathname &pubkey_r)
 Import ascii armored public key in file pubkey_r.
std::list< PublicKeypubkeys () const
 Return the long ids of all installed public keys.
std::set< EditionpubkeyEditions () const
 Return the edition of all installed public keys.
bool packagesValid () const
const std::list< Package::Ptr > & getPackages ()
 If necessary build, and return the list of all installed packages.
std::list< FileInfofileList (const std::string &name_r, const Edition &edition_r) const
 return complete file list for installed package name_r (in FileInfo.filename) if edition_r != Edition::noedition, check for exact edition if full==true, fill all attributes of FileInfo
bool hasFile (const std::string &file_r, const std::string &name_r="") const
 Return true if at least one package owns a certain file (name_r empty) Return true if package name_r owns file file_r (name_r nonempty).
std::string whoOwnsFile (const std::string &file_r) const
 Return name of package owning file or empty string if no installed package owns file.
bool hasProvides (const std::string &tag_r) const
 Return true if at least one package provides a certain tag.
bool hasRequiredBy (const std::string &tag_r) const
 Return true if at least one package requires a certain tag.
bool hasConflicts (const std::string &tag_r) const
 Return true if at least one package conflicts with a certain tag.
bool hasPackage (const std::string &name_r) const
 Return true if package is installed.
void getData (const std::string &name_r, RpmHeader::constPtr &result_r) const
 Get an installed packages data from rpmdb.
void getData (const std::string &name_r, const Edition &ed_r, RpmHeader::constPtr &result_r) const
 Get an installed packages data from rpmdb.
void importZyppKeyRingTrustedKeys ()
 iterates through zypp keyring and import all non existant keys into rpm keyring
void exportTrustedKeysInZyppKeyRing ()
 insert all rpm trusted keys into zypp trusted keyring
unsigned checkPackage (const Pathname &filename, std::string version="", std::string md5="")
 Check rpm with rpm --checksig.
void installPackage (const Pathname &filename, unsigned flags=0)
 install rpm package
void removePackage (const std::string &name_r, unsigned flags=0)
 remove rpm package
void removePackage (Package::constPtr package, unsigned flags=0)
Pathname getBackupPath (void)
 get backup dir for rpm config files
bool backupPackage (const std::string &packageName)
 create tar.gz of all changed files in a Package
bool backupPackage (const Pathname &filename)
 queries file for name and then calls above backupPackage function.
void setBackupPath (const Pathname &path)
 set path where package backups are stored
void createPackageBackups (bool yes)
 whether to create package backups during install or removal
bool queryChangedFiles (FileList &fileList, const std::string &packageName)
 determine which files of an installed package have been modified.
virtual std::ostream & dumpOn (std::ostream &str) const
 Dump debug info.

Static Public Member Functions

static Package::Ptr makePackageFromHeader (const RpmHeader::constPtr header, std::set< std::string > *filerequires, const Pathname &location, Source_Ref source)
 Create a package from RpmHeader return NULL on error.
static std::string checkPackageResult2string (unsigned code)
 create error description of bits set according to checkPackageResult
static bool setInstallationLogfile (const Pathname &filename)
 Set logfile for progress log.

Protected Member Functions

void doRemovePackage (const std::string &name_r, unsigned flags, callback::SendReport< RpmRemoveReport > &report)
void doInstallPackage (const Pathname &filename, unsigned flags, callback::SendReport< RpmInstallReport > &report)
const std::list< Package::Ptr > & doGetPackages (callback::SendReport< ScanDBReport > &report)
void doRebuildDatabase (callback::SendReport< RebuildDBReport > &report)

Private Types

typedef std::vector< const
char * > 
RpmArgVec
enum  DbStateInfoBits {
  DbSI_NO_INIT = 0x0000, DbSI_HAVE_V4 = 0x0001, DbSI_MADE_V4 = 0x0002, DbSI_MODIFIED_V4 = 0x0004,
  DbSI_HAVE_V3 = 0x0008, DbSI_HAVE_V3TOV4 = 0x0010, DbSI_MADE_V3TOV4 = 0x0020
}

Private Member Functions

void dbsi_set (DbStateInfoBits &val_r, const unsigned &bits_r) const
void dbsi_clr (DbStateInfoBits &val_r, const unsigned &bits_r) const
bool dbsi_has (const DbStateInfoBits &val_r, const unsigned &bits_r) const
void internal_initDatabase (const Pathname &root_r, const Pathname &dbPath_r, DbStateInfoBits &info_r)
 Internal helper for initDatabase.
void modifyDatabase ()
 Called before the database is modified by installPackage/removePackage.
void run_rpm (const RpmArgVec &options, ExternalProgram::Stderr_Disposition stderr_disp=ExternalProgram::Stderr_To_Stdout)
 Run rpm with the specified arguments and handle stderr.
bool systemReadLine (std::string &line)
 Read a line from the general rpm query.
int systemStatus ()
 Return the exit status of the general rpm process, closing the connection if not already done.
void systemKill ()
 Forcably kill the system process.
void processConfigFiles (const std::string &line, const std::string &name, const char *typemsg, const char *difffailmsg, const char *diffgenmsg)
 handle rpm messages like "/etc/testrc saved as /etc/testrc.rpmorig"

Static Private Member Functions

static void removeV4 (const Pathname &dbdir_r, bool v3backup_r)
 Remove the rpm4 database in dbdir_r and optionally any backup created on conversion.
static void removeV3 (const Pathname &dbdir_r, bool v3backup_r)
 Remove the rpm3 database in dbdir_r.

Private Attributes

DbStateInfoBits _dbStateInfo
 Internal state info.
Pathname _root
 Root directory for all operations.
Pathname _dbPath
 Directory that contains the rpmdb.
Packages_packages
std::set< std::string > _filerequires
ExternalProgramprocess
 The connection to the rpm process.
int exit_code
 The exit code of the rpm process, or -1 if not yet known.
Pathname _backuppath
 /var/adm/backup
bool _packagebackups
 create package backups?
bool _warndirexists
 whether <_root>/<WARNINGMAILPATH> was already created

Friends

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

Classes

class  Logfile
 Simple wrapper for progress log. More...
class  Packages
 Helper class for RpmDb::getPackages() to build the list<Package::Ptr> returned. More...

Detailed Description

Interface to the rpm program.

Definition at line 44 of file RpmDb.h.


Member Typedef Documentation

typedef class InstTargetError zypp::target::rpm::RpmDb::Error
 

Default error class.

Definition at line 51 of file RpmDb.h.

typedef std::vector<const char*> zypp::target::rpm::RpmDb::RpmArgVec [private]
 

Definition at line 347 of file RpmDb.h.

typedef std::set<std::string> zypp::target::rpm::RpmDb::FileList
 

Definition at line 411 of file RpmDb.h.


Member Enumeration Documentation

enum zypp::target::rpm::RpmDb::DbStateInfoBits [private]
 

Enumerator:
DbSI_NO_INIT 
DbSI_HAVE_V4 
DbSI_MADE_V4 
DbSI_MODIFIED_V4 
DbSI_HAVE_V3 
DbSI_HAVE_V3TOV4 
DbSI_MADE_V3TOV4 

Definition at line 60 of file RpmDb.h.

enum zypp::target::rpm::RpmDb::RpmInstFlag
 

Bits representing rpm installation options, useable as or combination.

See also:
installPackage(), removePackage()
Enumerator:
RPMINST_NONE 
RPMINST_NODOCS 
RPMINST_NOSCRIPTS 
RPMINST_FORCE 
RPMINST_NODEPS 
RPMINST_IGNORESIZE 
RPMINST_JUSTDB 
RPMINST_NODIGEST 
RPMINST_NOSIGNATURE 
RPMINST_NOUPGRADE 
RPMINST_TEST 

Definition at line 419 of file RpmDb.h.

enum zypp::target::rpm::RpmDb::checkPackageResult
 

Bits of possible package corruptions.

See also:
checkPackage

checkPackageResult2string

Enumerator:
CHK_OK 
CHK_INCORRECT_VERSION 
CHK_INCORRECT_FILEMD5 
CHK_GPGSIG_MISSING 
CHK_MD5SUM_MISSING 
CHK_INCORRECT_GPGSIG 
CHK_INCORRECT_PKGMD5 
CHK_OTHER_FAILURE 

Definition at line 439 of file RpmDb.h.


Constructor & Destructor Documentation

zypp::target::rpm::RpmDb::RpmDb  ) 
 

Constructor.

There's no rpmdb access until initDatabase was called.

Definition at line 328 of file RpmDb.cc.

References exit_code, process, and zypp::target::rpm::sKeyRingReceiver.

zypp::target::rpm::RpmDb::~RpmDb  ) 
 

Destructor.

Definition at line 351 of file RpmDb.cc.

References _packages, closeDatabase(), MIL, process, and zypp::target::rpm::sKeyRingReceiver.


Member Function Documentation

void zypp::target::rpm::RpmDb::dbsi_set DbStateInfoBits val_r,
const unsigned &  bits_r
const [inline, private]
 

Definition at line 72 of file RpmDb.h.

Referenced by modifyDatabase().

void zypp::target::rpm::RpmDb::dbsi_clr DbStateInfoBits val_r,
const unsigned &  bits_r
const [inline, private]
 

Definition at line 75 of file RpmDb.h.

Referenced by initDatabase(), and modifyDatabase().

bool zypp::target::rpm::RpmDb::dbsi_has const DbStateInfoBits val_r,
const unsigned &  bits_r
const [inline, private]
 

Definition at line 78 of file RpmDb.h.

Referenced by closeDatabase(), initDatabase(), and modifyDatabase().

void zypp::target::rpm::RpmDb::internal_initDatabase const Pathname root_r,
const Pathname dbPath_r,
DbStateInfoBits info_r
[private]
 

Internal helper for initDatabase.

Exceptions:
RpmException 

Definition at line 494 of file RpmDb.cc.

References DbSI_NO_INIT, zypp::target::rpm::librpmDb::DbDirInfo::illegalArgs(), and ZYPP_THROW.

Referenced by initDatabase().

void zypp::target::rpm::RpmDb::removeV4 const Pathname dbdir_r,
bool  v3backup_r
[static, private]
 

Remove the rpm4 database in dbdir_r and optionally any backup created on conversion.

Definition at line 605 of file RpmDb.cc.

References ERR, and zypp::filesystem::PathInfo::isDir().

Referenced by closeDatabase(), and initDatabase().

void zypp::target::rpm::RpmDb::removeV3 const Pathname dbdir_r,
bool  v3backup_r
[static, private]
 

Remove the rpm3 database in dbdir_r.

Create a backup copy named packages.rpm3 if it does not already exist.

Definition at line 664 of file RpmDb.cc.

References ERR, and zypp::filesystem::PathInfo::isDir().

Referenced by closeDatabase(), initDatabase(), and modifyDatabase().

void zypp::target::rpm::RpmDb::modifyDatabase  )  [private]
 

Called before the database is modified by installPackage/removePackage.

Invalidates Packages list and moves away any old database.

Definition at line 721 of file RpmDb.cc.

References _dbPath, _dbStateInfo, _packages, _root, zypp::target::rpm::RpmDb::Packages::_valid, dbsi_clr(), dbsi_has(), DbSI_HAVE_V3, DbSI_MADE_V3TOV4, DbSI_MODIFIED_V4, dbsi_set(), initialized(), MIL, and removeV3().

Referenced by doInstallPackage().

const Pathname& zypp::target::rpm::RpmDb::root  )  const [inline]
 

Returns:
Root directory for all operations (empty if not initialized).

Definition at line 140 of file RpmDb.h.

References _root.

Referenced by doRebuildDatabase(), and rebuildDatabase().

const Pathname& zypp::target::rpm::RpmDb::dbPath  )  const [inline]
 

Returns:
Directory that contains the rpmdb (empty if not initialized).

Definition at line 145 of file RpmDb.h.

References _dbPath.

Referenced by doRebuildDatabase(), and rebuildDatabase().

bool zypp::target::rpm::RpmDb::initialized  )  const [inline]
 

Returns:
Whether we are initialized.

Definition at line 150 of file RpmDb.h.

References _root, and zypp::filesystem::Pathname::empty().

Referenced by closeDatabase(), initDatabase(), modifyDatabase(), packagesValid(), and run_rpm().

void zypp::target::rpm::RpmDb::initDatabase Pathname  root_r = Pathname(),
Pathname  dbPath_r = Pathname()
 

Prepare access to the rpm database.

Optional arguments may denote the root directory for all operations and the directory (below root) that contains the rpmdb (usg. you won't need to set this).

On empty Pathnames the default is used:

     root:   /
     dbPath: /var/lib/rpm
 

Calling initDatabase a second time with different arguments will return an error but leave the database in it's original state.

Converting an old batabase is done if necessary. On update: The converted database will be removed by closeDatabase, if it was not modified (no packages were installed or deleted). Otherwise the new database is kept, and the old one is removed.

Exceptions:
RpmException 

Definition at line 396 of file RpmDb.cc.

References _dbPath, _dbStateInfo, _root, zypp::filesystem::Pathname::absolute(), zypp::target::rpm::librpmDb::blockAccess(), zypp::target::rpm::librpmDb::dbRelease(), dbsi_clr(), dbsi_has(), DbSI_HAVE_V3, DbSI_HAVE_V4, DbSI_MADE_V3TOV4, DbSI_MADE_V4, DbSI_MODIFIED_V4, DbSI_NO_INIT, zypp::filesystem::Pathname::empty(), ERR, exportTrustedKeysInZyppKeyRing(), importZyppKeyRingTrustedKeys(), initialized(), internal_initDatabase(), MIL, rebuildDatabase(), removeV3(), removeV4(), zypp::target::rpm::stringPath(), zypp::target::rpm::librpmDb::unblockAccess(), ZYPP_CAUGHT, ZYPP_RETHROW, and ZYPP_THROW.

Referenced by zypp::target::TargetImpl::TargetImpl().

void zypp::target::rpm::RpmDb::closeDatabase  ) 
 

Block further access to the rpm database and go back to uninitialized state.

On update: Decides what to do with any converted database (see initDatabase).

Exceptions:
RpmException 

Definition at line 746 of file RpmDb.cc.

References _dbPath, _dbStateInfo, _packages, _root, zypp::target::rpm::librpmDb::blockAccess(), zypp::target::rpm::RpmDb::Packages::clear(), dbsi_has(), DbSI_HAVE_V3, DbSI_MADE_V3TOV4, DbSI_MODIFIED_V4, DbSI_NO_INIT, initialized(), MIL, removeV3(), and removeV4().

Referenced by ~RpmDb(), and zypp::target::TargetImpl::~TargetImpl().

void zypp::target::rpm::RpmDb::rebuildDatabase  ) 
 

Rebuild the rpm database (rpm --rebuilddb).

Exceptions:
RpmException 

Definition at line 789 of file RpmDb.cc.

References zypp::Exception::asUserString(), dbPath(), doRebuildDatabase(), zypp::target::rpm::RebuildDBReport::FAILED, zypp::target::rpm::RebuildDBReport::NO_ERROR, report, root(), and ZYPP_RETHROW.

Referenced by initDatabase().

void zypp::target::rpm::RpmDb::importPubkey const Pathname pubkey_r  ) 
 

Import ascii armored public key in file pubkey_r.

Exceptions:
RpmException 

Definition at line 972 of file RpmDb.cc.

References _packages, zypp::target::rpm::RpmDb::Packages::_valid, zypp::filesystem::Pathname::asString(), DBG, FAILIFNOTINITIALIZED, run_rpm(), zypp::ExternalProgram::Stderr_To_Stdout, systemReadLine(), and WAR.

list< PublicKey > zypp::target::rpm::RpmDb::pubkeys  )  const
 

Return the long ids of all installed public keys.

Definition at line 1011 of file RpmDb.cc.

References zypp::filesystem::Pathname::asString(), ERR, zypp::target::rpm::librpmDb::db_const_iterator::findByName(), getData(), zypp::Edition::noedition, and zypp::filesystem::TmpPath::path().

Referenced by importZyppKeyRingTrustedKeys().

set< Edition > zypp::target::rpm::RpmDb::pubkeyEditions  )  const
 

Return the edition of all installed public keys.

Definition at line 1049 of file RpmDb.cc.

References zypp::target::rpm::librpmDb::db_const_iterator::findByName(), and zypp::Edition::noedition.

Referenced by exportTrustedKeysInZyppKeyRing().

bool zypp::target::rpm::RpmDb::packagesValid  )  const
 

Returns:
Whether the list of installed packages is valid, or you'd better reread it. (NOTE: returns valid, if not initialized).

Definition at line 1068 of file RpmDb.cc.

References _packages, zypp::target::rpm::RpmDb::Packages::_valid, and initialized().

Referenced by doGetPackages().

const std::list< Package::Ptr > & zypp::target::rpm::RpmDb::getPackages  ) 
 

If necessary build, and return the list of all installed packages.

Definition at line 1081 of file RpmDb.cc.

References zypp::Exception::asUserString(), doGetPackages(), zypp::target::rpm::ScanDBReport::FAILED, zypp::target::rpm::ScanDBReport::NO_ERROR, report, and ZYPP_RETHROW.

Referenced by zypp::target::TargetImpl::resolvables().

std::list< FileInfo > zypp::target::rpm::RpmDb::fileList const std::string &  name_r,
const Edition edition_r
const
 

return complete file list for installed package name_r (in FileInfo.filename) if edition_r != Edition::noedition, check for exact edition if full==true, fill all attributes of FileInfo

Definition at line 1336 of file RpmDb.cc.

References zypp::target::rpm::librpmDb::db_const_iterator::findPackage(), and zypp::Edition::noedition.

bool zypp::target::rpm::RpmDb::hasFile const std::string &  file_r,
const std::string &  name_r = ""
const
 

Return true if at least one package owns a certain file (name_r empty) Return true if package name_r owns file file_r (name_r nonempty).

Definition at line 1363 of file RpmDb.cc.

References zypp::target::rpm::librpmDb::db_const_iterator::findByFile().

Referenced by zypp::target::TargetImpl::providesFile().

std::string zypp::target::rpm::RpmDb::whoOwnsFile const std::string &  file_r  )  const
 

Return name of package owning file or empty string if no installed package owns file.

Definition at line 1386 of file RpmDb.cc.

References zypp::target::rpm::librpmDb::db_const_iterator::findByFile().

Referenced by zypp::target::TargetImpl::whoOwnsFile().

bool zypp::target::rpm::RpmDb::hasProvides const std::string &  tag_r  )  const
 

Return true if at least one package provides a certain tag.

Definition at line 1403 of file RpmDb.cc.

References zypp::target::rpm::librpmDb::db_const_iterator::findByProvides().

bool zypp::target::rpm::RpmDb::hasRequiredBy const std::string &  tag_r  )  const
 

Return true if at least one package requires a certain tag.

Definition at line 1417 of file RpmDb.cc.

References zypp::target::rpm::librpmDb::db_const_iterator::findByRequiredBy().

bool zypp::target::rpm::RpmDb::hasConflicts const std::string &  tag_r  )  const
 

Return true if at least one package conflicts with a certain tag.

Definition at line 1431 of file RpmDb.cc.

References zypp::target::rpm::librpmDb::db_const_iterator::findByConflicts().

bool zypp::target::rpm::RpmDb::hasPackage const std::string &  name_r  )  const
 

Return true if package is installed.

void zypp::target::rpm::RpmDb::getData const std::string &  name_r,
RpmHeader::constPtr result_r
const
 

Get an installed packages data from rpmdb.

Package is identified by name. Data returned via result are NULL, if packge is not installed (PMError is not set), or RPM database could not be read (PMError is set).

Exceptions:
RpmException FIXME this and following comment

Referenced by pubkeys().

void zypp::target::rpm::RpmDb::getData const std::string &  name_r,
const Edition ed_r,
RpmHeader::constPtr result_r
const
 

Get an installed packages data from rpmdb.

Package is identified by name and edition. Data returned via result are NULL, if packge is not installed (PMError is not set), or RPM database could not be read (PMError is set).

Exceptions:
RpmException 

Definition at line 1477 of file RpmDb.cc.

References zypp::target::rpm::librpmDb::db_const_iterator::dbError(), zypp::target::rpm::librpmDb::db_const_iterator::findPackage(), and ZYPP_THROW.

Package::Ptr zypp::target::rpm::RpmDb::makePackageFromHeader const RpmHeader::constPtr  header,
std::set< std::string > *  filerequires,
const Pathname location,
Source_Ref  source
[static]
 

Create a package from RpmHeader return NULL on error.

Definition at line 1108 of file RpmDb.cc.

References zypp::filesystem::Pathname::empty(), name, zypp::CapFactory::parse(), zypp::Dep::PROVIDES, WAR, and ZYPP_CAUGHT.

void zypp::target::rpm::RpmDb::importZyppKeyRingTrustedKeys  ) 
 

iterates through zypp keyring and import all non existant keys into rpm keyring

Definition at line 914 of file RpmDb.cc.

References MIL, and pubkeys().

Referenced by initDatabase(), and zypp::target::rpm::KeyRingSignalReceiver::trustedKeyAdded().

void zypp::target::rpm::RpmDb::exportTrustedKeysInZyppKeyRing  ) 
 

insert all rpm trusted keys into zypp trusted keyring

Definition at line 858 of file RpmDb.cc.

References MIL, pubkeyEditions(), and zypp::str::toUpper().

Referenced by initDatabase(), and zypp::target::rpm::KeyRingSignalReceiver::trustedKeyAdded().

void zypp::target::rpm::RpmDb::run_rpm const RpmArgVec options,
ExternalProgram::Stderr_Disposition  stderr_disp = ExternalProgram::Stderr_To_Stdout
[private]
 

Run rpm with the specified arguments and handle stderr.

Parameters:
n_opts The number of arguments
options Array of the arguments, n_opts elements
stderr_disp How to handle stderr, merged with stdout by default
Exceptions:
RpmException 

Definition at line 1681 of file RpmDb.cc.

References _dbPath, _root, zypp::filesystem::Pathname::asString(), zypp::filesystem::copy(), zypp::target::rpm::librpmDb::dbRelease(), exit_code, initialized(), process, and ZYPP_THROW.

Referenced by doInstallPackage(), doRebuildDatabase(), and importPubkey().

bool zypp::target::rpm::RpmDb::systemReadLine std::string &  line  )  [private]
 

Read a line from the general rpm query.

Referenced by doInstallPackage(), doRebuildDatabase(), and importPubkey().

int zypp::target::rpm::RpmDb::systemStatus  )  [private]
 

Return the exit status of the general rpm process, closing the connection if not already done.

Definition at line 1746 of file RpmDb.cc.

References zypp::ExternalProgram::close(), exit_code, zypp::ExternalProgram::kill(), and process.

void zypp::target::rpm::RpmDb::systemKill  )  [private]
 

Forcably kill the system process.

Definition at line 1765 of file RpmDb.cc.

References zypp::ExternalProgram::kill(), and process.

void zypp::target::rpm::RpmDb::processConfigFiles const std::string &  line,
const std::string &  name,
const char *  typemsg,
const char *  difffailmsg,
const char *  diffgenmsg
[private]
 

handle rpm messages like "/etc/testrc saved as /etc/testrc.rpmorig"

Parameters:
line rpm output starting with warning:
name name of package, appears in subject line
typemsg " saved as " or " created as "
difffailmsg what to put into mail if diff failed, must contain two s for the two files
diffgenmsg what to put into mail if diff succeeded, must contain two s for the two files

unsigned zypp::target::rpm::RpmDb::checkPackage const Pathname filename,
std::string  version = "",
std::string  md5 = ""
 

Check rpm with rpm --checksig.

Parameters:
filename which file to check
version check if package really contains this version, leave emtpy to skip check
md5 md5sum for whole file, leave empty to skip check (not yet implemented)
Returns:
checkPackageResult

void zypp::target::rpm::RpmDb::installPackage const Pathname filename,
unsigned  flags = 0
 

install rpm package

Parameters:
filename file to install
flags which rpm options to use
Returns:
success
Exceptions:
RpmException 

Definition at line 1869 of file RpmDb.cc.

References zypp::target::rpm::RpmInstallReport::ABORT, doInstallPackage(), zypp::target::rpm::RpmInstallReport::IGNORE, report, and ZYPP_RETHROW.

Referenced by zypp::target::TargetImpl::commit().

void zypp::target::rpm::RpmDb::removePackage const std::string &  name_r,
unsigned  flags = 0
 

remove rpm package

Parameters:
name_r Name of the rpm package to remove.
iflags which rpm options to use
Returns:
success
Exceptions:
RpmException 

Referenced by removePackage().

void zypp::target::rpm::RpmDb::removePackage Package::constPtr  package,
unsigned  flags = 0
 

Definition at line 2007 of file RpmDb.cc.

References removePackage().

Pathname zypp::target::rpm::RpmDb::getBackupPath void   )  [inline]
 

get backup dir for rpm config files

Definition at line 492 of file RpmDb.h.

References _backuppath.

bool zypp::target::rpm::RpmDb::backupPackage const std::string &  packageName  ) 
 

create tar.gz of all changed files in a Package

Parameters:
packageName name of the Package to backup
See also:
setBackupPath

Referenced by backupPackage(), and doInstallPackage().

bool zypp::target::rpm::RpmDb::backupPackage const Pathname filename  ) 
 

queries file for name and then calls above backupPackage function.

For convenience.

Parameters:
filename rpm file that is about to be installed

Definition at line 2175 of file RpmDb.cc.

References backupPackage(), zypp::target::rpm::RpmHeader::NOSIGNATURE, and zypp::target::rpm::RpmHeader::readPackage().

void zypp::target::rpm::RpmDb::setBackupPath const Pathname path  ) 
 

set path where package backups are stored

See also:
backupPackage

Definition at line 2315 of file RpmDb.cc.

References _backuppath.

void zypp::target::rpm::RpmDb::createPackageBackups bool  yes  )  [inline]
 

whether to create package backups during install or removal

Parameters:
yes true or false

Definition at line 524 of file RpmDb.h.

References _packagebackups.

bool zypp::target::rpm::RpmDb::queryChangedFiles FileList fileList,
const std::string &  packageName
 

determine which files of an installed package have been modified.

Parameters:
fileList (output) where to store modified files
packageName name of package to query
Returns:
false if package couln't be queried for some reason

string zypp::target::rpm::RpmDb::checkPackageResult2string unsigned  code  )  [static]
 

create error description of bits set according to checkPackageResult

Definition at line 2109 of file RpmDb.cc.

References _, CHK_GPGSIG_MISSING, CHK_INCORRECT_FILEMD5, CHK_INCORRECT_GPGSIG, CHK_INCORRECT_PKGMD5, CHK_INCORRECT_VERSION, CHK_MD5SUM_MISSING, and CHK_OTHER_FAILURE.

std::ostream & zypp::target::rpm::RpmDb::dumpOn std::ostream &  str  )  const [virtual]
 

Dump debug info.

Reimplemented from zypp::base::ReferenceCounted.

Definition at line 368 of file RpmDb.cc.

References _dbPath, _dbStateInfo, _root, DbSI_HAVE_V3, DbSI_HAVE_V3TOV4, DbSI_HAVE_V4, DbSI_MADE_V3TOV4, DbSI_MADE_V4, DbSI_MODIFIED_V4, DbSI_NO_INIT, ENUM_OUT, and zypp::target::rpm::stringPath().

bool zypp::target::rpm::RpmDb::setInstallationLogfile const Pathname filename  )  [static]
 

Set logfile for progress log.

Empty filename to disable logging.

Definition at line 242 of file RpmDb.cc.

References zypp::target::rpm::RpmDb::Logfile::setFname().

Referenced by zypp::target::TargetImpl::setInstallationLogfile().

void zypp::target::rpm::RpmDb::doRemovePackage const std::string &  name_r,
unsigned  flags,
callback::SendReport< RpmRemoveReport > &  report
[protected]
 

void zypp::target::rpm::RpmDb::doInstallPackage const Pathname filename,
unsigned  flags,
callback::SendReport< RpmInstallReport > &  report
[protected]
 

Definition at line 1895 of file RpmDb.cc.

References _packagebackups, zypp::filesystem::Pathname::asString(), backupPackage(), ERR, FAILIFNOTINITIALIZED, MIL, modifyDatabase(), report, RPMINST_FORCE, RPMINST_IGNORESIZE, RPMINST_JUSTDB, RPMINST_NODEPS, RPMINST_NODIGEST, RPMINST_NODOCS, RPMINST_NOSCRIPTS, RPMINST_NOSIGNATURE, RPMINST_NOUPGRADE, RPMINST_TEST, run_rpm(), zypp::ExternalProgram::Stderr_To_Stdout, and systemReadLine().

Referenced by installPackage().

const std::list< Package::Ptr > & zypp::target::rpm::RpmDb::doGetPackages callback::SendReport< ScanDBReport > &  report  )  [protected]
 

Definition at line 1200 of file RpmDb.cc.

References zypp::target::rpm::RpmDb::Packages::_list, _packages, zypp::target::rpm::RpmDb::Packages::clear(), zypp::target::rpm::librpmDb::db_const_iterator::dbError(), ERR, packagesValid(), and ZYPP_THROW.

Referenced by getPackages().

void zypp::target::rpm::RpmDb::doRebuildDatabase callback::SendReport< RebuildDBReport > &  report  )  [protected]
 

Definition at line 806 of file RpmDb.cc.

References _packages, zypp::target::rpm::RpmDb::Packages::_valid, dbPath(), zypp::filesystem::Pathname::extend(), FAILIFNOTINITIALIZED, zypp::str::form(), zypp::ExternalProgram::getpid(), MIL, zypp::filesystem::PathInfo::path(), process, report, root(), run_rpm(), zypp::filesystem::PathInfo::size(), zypp::ExternalProgram::Stderr_To_Stdout, systemReadLine(), and WAR.

Referenced by rebuildDatabase().


Friends And Related Function Documentation

std::ostream& operator<< std::ostream &  str,
const DbStateInfoBits obj
[friend]
 


Member Data Documentation

DbStateInfoBits zypp::target::rpm::RpmDb::_dbStateInfo [private]
 

Internal state info.

Definition at line 85 of file RpmDb.h.

Referenced by closeDatabase(), dumpOn(), initDatabase(), and modifyDatabase().

Pathname zypp::target::rpm::RpmDb::_root [private]
 

Root directory for all operations.

Definition at line 90 of file RpmDb.h.

Referenced by closeDatabase(), dumpOn(), initDatabase(), initialized(), modifyDatabase(), root(), and run_rpm().

Pathname zypp::target::rpm::RpmDb::_dbPath [private]
 

Directory that contains the rpmdb.

Definition at line 95 of file RpmDb.h.

Referenced by closeDatabase(), dbPath(), dumpOn(), initDatabase(), modifyDatabase(), and run_rpm().

Packages& zypp::target::rpm::RpmDb::_packages [private]
 

Definition at line 220 of file RpmDb.h.

Referenced by closeDatabase(), doGetPackages(), doRebuildDatabase(), importPubkey(), modifyDatabase(), packagesValid(), and ~RpmDb().

std::set<std::string> zypp::target::rpm::RpmDb::_filerequires [private]
 

Definition at line 224 of file RpmDb.h.

ExternalProgram* zypp::target::rpm::RpmDb::process [private]
 

The connection to the rpm process.

Definition at line 345 of file RpmDb.h.

Referenced by doRebuildDatabase(), RpmDb(), run_rpm(), systemKill(), systemStatus(), and ~RpmDb().

int zypp::target::rpm::RpmDb::exit_code [private]
 

The exit code of the rpm process, or -1 if not yet known.

Definition at line 382 of file RpmDb.h.

Referenced by RpmDb(), run_rpm(), and systemStatus().

Pathname zypp::target::rpm::RpmDb::_backuppath [private]
 

/var/adm/backup

Definition at line 385 of file RpmDb.h.

Referenced by getBackupPath(), and setBackupPath().

bool zypp::target::rpm::RpmDb::_packagebackups [private]
 

create package backups?

Definition at line 388 of file RpmDb.h.

Referenced by createPackageBackups(), and doInstallPackage().

bool zypp::target::rpm::RpmDb::_warndirexists [private]
 

whether <_root>/<WARNINGMAILPATH> was already created

Definition at line 391 of file RpmDb.h.


The documentation for this class was generated from the following files:
Generated on Thu Jul 6 00:07:35 2006 for zypp by  doxygen 1.4.6