RPM Nedir?

Paket yöneticisi veya paket yönetim sistemi , bir bilgisayar için bilgisayar programlarını tutarlı bir şekilde yükleme, yükseltme, yapılandırma ve kaldırma sürecini otomatikleştiren bir yazılım araçları koleksiyonudur. Linux dağıtımlarına göre paket yöneticileri değişmektedir.
RPM-YUM-DNF
RPM Paket Yöneticisi ücretsiz ve açık kaynaklı bir paket yönetim sistemidir. RPM adı, .rpm dosya biçimini ve paket yöneticisi programının kendisini ifade eder. RPM, öncelikle Linux dağıtımları için tasarlanmıştı; dosya formatı, Linux Standard Base'in temel paket formatıdır.
Yellowdog Updater, Modified, RPM Paket Yöneticisini kullanarak Linux işletim sistemini çalıştıran bilgisayarlar için ücretsiz ve açık kaynaklı bir komut satırı paket yönetimi yardımcı programıdır.
Dandified Yum; RPM tabanlı dağıtımlar için paket yöneticisidir. Yum'un yeni neslidir. Fedora 18 ile birlikte tanıtılmıştır ve Fedora'nın 22. sürümünden beri öntanımlı paket yöneticisidir.
OS: ORACLE, RHEL, CENTOS
RPM Paket Yöneticisi (rpm)
RPM Paket Yöneticisi (rpm), Red Hat tabanlı (veya türetilmiş) sistemlerdeki yazılım paketlerini yönetmek için gerekli araçtır.
Paketleri Yükleme
En temel işlem, aşağıdakilerle yapılabilecek bir paket kurmaktır. Aşağıdaki görseldeki gibi bir çok global firma artık linux desteği sağlamaktadır.

Burada PACKAGENAME adıdır. Yani yüklemek istediğiniz rpm paketi.
rpm -i PACKAGENAME
Paketleri Yükseltme
Sistemde bir paketin önceki bir sürümü varsa, -U parametresini kullanarak daha yeni bir sürüme yükseltebilirsiniz:
rpm -U PACKAGENAME
PACKAGENAME'İN önceki bir sürümü yüklü değilse, yeni bir kopyası yüklenir.
Her iki işlemde de ayrıntılı bir çıktı elde etmek için -v parametresini (yükleme sırasında daha fazla bilgi gösterilir).
Paket Kaldırma
Yüklü bir paketi kaldırmak için rpm ile birlikte -e parametresini ve ardından kaldırmak istediğiniz paketin adına yazın.
rpm -e wget

Bağımlı Paketleri Kaldırma
Kaldırma işlemi ayrıca bir bağımlılık denetimi de çalıştırır ve ona bağlı olan diğer tüm paketler de kaldırılmadıkça bir paket kaldırılamaz. Bunu yapmaya çalışırsanız, aşağıdaki gibi bir hata mesajı alacaksınız.
rpm -e unzip
hata: Başarısız bağımlılıklar
İşlemi tamamlamak için önce kaldırmak istediğinize bağlı paketleri kaldırmanız gerekir. Aynı anda birden çok paketi kaldırmak için birden çok paket adını rpm aracına iletebilirsiniz.
Paket Bağımlılıklarla Başa Çıkmak
Çoğu zaman, bir paketin amaçlandığı gibi çalışması başkalarına bağlı olabilir. Örneğin, uzak bağlantı aracı dosyalarını açmak için kitaplıklara ihtiyacı olabilir.
rpm, bu bağımlılıkların sisteminizde yüklü olup olmadığını kontrol eder ve yüklü değilse paketi yükleyemez. Bu durumda, rpm neyin eksik olduğunu listeler. Ancak bağımlılıkları kendi başına çözemez.
Aşağıdaki örnekte, kullanıcı teamviewer için bir paket yüklemeye çalıştı, ancak bazı bağımlılıklar eksikti.
rpm -i teamviewer.rpm

Bu bulmak için kullanıcıya kalmış. rpm paketleri karşılık gelen bağımlılıklara sahiptir ve bunları yükler.
Kurulu Paketleri Listeleme
Sisteminizde kurulu tüm paketlerin bir listesini almak için rpm -qa öğesini kullanın. Örneğin:
rpm -qa

Tüm yüklü paketlerin sayısına bakabiliriz.
rpm -qa | wc -l

Belirli bir paketi arayabilirsiniz.
rpm -qa | grep -i nano
rpm -qa | grep -i sudo
Paket Bilgilerini Alma
Yüklü bir paket hakkında sürüm numarası, mimarisi, yükleme tarihi, paketleyicisi, özeti vb. gibi bilgileri almak rpm -qi parametreleri ve ardından paket adını kullanın. Örneğin:
rpm -qi wget

Kurulu Paketleri ve Paket İçeriklerini Listeleme
Kurulu bir paketin içinde hangi dosyaların bulunduğunun bir listesini almak için rpm -ql parametreleri ve ardından paket adını kullanın. Örneğin:
rmp -ql wget

Paket Bilgilerini Alma
Sürüm, mimari, bakımcı, bağımlılıklar ve daha fazlası gibi bir paketi yüklemeden önce hakkında bilgi almak için -qip parametreyi ve ardından RPM dosyasının adını eklemeniz yeterlidir. Örneğin:
rpm -qip teamviewr.rpm

Hangi Paketin Belirli Bir Dosyaya Sahip Olduğunu Bulma
Hangi yüklü paketin bir dosyaya sahip olduğunu bulmak için -qf ve ardından dosyanın tam yolunu kullanın. Örneğin:
rpm -qf /usr/bin/unzip
Paket ve Çekirdek Güncelleme Almasını Engelleme
Sistemi yum aracılığıyla güncellerken çekirdeğin veya diğer paketlerin Linux'ta güncellenmesini nasıl engelleyeceğimize bakalım. Test amaçlı ilk olarak sistemde kurulu olan bir paketi bulup, sonrasında güncelleme sonrası yükseltme alıp almayacağına bakıyorum. Görseldeki gibi openssh server güncelleme sonrası 8.0p1-5'ten 8.0p1-10'a yükselecek. Ancak ben güncellenmesini istemiyorum.
sudo rpm -qa | grep -i openssh-server
sudo yum update | grep -i openssh-server

İlgili konfigürasyon dosyamızı açıyorum.
sudo vi /etc/yum.conf

Bu kısımda, güncelleme almasını istemediğimiz paketleri, başına exclude yazarak ekliyoruz. Sonlarına glob karakter olan asterisk “*” ekleyerek o paket ile ilgili tüm paketleri hariç tutabilirsiniz.
exclude=package package1 package2*

Dosyayı kayıt edip çıkış yapıyorum.
:wq!
İşletim sistemi versiyonlarına göre, paket yöneticileri değişebilir. O yüzden yum ve dnf paket yöneticilerini kullanarak paket yükseltmeye çalışıyorum. İşlemin başarılı olduğunu rahatlıkla görebiliyoruz.
sudo yum install nano
sudo dnf install openssh-server

Son olarak dosyayı tekrar açıp, sadece asterisk “*” ekleyiyorum. Artık sistemde hiç bir paket ve çekirdek güncellenemez hale geliyor.
sudo yum upgrade
