4.01.2018

Fedora'da rpm komutu

Bilindiği gibi Fedora, paket yönetiminde RPM (RedHat Package Manager) formatını kullanıyor. Paket yönetiminde dnf gibi çevrim içi ve bağımlılık denetimi yapmadan tekil paketlerin kurulumu ve rpm formatında paket yaratmak için rpm adında bir araç da sunuluyor. Bu aracın kullanımı ile ilgili birkaç anahtara göz atalım.

Diyelim ki elimizde Firefox'un firefox-57.0.1-1.fc26.x86_64.rpm paketi var. Bunu kurmak istiyoruz. Kullanmamız gereken komut
rpm -i firefox-57.0.1-1.fc26.x86_64.rpm
olacak. Ayrıntılı çıktı için -v (verbose) ve paketin açılışı ile ilgili ek bilgiler için -h (hash marks) anahtarları da kullanılabilir. Kurulum aşamasına geçmeden önce paketin imzasının geçerliliğini doğrulamak için -checksig anahtarı kullanılabilir.
rpm -checksig firefox-57.0.1-1.fc26.x86_64.rpm
Bu yöntem dnf gibi çevrim içi paketin bağımlılıklarını kontrol edip yüklemeyecektir. Bunun için kurulu paketin bağımlılıklarını kontrol etmek istersek yapmamız gereken
rpm -qpR firefox-57.0.1-1.fc26.x86_64.rpm
Burada -q (query) paketi sorgulamak için,  -p (capabilities provided) paketin sunduğu özellikleri listelemek için, -R (capabilities this package depends on) paketin bağımlı olduğu özellikleri sorgulamak için eklendi.

Bir paket, bağımlı olduğu diğer paketler kurulmadan kurulamaz. Ama rpm'in -nodeps anahtarını kullanarak paketi bağımlılıklarını görmezden gelerek kurmaya zorlayabiliriz. Bu durumda kurduğumuz paket, bağımlılıklarını sağlamadan yine çalışmayacaktır. Ama bağımlılıkları sonradan sağlamayı isteyerek kurmak istenmesi durumunda gerekebilir.
rpm -ivh -nodeps firefox-57.0.1-1.fc26.x86_64.rpm
Bir paketin sisteminizde kurulu olup olmadığını sorgulamak için
rpm -q firefox
kullanılabilir. Bunun sonucunda paket kurulu değilse
package firefox is not installed
çıktısı verir. Kurulu ise uyan paketin tam adını yazar:
firefox-57.0.1-1.fc26.x86_64.rpm
gibi. Görüldüğü gibi burada paketin sürüm ve platform bilgisi içermeyen adını kullanarak da sorgu yapabiliyoruz. Tab tuşuyla tamamlama da kullanılabiliyor.

"Kurulu" bir paketin tüm içeriğini sorgulamak için ise -ql kullanılabilir.
rpm -ql firefox-57.0.1-1.fc26.x86_64.rpm
Sistemdeki kurulu tüm paketleri sorgulamak için
rpm -qa
Bir paketi yükseltmek (güncellemek) için -U ile birlikte -v (verbose) ve -h (hash marks) anahtarları kullanılabilir:
rpm -Uvh firefox-57.0.1-1.fc26.x86_64.rpm
Bu komut ile güncellenene sürüm ile eski sürüm aynı anda sistemde kalabilir, yenisi ile ilgili bir sorun olursa eskisi kullanılabilir denmiş, denemedim.

Bir paketi kaldırmak için -e (erase) anahtarı kullanılabilir. Paketi bağımlılıklarına bakmaksızın kaldırmak için kaldırmak için ise yine -nodeps anahtarı kullanılabilir.
rpm -evv -nodeps firefox
Sistemde bir sürü dosya var. Bu dosyaların bir tanesinin hangi paketle geldiğini merak ediyoruz. Bunu bulmak için kullanacağımız komut şu:
rpm -qf /usr/lib/libdl.so.2
Sonuç olarak tüm paket ismini döner, aşağıdaki gibi:
glibc-2.25-12.fc26.i686
Kurulu bir paket hakkında ayrıntılı bilgi sorgusu için -qi (query info) kullanılır. Örneğin yukarıda çıkan glibc paketini sorgulayalım.

$ rpm -qi qlibc
Name        : glibc
Version     : 2.25
Release     : 12.fc26
Architecture: x86_64
Install Date: Wed 15 Nov 2017 01:09:18 AM EST
Group       : System Environment/Libraries
Size        : 13990324
License     : LGPLv2+ and LGPLv2+ with exceptions and GPLv2+
Signature   : RSA/SHA256, Wed 11 Oct 2017 12:22:14 PM EDT, Key ID 812a6b4b64dab85d
Source RPM  : glibc-2.25-12.fc26.src.rpm
Build Date  : Wed 11 Oct 2017 09:05:41 AM EDT
Build Host  : buildhw-06.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.gnu.org/software/glibc/
Summary     : The GNU libc libraries
Description :
The glibc package contains standard libraries which are used by
multiple programs on the system. In order to save disk space and
memory, as well as to make upgrading easier, common system code is
kept in one place and shared between programs. This particular package
contains the most important sets of shared libraries: the standard C
library and the standard math library. Without these two libraries, a
Linux system will not function.


Bu kurulu bir paket için sorguydu. Kurulmamış, elimizde rpm uzantılı kurulum dosyası olan bir paket için ayrıntlı bilgi sorgulaması için ise -qip (query info package) kullanılır.

$ rpm -qip firefox-57.0.1-1.fc26.x86_64.rpm
Name        : firefox
Version     : 57.0.1
Release     : 1.fc26
Architecture: x86_64
Install Date: (not installed)
Group       : Unspecified
Size        : 208973671
License     : MPLv1.1 or GPLv2+ or LGPLv2+
Signature   : RSA/SHA256, Fri 01 Dec 2017 02:45:19 AM EST, Key ID 812a6b4b64dab85d
Source RPM  : firefox-57.0.1-1.fc26.src.rpm
Build Date  : Thu 30 Nov 2017 07:54:13 AM EST
Build Host  : buildvm-16.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : https://www.mozilla.org/firefox/
Summary     : Mozilla Firefox Web browser
Description :
Mozilla Firefox is an open-source web browser, designed for standards
compliance, performance and portability.


Bir de bazen bozulan rpm veritabanını tekrar oluşturma bilgisi verilmiş, yazının sonunda görülen referans belgede. O da şöyle:
# cd /var/lib
# rm __db*
# rpm --rebuilddb
# rpmdb_verify Packages
---
[1] https://lintut.com/how-to-use-rpm-command-on-linux/