Repository uygulama paketlerinin tutulduğu, paketlerin güncellendiği merkezi bir paket yönetim deposudur. Bu repository’lere internet üzerinden ulaşılabileceği gibi lokalimizde de bulundurup sunucumuza paketleri buradan kurup update geçebiliriz. Ayrıca lokalimize kurduğumuz bu repositoryi üzerindeki sunucunun kullandığı gibi ftp veya http üzerinden başka makinalarında kullanmasını sağlayabiliriz. Linux sunucularda installation CD’sinin içinde birçok paket bulunmaktadır. Bu CD’yi mount edip lokal repo oluşturulabilir veya web üzerinden public bir repo indirilerek de offline repository oluşturulabilinir.
YUM (YellowDog Updater, Modified)
CentOS ve türevlerinde rpm paketlerini yönetmek için paket yöneticisi olarak yum kullanılır. yum ile paketlerin dependencyleriyle uğraşmadan istenilen paket yüklenip update edilebilir. Versiyon ve kernel güncellemeleri de yum üzerinden yapılır. Şimdi bir kaç komut ile yum kullanımına örnekler vereceğim sonrasında ise hem installation CD’si ile hem de internet üzerinden repo indirerek lokalimize repositoryler oluşturacağım. İlk olarak paket yüklemeye bakalım. Vim editörünü yüklemek için yum install vim komutu kullanılır. Bu komut sonrasında yum paket yöneticisi repodaki vim paketini ve gerekli olan dependecyleri bulur ve yükler. Ayrıca -y parametresi ile confirmation yapmadan direk olarak paketin yüklenmesi sağlanabilir.
Resim -1
Paketin dependencyleri ile birlikte komple kaldırılması için de yum remove komutu kullanılır.
Resim – 2
yum update komutu ile de istenen paket update edilebilir ya da paket ismi belirtmeden bütün sistemi update edebilirsiniz.
Resim – 3
yum search komutu ile de repoda istenen paketler aranabilir.
Resim -4
yum info komutu ile de yüklemeden önce paket hakkında bilgi alınabilir.
Resim – 5
Ayrıca kullanışlı olan bir diğer kullanım ise bir konfigürasyon dosyasının hangi pakete ait olduğunu yum provides komutu ile bulabiliyor olmamızdır.
Resim – 6
yum paket yüklemeden önce /etc/yum.repos.d/ directorysindeki repoları kontrol eder. Burada .repo uzantılı repoları tanımlayan dosyalar vardır. Ayrıca bir dosyanın içinde birden çok repoda olabilir.
Bir repoyu sunucuya tanıtmak için aşağıdaki özelliklerde .repo uzantılı bir dosyaya eklenmelidir.
– Repository id = her repo için unique bir id vardır. Genellikle o repoyu tanımlayacak bir sözcüktür.
– Name = herkes tarafından anlaşılması için repoyu belirten açıklayıcıdır
– Baseurl = repodata’yı gösteren URL’dir.
– Enabled = reponun kullanılacağını veya kullanılmayacağını belirtir
– Gpgcheck = Gpg signature kontrolü yapması için kullanılır.
– Gpgkey = Gpgkey’i gösteren URL’dir.
Şimdi de installation CD’mizi takıp kendi repo file’imizi oluşturabiliriz.
Resim – 7
CD’yi takıp mount ettikten sonra Packages directorysi altında rpm paketlerini görebiliriz. Şimdi de “/etc/yum.repos.d” altına rhel.repo isimli bir dosya oluşturup. CD’mizi repo olarak göstereceğim.
[root@server-1 ~]# cat /etc/yum.repos.d/rhel.repo
[rhel]
name=rhel
baseurl=file:///mnt/repo
enabled=1
gpgcheck=0
Resim – 8
Gördüğünüz gibi yum repolist komutu ile repomuzdaki 5099 paketi görebiliriz. Şimdi de public bir repoyu lokalimize indirip http üzerinden erişmeyi sağlayalım. İlk olarak httpd paketini kurup servisi başlatıyoruz. Paket kurulumundan sonra web browser üzerinden ip adresimizi girerek default web page’i çağırıp kontrolü yapabiliriz.
[root@server-1 ~]# yum -y install httpd
[root@server-1 ~]# systemctl start httpd
[root@server-1 ~]# systemctl enable httpd
Public repo olarak remi reposunu seçtim. Burdaki php 5.6 reposunu indireceğim. Bunun için remiphp56.repo isminde bir dosya oluşturdum. Repoya baseurl veya mirrorlist ile ulaşabilirsiniz. Ben göstermek için ikisini de yazdım. Sonrasında yum clean all komutu ile cache’i temizleyip yum repolist ile yeni repomuzu görebiliriz.
[root@server-1 ~]# cat /etc/yum.repos.d/remiphp56.repo
[remi-php56]
name=Remi’s PHP 5.6 RPM repository for Enterprise Linux 7 – $basearch
baseurl=http://rpms.remirepo.net/enterprise/7/php56/$basearch/
#mirrorlist=http://cdn.remirepo.net/enterprise/7/php56/mirror
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi
yum repolist çıktısı aşağıdaki gibidir. Gördüğünüz gibi remi-php56 id’li repoda 429 tane paket mevcut.
Resim – 9
Sonrasında reposync komutu ile remi-php56’teki rpm’leri lokalimize indiriyoruz. HTTP üzerinden servis edeceğim için /var/www/html/ directorysimi downloadpath gösterdim. Sonrasında da reposync komutu ile rpmleri bu dizine inmiş olacak.
Resim – 10
İndirmiş olduğum rpmlerden repo oluşturmak için createrepo ve yum-utils paketlerine ihtiyacım var onları da yüklüyorum.
[root@server-1 ~]# yum -y install createrepo yum-utils
Sonrasında da createrepo komutu ile “/var/www/html/remiphp56/” dizin altına repositoryimizi oluşturuyoruz.
Resim – 11
Sonrasında da httpd servisini restart edip repomuza erişebiliriz.
Resim -12
Client sunucumuzda da repo dosyamızı aşağıdaki gibi oluşturup yum repolist komutunu çalıştırdığımızda lokaldeki sunucudan paketleri gördüğünü görüyoruz.
[root@server-2 ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=local remi php 56 reposu
baseurl=http://192.168.100.211/remi-php56
enabled=1
gpgcheck=0
Resim – 13
Reposync komutu crontaba eklenip güncel repolar düzenli olarak indirilir ve createrepo –update komutu ile lokal repolarımızı güncel tutabiliriz. Bu işlemler public olarak yayınlanan bütün repolar için kullanılabilir. Red Hat Enterprise Linux veya Oracle Linux’un repoları subscription ile çekildiği için farklı bir konfigürasyon gerekiyor ama ihtiyaç olan çoğu paketi açık repolardan bulabilirsiniz.
Özetlemek gerekirse ilk olarak basitçe yum komutlarından başlayıp installation CD’sinden repo oluşturduktan sonra public bir repoyu internetten indirip lokalimizde bir repository oluşturduk ve client makinamıza bu repoyu gösterip paketleri burdan kurmasını sağladık.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: Linux, OpenSource, YUM, Repository, RPM, Centos, RHEL, RedHat RemiPHP5.6, Local Repository,Yum komutları,Yum nedir