RPM und yum

yum

Alle Versionen von Paket auflisten: yum --show-duplicates list <paket>

Bestsimmte Version installieren: Versionsnummer hinten anhängen. yum install httpd-2.4.6-6

Nach Updates suchen: yum check-update

Paket aus lokaler Datei installieren: yum localinstall paket.rpm

Und von URL: yum install -y https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

dnf

Installierte Dateien von Paket anzeigen: dnf repoquery -l podman

rpmrebuild

Spec aus bestehendem RPM extrahieren: rpmrebuild --spec-only ./specfile --package nmap-7.94-1.x86_64.rpm

Dann kann man das specfile bearbeiten und ein neues Paket draus bauen.

sed -i -e "s/^Requires:\s*python\s*>=\s*3.*/Requires: python3 >= 3.6/g" specfile rpmrebuild --change-spec-whole="cat ./specfile" --package nmap-7.94-1.x86_64.rpm

Interaktives bearbeiten der Specfile, Kurzform: rpmrebuild -ep nmap-7.94-1.x86_64.rpm

RPM-Paket neu bauen / verändern

  • Build-Toolchain installier: dnf install rpmdevtools
  • Builddir anlegen: rpmdev-setuptree
  • Paket mit Sourcen runterladen: dnf download --source compiz-plugins-extra
  • RPM auspacken: rpm -i compiz-plugins-extra-0.8.18-6.fc38.src.rpm
  • Archiv im Builddir auspacken: cd ~/rpmbuild/SOURCES && tar -xvjf rpmbuild/SOURCES/compiz-plugins-extra-v0.8.18.tar.bz2
  • Änderungen machen
  • Neue .bz2 bauen: cd ~/rpmbuild/SOURCES/ && tar -cvjf compiz-plugins-extra-v0.8.18.tar.bz2 compiz-plugins-extra-v0.8.18/
  • Neu bauen und paketieren: cd ~/rpmbuild && rpmbuild -ba SPECS/compiz-plugins-extra.spec
  • Fehlende Dependencies nachinstallieren und nochmal bauen:
morph@fedora rpmbuild]$ rpmbuild -ba SPECS/compiz-plugins-extra.spec 
setting SOURCE_DATE_EPOCH=1674086400
error: Failed build dependencies:
    gtk2-devel is needed by compiz-plugins-extra-1:0.8.18-6.fc38.x86_64
    libjpeg-turbo-devel is needed by compiz-plugins-extra-1:0.8.18-6.fc38.x86_64
    libnotify-devel is needed by compiz-plugins-extra-1:0.8.18-6.fc38.x86_64
[morph@fedora rpmbuild]$ sudo dnf install gtk2-devel libjpeg-turbo-devel libnotify-devel
[...]
  • Pakete liegen dann im RPMS Ordner -> Installation zum testen: sudo dnf install RPMS/x86_64/compiz-plugins-extra-0.8.18-6.fc38.x86_64.rpm

Version von RPM-Paket bzw. Metadaten finden ohne installieren oder auspacken

https://stackoverflow.com/questions/21495717/rpm-version-number-without-installing-it

Taking an example of sbt.rpm, here is how you may want to extract the information. Note that the package filename itself doesn't show the version and release information.

Get full package name:

$ rpm -qp sbt.rpm
sbt-0.12.2-1.noarch

Get NAME, VERSION, RELEASE and ARCHITECTURE separately:

$ rpm -qp --queryformat '%{NAME}' sbt.rpm
sbt

$ rpm -qp --queryformat '%{VERSION}' sbt.rpm
0.12.2

$ rpm -qp --queryformat '%{RELEASE}' sbt.rpm
1

$ rpm -qp --queryformat '%{ARCH}' sbt.rpm
noarch

Get NAME, VERSION, RELEASE and ARCHITECTURE combined:

$ rpm -qp --queryformat '%{NAME}-%{VERSION}-%{RELEASE}-%{ARCH}' sbt.rpm
sbt-0.12.2-1-noarch

Get only NAME, VERSION:

$ rpm -qp --queryformat '%{NAME}-%{VERSION}' sbt.rpm
sbt-0.12.2