packages:rpm
This is an old revision of the document!
Table of Contents
RPM Package
rpm5 to rpm.org rpm porting status
rpm5 to rpm.org rpm package update
All of the below is fully automated within the package using Obsoletes/Provides/Requires
or postinst/posttrans
scriptlets.
RPM database format change
Quoting https://fedoraproject.org/wiki/Changes/Sqlite_Rpmdb
The current rpm database implementation is based on Berkeley DB 5.x, a version which is unmaintained upstream for several years now. Berkeley DB 6.x is license incompatible so moving to that is not an option. In addition, the existing rpmdb implementation is notoriously unreliable as it's not transactional and has no other means to detect inconsistencies either. Changing to a more sustainable database implementation is long overdue. We propose to change the default rpmdb format to the new sqlite based implementation.
- The rpm database format changes from Berkeley DB to SQLite, conversion is automatic after rpm package set update. Backup of the old database is saved as
/var/lib/rpm.rpmbackup-VERSION-RELEASE
, using version and release of the package that is installed (not the old one). Ex. if the old package was rpm-5.4.15-58 and the new one is rpm-4.16.1.2-1, the backup of the database will be in/var/lib/rpm.rpmbackup-4.16.1.2-1
. - Users who have a particular need to stay on Berkeley DB backend can still do so by overriding the configuration manually (eg.
echo '%_db_backend bdb' >> /etc/rpm/macros
) before updating rpm package. - It is also possible to convert back bu overriding
_db_backend
and running ''rpm --rebuilddb''.
Staying with or converting back to Berkeley DB backend is discouraged as rpm upstream plans to reduce Berkeley DB support to read-only.
Repackage support
Repackage is not supported by rpm.org rpm, so do not rely on it.
Python bindings
While rpm5 provided only Python 2 bindings, rpm.org rpm provides only Python 3 bindings.
SNMP support
rpm.org rpm does not support hrmib integration.
Porting packages from rpm5 to rpm.org rpm
- Suggests are now Recommends,
Obsoletes
/Provides
must follow the package naming rules, they cannot contain characters like()
or/
, what means packages cannot depend on path/files or same virtual dependency names (ex.perl::Foo
is not accepted).- Minor spec syntax changes
- Spaces around operators in dependencies are required (ex. BuildRequires: foo-devel
- Bare words are no longer supported, please use “…” (ex.
%if “%{_lib}” != “lib”
) - Symlinks are always packaged with 777 mode and using
%attr()
for symlink is reported as warning Requires(triggerpostun)
is not supported, replace withRequires(postun)
.
Spec development
- rpm.org rpm generates
rpmlib(ShortCircuited)
dependencies when package is build using--short-circuit
option. To disable that add%disable_short_circuited_deps 0
to ~/.rpmmacros - Patch is now run with
–fuzz=0
option, add%_default_patch_fuzz 2
to~/.rpmmacros
to keep previous behavior. - Package file checksum digests are now SHA256 based, if you need to keep previous behaviour, define
%_source_filedigest_algorithm 1
and%_binary_filedigest_algorithm 1
into~/.rpmmacros
packages/rpm.1614096552.txt.gz · Last modified: 2021-02-23 17:09 by baggins