RedHat firması tarafından üretilen ve şu an bir çok unix dağıtımında kullanılan paket yönetim sistemidir.
Paket Nedir?
Paket yazılım ya da güncelleme ve bunlara ait konfigürasyon dosyalarıdır.Unix dağıtımlarındaki tüm yazılımlar bir veya birden fazla paketten oluşur.Yüklemek istediğiniz paketlerin işletim sisteminize ve mimarinize uygun olduğundan emin olun.Paket yükleme işi gerçekten çalışan sistemlerde ciddiye alınması gereken bir iştir benim önerim sisteminiz düzgün çalışıyorsa güvenlik paketleri dışında paket yüklememeniz yönündedir.
Yükleyeceğiniz her paketin README dosyasını incelemeniz gerekir, örneğin çalışma saatlerinde kapatamıyacağınız bir iş istasyonuna network arabirimi ile ilgili bir paket yüklediniz ve bu paket yüklemeden sonra sistemin restart edilmesini istiyor olabilir bu durumda bu paketin yüklenmesini uygun bir zamanda yapmalısınız. Yükleyeceğiniz paket ile ilgili bu tür bilgileri araştırmadan yüklemeniz doğru olmaz.
RPM'in 4 önemli fonksiyonu ve bunlara ait opsiyonlar vardır,
- install
- uninstall
- query
- verify
Peki bu rpm paketlerini nerden bulabiliriz?
- internet üzerindeki bir çok rpm repository üzerinden(Önemli Not)
- RedHat Enterprise Linux cd / dvd sinden(Bu paketlere güvenebilirsiniz)
- Red Hat in kendi sayfasından(Bu paketlere güvenebilirsiniz)
İhtiyaç duyduğunuz paketleri güvenilir yerlerden indirmeye dikkat edin, Örneğin flash paketi diye kurduğunuz bir yazılım flash paketi yanında sisteminiz üzerinde çok önemli güvenlik açıkları oluşturulabilir. Bu sebepten aşağıda bahsettiği paket signatures konusunu dikkatle okuyun,
RPM isimlendirmeleri:
rpm paketlerinin isimlendirmesini aşağıdaki örnek üzerinden inceleyelim.
"flash-0.4.3-9.i386.rpm"
Paket ismi "flash"
Versiyon "0.4.3″
Release "9″
Mimari "i386″
Installing(Kurulum)
Aşağıda flash-0.4.3-9.i386.rpm paketin yüklenmesi gösteriliyor, sisteme root kullanıcısı olarak girin.
#rpm -ivh flash-0.4.3-9.i386.rpm
Aşağıdaki komutda paket yüklemelerinde kullanılabilir, yukarıdakinden farkı paket varsa update eder yoksa kurulum yapar.
#rpm -Uvh flash-0.4.3-9.i386.rpm
Aynı paketi tekrar yüklemeye çalışırsak bu paketin daha önce yüklü olduğuna dair bir mesaj alırız, biz yinede bu paketi tekrar yüklemek istersek (kurulu olana rpm paketi bozulmuş ya da orjinal konfigürasyonuna ihtiyaç duyabiliriz).
Aşağıdaki gibi –replacepkgs opsiyonuyla paketi yüklememiz gerekiyor;
#rpm -ivh –replacepkgs flash-0.4.3-9.i386.rpm
Bazı durumlarda yükleyeceğimiz bir pakete ait bir dosya daha önce kurulan bir paket tarafından kurulmuşsa "conflict" içeren bir hata alırız, biz yine de bu paketi yüklemek istersek –replacefiles;
#rpm -ivh –replacefiles flash-0.4.3-9.i386.rpm
Bazı paketlerin çalışabilmesi için farklı paketlere ihtiyaç duyabilir buna "package dependencies" denir, bu tür paket yüklemelerinde "failed dependencies: XXX is needed by YYY Suggested resolutions:XXX…rpm" şeklinde bir hata alınır,YYY yüklemek istediğimiz paket, XXX ise bağımlı olduğumuz paket ismidir.
#rpm -ivh YYY.rpm
error:failed dependencies: XXX is needed by YYY Suggested resolutions:XXX…rpm
Aşağıda önce YYY paketinin ihtiyacı olan XXX paketi sonra YYY paketi kuruluyor,
#rpm -ivh XXX.rpm YYY.rpm
Uninstalling(Kaldırma)
Aşağıda daha önce kurduğumuz flash-0.4.3-9.i386.rpm paketini -e opsiyonuyla kaldırıyoruz, dikkat ederseniz paketin tam ismi yerine paketin sadece isim kısmını kullanıyoruz;
#rpm -e flash
Bazı durumlarda kaldıracağımız bir paket başka bir paket tarafından kullanılıyor olabilir, bu durumda –nodeps opsiyonunu kullanabilirsiniz fakat bunu dikkatli yapmalısınız çünkü kaldırdığınız pakete ihtiyaç duyan diğer paketler çalışmayabilir,
Upgrading(Güncelleme)
Paket kurulumuna çok benzer,
#rpm -Uvh flash-0.4.3-9.i386.rpm
Önemli Not: Kernel yüklemelerinde -U opsiyonunu kesinlikle kullanmayın,
Bazı durumlarda bir paketin eski versiyonunu kullanmak zorunda kalabiliriz, bu durumda;
#rpm -Uvh –oldpackage flash-0.2.3-9.i386.rpm
Freshing(Tazeleme)
Upgrading(Güncelleme) işlemine benzer fakat upgrading işleminde paket varsa upgrade edilir yoksa yeniden yüklenir, burdaysa paket varsa güncellenir yoksa birşey yapılmaz;
#rpm -Fvh flash-0.4.3-9.i386.rpm
Elimizdeki tüm paketleri tazalemek/güncellemek için;
#rpm -Fvh *.rpm
Querying(Sorgulama)
/var/lib/rpm/ dizini altında sistemimize yüklü tüm paketlerin bilgisi bulunur,
Yüklü bir paketi sorgulamak için;
#rpm -q paket_ismi
#rpm -q flash
Aşağıdaki opsiyonları sorgulama yaparken -q opsiyonuyla beraber kullanabilirsiniz.
-a tüm yüklenmiş paketleri sorgular,
#rpm -qa //tüm yüklenmiş paketleri sorgular,
#rpm -qa paket_ismi //yüklenmiş paketler arasında paket_ismi nin olup olmadığını sorgular,
-f <dosya_ismi> bir dosyanın hangi rpm paketiyle yüklendiğini sorgular,
#rpm -f /bin/bash //bash dosyası hangi rpm paketiyle geldiğini gösterir, bash-3.2-24.el5 //benim sistemde yukarıdaki komutun çıktısı aşağıdaki gibidir,
-p <paket_dosyası> //kaldırılmış paketleri lister,
-i paket bilgisini gösterir,
# rpm -qi emacs
Name : emacs Relocations: (not relocatable)
Version : 21.4 Vendor: Red Hat, Inc.
Release : 20.el5 Build Date: Tue 11 Dec 2007 03:15:16 AM EET
Install Date: Mon 04 Jan 2010 10:32:46 AM EET Build Host: hs20-bc1-5.build.redhat.com
Group : Applications/Editors Source RPM: emacs-21.4-20.el5.src.rpm
Size : 6726113 License: GPL
Signature : DSA/SHA1, Fri 21 Dec 2007 01:13:49 PM EET, Key ID 5326810137017186
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://www.gnu.org/software/emacs/
Summary : GNU Emacs text editor
Description :
Emacs is a powerful, customizable, self-documenting, modeless text
editor. Emacs contains special code editing features, a scripting
language (elisp), and the capability to read mail, news, and more
without leaving the editor.
This package provides an emacs binary with support for X windows.
-l paketin içerdiği dosyaları listeler,
# rpm -ql emacs //emacs paketine ait dosyaları listeler,
/usr/bin/emacs
/usr/bin/emacs-21.4
/usr/bin/emacs-21.4-x
/usr/bin/emacs-x
/usr/libexec/emacs
/usr/libexec/emacs/21.4
/usr/libexec/emacs/21.4/x86_64-redhat-linux-gnu
/usr/libexec/emacs/21.4/x86_64-redhat-linux-gnu/fns-21.4.1-x.el
/usr/share/applications/gnu-emacs.desktop
/usr/share/pixmaps/emacs.png
-s pakete ait dosyaların durumlarını gösterir,
-d paket dosyalarından dökümantasyon için olanları listeler,
#rpm -qd flash
/usr/share/doc/flash-0.4.3/COPYING
/usr/share/doc/flash-0.4.3/README
-c paket dosyalarından konfigürasyon için olanları listeler,
Verifying (Doğrulama)
Paket doğrulama sistemde yüklü olan paketle yüklemek istediğiniz paketin bilgilerini karşılaştırır, bu karşılaştırmada MD5 sum, permissions, type, owner, group bilgileri karşılaştırılır, karşılaştırma sayesinde yüklenen paketin orjinal paket olup olmadığı kontrol edilir,
-V opsiyonu doğrulama için kullanılır,
/bin/bash gibi tek bir dosyayı kontrol etmek için;
#rpm -Vf /bin/bash
Tüm paketleri kontrolü için;
#rpm -Va
Yüklediğiniz bir rpm paketi kontrolü için;
#rpm -Vp flash-0.4.3-9.i386.rpm
Paket Signature (İmza) Kontrolü
Bir paketin doğruluğunu (bozulup bozulmadığını), üzerinde değişiklik yapılıp yapılmadığı sistem güvenliği için önemlidir, bu kontroller için paket signature ları kullanılır;
flash-0.4.3-9.i386.rpm paketinin sadece md5sum kontrolü için aşğıdaki komut çalıştırılır ve sonucunda OK olmalı aksi durumda bu paketi kesinlikle yüklemeyin;
#rpm -K –nosignature flash-0.4.3-9.i386.rpm
flash-0.4.3-9.i386.rpm:md5 OK
Daha ayrıntılı bilgi için aşağıdaki gibi çalıştırılabilir;
#rpm -Kvv –nosignature flash-0.4.3-9.i386.rpm
Fakat md5sum değerinin tutması bir paketi yüklemek için yeterlimidir?, ben md5sum kontrolünü sadece indirme esnasında bir paketin zarar görüp görmediğini denetlemek için kullanıyorum;
Bir Geliştirici oluşturduğu paketi kendi GnuPG key'i ile işaretler, bu bize bu pakete güvenebileceğimizi gösterir,
GnuPG(GNU Privacy Guard) güvenli iletişim için kullanılan bir yazılımdır, GnuPG linux kurulumda yüklenir,
paketleri imzalarına göre yüklemek için Red Hat GPG key lerini sisteme tanıtmanız gerekir bu dosya RHEL DVD sinde bulabilirsiniz, bu dosyayı yüklemek için;
#rpm –import /media/cdrom/rhel/RPM-GPG-KEY-redhat-release
bu dosyayı import etdikten sonra, aşağıdaki gibi bir paketin güvenilirliğini kontrol edebiliriz, dikkat ederseniz sonuç OK,
#rpm -K eclipse-jdt-3.2.1-19.el5.x86_64.rpm
eclipse-jdt-3.2.1-19.el5.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
Paket yönetimi için rpm kullanılacağı gibi yum (Yellowdog Update Manager) ya da Package Manager yazılımıda kullanılabilir, yum kullanımını geniş bir konu olduğu için başka bir yazıda değineceğim,
Package Manager
Package Manager yazılımına terminal ya da console üzerinde "system-config-packages" komutuyla çalıştırılabilir,
genel görünümü aşağıdaki gibidir, bu aracı kullanarak rpm paketlerini yükleyebilir, kaldırabilir ya da listeleyebilirsiniz.
Bununla beraber "yum Repository Nasıl Oluşturulur" yazısında anlatılan kendi repository nizi oluşturuken kullanılan oldukça yararlı bir araçtır.
