libzypp 17.31.23
|
Interface to the rpm program. More...
#include <target/rpm/RpmDb.h>
Classes | |
struct | CheckPackageDetail |
Detailed rpm signature check log messages A single multiline message if CHK_OK. More... | |
Public Types | |
enum | SyncTrustedKeyBits { SYNC_TO_KEYRING = 1<<0 , SYNC_FROM_KEYRING = 1<<1 , SYNC_BOTH = SYNC_TO_KEYRING | SYNC_FROM_KEYRING } |
Sync mode for syncTrustedKeys. More... | |
enum | CheckPackageResult { CHK_OK = 0 , CHK_NOTFOUND = 1 , CHK_FAIL = 2 , CHK_NOTTRUSTED = 3 , CHK_NOKEY = 4 , CHK_ERROR = 5 , CHK_NOSIG = 6 } |
checkPackage result More... | |
typedef class InstTargetError | Error |
Default error class. | |
typedef std::set< std::string > | FileList |
Public Member Functions | |
RpmDb () | |
Constructor. | |
~RpmDb () | |
Destructor. | |
const Pathname & | root () const |
const Pathname & | dbPath () const |
bool | initialized () const |
void | initDatabase (Pathname root_r=Pathname(), bool doRebuild_r=false) |
Prepare access to the rpm database below root_r. | |
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 PublicKey &pubkey_r) |
Import ascii armored public key in file pubkey_r. | |
void | removePubkey (const PublicKey &pubkey_r) |
Remove a public key from the rpm database. | |
std::list< PublicKey > | pubkeys () const |
Return the long ids of all installed public keys. | |
std::set< Edition > | pubkeyEditions () const |
Return the edition of all installed public keys. | |
std::list< FileInfo > | 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 | |
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. | |
bool | hasPackage (const std::string &name_r, const Edition &ed_r) const |
Return true if package is installed in a certain edition. | |
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 | syncTrustedKeys (SyncTrustedKeyBits mode_r=SYNC_BOTH) |
Sync trusted keys stored in rpm database and zypp trusted keyring. | |
void | importZyppKeyRingTrustedKeys () |
iterates through zypp keyring and import all non-existent keys into rpm keyring | |
void | exportTrustedKeysInZyppKeyRing () |
insert all rpm trusted keys into zypp trusted keyring | |
CheckPackageResult | checkPackage (const Pathname &path_r, CheckPackageDetail &detail_r) |
Check signature of rpm file on disk (legacy version returning CHK_OK if file is unsigned, like 'rpm -K') | |
CheckPackageResult | checkPackage (const Pathname &path_r) |
CheckPackageResult | checkPackageSignature (const Pathname &path_r, CheckPackageDetail &detail_r) |
Check signature of rpm file on disk (strict check returning CHK_NOSIG if file is unsigned). | |
void | installPackage (const Pathname &filename, RpmInstFlags flags=RPMINST_NONE) |
install rpm package | |
void | installPackage (const Pathname &filename, RpmInstFlags flags, RpmPostTransCollector *postTransCollector_r) |
void | removePackage (const std::string &name_r, RpmInstFlags flags=RPMINST_NONE) |
remove rpm package | |
void | removePackage (Package::constPtr package, RpmInstFlags flags=RPMINST_NONE) |
void | removePackage (const std::string &name_r, RpmInstFlags flags, RpmPostTransCollector *postTransCollector_r) |
void | removePackage (Package::constPtr package, RpmInstFlags flags, RpmPostTransCollector *postTransCollector_r) |
int | runposttrans (const Pathname &filename_r, std::function< void(const std::string &)> output_r) |
Run collected posttrans and transfiletrigger(postun|in) if rpm --runposttrans is supported. | |
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. | |
Public Member Functions inherited from zypp::base::ReferenceCounted | |
ReferenceCounted () | |
Default ctor. | |
ReferenceCounted (const ReferenceCounted &rhs) | |
Copy ctor. | |
virtual | ~ReferenceCounted () |
Dtor. | |
ReferenceCounted & | operator= (const ReferenceCounted &) |
Assignment. | |
unsigned | refCount () const |
Return reference counter value. | |
void | ref () const |
Add a reference. | |
void | unref () const |
Release a reference. | |
Protected Member Functions | |
void | doRemovePackage (const std::string &name_r, RpmInstFlags flags, RpmPostTransCollector *postTransCollector_r, callback::SendReport< RpmRemoveReport > &report) |
void | doInstallPackage (const Pathname &filename, RpmInstFlags flags, RpmPostTransCollector *postTransCollector_r, callback::SendReport< RpmInstallReport > &report) |
void | doRebuildDatabase (callback::SendReport< RebuildDBReport > &report) |
Protected Member Functions inherited from zypp::base::ReferenceCounted | |
virtual std::ostream & | dumpOn (std::ostream &str) const |
Overload to realize std::ostream & operator<<. | |
virtual void | ref_to (unsigned) const |
Trigger derived classes after refCount was increased. | |
virtual void | unref_to (unsigned) const |
Trigger derived classes after refCount was decreased. | |
Private Types | |
typedef std::vector< const char * > | RpmArgVec |
Private Member Functions | |
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" | |
Private Attributes | |
Pathname | _root |
Root directory for all operations. | |
Pathname | _dbPath |
Directory that contains the rpmdb. | |
ExternalProgram * | process |
The connection to the rpm process. | |
int | exit_code |
The exit code of the rpm process, or -1 if not yet known. | |
std::string | error_message |
Error message from running rpm as external program. | |
Pathname | _backuppath |
/var/adm/backup | |
bool | _packagebackups |
create package backups? | |
Additional Inherited Members | |
Static Public Member Functions inherited from zypp::base::ReferenceCounted | |
static void | add_ref (const ReferenceCounted *ptr_r) |
Called by zypp::intrusive_ptr to add a reference. | |
static void | release (const ReferenceCounted *ptr_r) |
Called by zypp::intrusive_ptr to add a reference. | |
Related Functions inherited from zypp::base::ReferenceCounted | |
void | intrusive_ptr_add_ref (const ReferenceCounted *ptr_r) |
intrusive_ptr hook to add_ref. | |
void | intrusive_ptr_release (const ReferenceCounted *ptr_r) |
intrusive_ptr hook to release. | |
std::ostream & | operator<< (std::ostream &str, const ReferenceCounted &obj) |
Stream output. | |
typedef class InstTargetError zypp::target::rpm::RpmDb::Error |
|
private |
typedef std::set<std::string> zypp::target::rpm::RpmDb::FileList |
Sync mode for syncTrustedKeys.
Enumerator | |
---|---|
SYNC_TO_KEYRING | export rpm trusted keys into zypp trusted keyring |
SYNC_FROM_KEYRING | import zypp trusted keys into rpm database. |
SYNC_BOTH |
checkPackage result
Enumerator | |
---|---|
CHK_OK | Signature is OK. |
CHK_NOTFOUND | Signature is unknown type. |
CHK_FAIL | Signature does not verify. |
CHK_NOTTRUSTED | Signature is OK, but key is not trusted. |
CHK_NOKEY | Public key is unavailable. |
CHK_ERROR | File does not exist or can't be opened. |
CHK_NOSIG | File has no gpg signature (only digests). |
zypp::target::rpm::RpmDb::RpmDb | ( | ) |
Constructor.
There's no rpmdb access until initDatabase was called.
|
inline |
|
inline |
|
inline |
void zypp::target::rpm::RpmDb::initDatabase | ( | Pathname | root_r = Pathname() , |
bool | doRebuild_r = false |
||
) |
Prepare access to the rpm database below root_r.
An optional argument denotes the root directory for all operations. If an empty Pathname is given the default (/) is used.
Calling initDatabase a second time with different arguments will return an error but leave the database in its original state.
If the database already exists and doRebuild_r
is true, rebuildDatabase is called.
RpmException |
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).
RpmException |
void zypp::target::rpm::RpmDb::rebuildDatabase | ( | ) |
Rebuild the rpm database (rpm –rebuilddb).
RpmException |
void zypp::target::rpm::RpmDb::importPubkey | ( | const PublicKey & | pubkey_r | ) |
Import ascii armored public key in file pubkey_r.
RpmException |
void zypp::target::rpm::RpmDb::removePubkey | ( | const PublicKey & | pubkey_r | ) |
Remove a public key from the rpm database.
RpmException |
std::list< PublicKey > zypp::target::rpm::RpmDb::pubkeys | ( | ) | const |
std::set< Edition > zypp::target::rpm::RpmDb::pubkeyEditions | ( | ) | const |
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
bool zypp::target::rpm::RpmDb::hasFile | ( | const std::string & | file_r, |
const std::string & | name_r = "" |
||
) | const |
std::string zypp::target::rpm::RpmDb::whoOwnsFile | ( | const std::string & | file_r | ) | const |
bool zypp::target::rpm::RpmDb::hasProvides | ( | const std::string & | tag_r | ) | const |
bool zypp::target::rpm::RpmDb::hasRequiredBy | ( | const std::string & | tag_r | ) | const |
bool zypp::target::rpm::RpmDb::hasConflicts | ( | const std::string & | tag_r | ) | const |
bool zypp::target::rpm::RpmDb::hasPackage | ( | const std::string & | name_r | ) | const |
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).
RpmException |
FIXME this and following comment
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).
RpmException |
void zypp::target::rpm::RpmDb::syncTrustedKeys | ( | SyncTrustedKeyBits | mode_r = SYNC_BOTH | ) |
void zypp::target::rpm::RpmDb::importZyppKeyRingTrustedKeys | ( | ) |
void zypp::target::rpm::RpmDb::exportTrustedKeysInZyppKeyRing | ( | ) |
|
private |
Run rpm with the specified arguments and handle stderr.
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 |
RpmException |
|
private |
|
private |
|
private |
|
private |
handle rpm messages like "/etc/testrc saved as /etc/testrc.rpmorig"
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 |
RpmDb::CheckPackageResult zypp::target::rpm::RpmDb::checkPackage | ( | const Pathname & | path_r, |
CheckPackageDetail & | detail_r | ||
) |
Check signature of rpm file on disk (legacy version returning CHK_OK if file is unsigned, like 'rpm -K')
path_r | which file to check |
detail_r | Return detailed rpm log messages |
RpmDb::CheckPackageResult zypp::target::rpm::RpmDb::checkPackage | ( | const Pathname & | path_r | ) |
RpmDb::CheckPackageResult zypp::target::rpm::RpmDb::checkPackageSignature | ( | const Pathname & | path_r, |
RpmDb::CheckPackageDetail & | detail_r | ||
) |
Check signature of rpm file on disk (strict check returning CHK_NOSIG if file is unsigned).
path_r | which file to check |
detail_r | Return detailed rpm log messages |
void zypp::target::rpm::RpmDb::installPackage | ( | const Pathname & | filename, |
RpmInstFlags | flags = RPMINST_NONE |
||
) |
install rpm package
filename | file to install |
flags | which rpm options to use |
RpmException |
void zypp::target::rpm::RpmDb::installPackage | ( | const Pathname & | filename, |
RpmInstFlags | flags, | ||
RpmPostTransCollector * | postTransCollector_r | ||
) |
void zypp::target::rpm::RpmDb::removePackage | ( | const std::string & | name_r, |
RpmInstFlags | flags = RPMINST_NONE |
||
) |
remove rpm package
name_r | Name of the rpm package to remove. |
iflags | which rpm options to use |
RpmException |
void zypp::target::rpm::RpmDb::removePackage | ( | Package::constPtr | package, |
RpmInstFlags | flags = RPMINST_NONE |
||
) |
void zypp::target::rpm::RpmDb::removePackage | ( | const std::string & | name_r, |
RpmInstFlags | flags, | ||
RpmPostTransCollector * | postTransCollector_r | ||
) |
void zypp::target::rpm::RpmDb::removePackage | ( | Package::constPtr | package, |
RpmInstFlags | flags, | ||
RpmPostTransCollector * | postTransCollector_r | ||
) |
int zypp::target::rpm::RpmDb::runposttrans | ( | const Pathname & | filename_r, |
std::function< void(const std::string &)> | output_r | ||
) |
|
inline |
bool zypp::target::rpm::RpmDb::backupPackage | ( | const std::string & | packageName | ) |
create tar.gz of all changed files in a Package
packageName | name of the Package to backup |
void zypp::target::rpm::RpmDb::setBackupPath | ( | const Pathname & | path | ) |
set path where package backups are stored
|
inline |
|
virtual |
Dump debug info.
Reimplemented from zypp::base::ReferenceCounted.
|
protected |
|
protected |
|
protected |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |