Rocky Linux 9'da Paket Spesifik Local Repository Oluşturma
Tags: rockylinux9, postgres, localrepository
Published: 2024-01-20 12:26:30


Bu dokümanda spesifik olarak PostgreSQL-16 kurulumunun local repository üzerinden yapılabilmesi için local repository’nin nasıl oluşturulacağı anlatılmıştır. 

Öncelikle repoların indirilebilmesi ve oluşturulabilmesi için gerekli paketleri yükleyelim.

```console
dnf install -y yum-utils createrepo
```

Şu aşamada PostgreSQL-16 için gerekli tüm bağımlıkları alt bağımlılıklarıyla birlikte `repotrack` komutu ile indirebiliriz.

Ancak indirmek istediğiniz paket yada paketlerin hali hazırda indirilebilir olduğundan emin olun. PostgreSQL'in indirilebilmesi içim repoları sisteme ekleyelim.

```console
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
```

Paket yada paketlerin indirilebilir olduğunu `dnf search paket_ismi` komutuyla öğrenebiliriz.
![search](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s8glb81i4gfpjij7wa8l.png)

Paketimizin indirilebilir olduğunu kontrol ettiğimize göre indirme işlemine başlayabiliriz. 

İndirme işlemini istediğimiz dizin içerisine yapabiliriz eğer `repotrack` komutuna dizin vermezseniz içinde bulunduğunuz dizine RPM paketlerini indirecektir. 

Aşağıdaki komutu kullanarak **/var/www/html/repos/postgres** dizinine `postgresql16-server` için gerekli paketleri indirelim.

```console
repotrack --downloaddir=/var/www/html/repos/postgres postgresql16-server
```

İndirme işleminin ardından indirilen RPM paketlerinin bir repository şeklinde kullanılabilmesi için `createrepo` komutu yardımıyla paketleri repository haline getirelim.

```console
createrepo /var/www/html/repos/postgres
```
![createrepo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htvlzvvafdul8ci4mkpq.png)
Bu işlemden sonra **/var/www/html/repos/postgre** altında repodata isimli klasörün oluştuğu gözlenir.

Artık linux sistemine oluşturduğumuz repository'i tanıtabiliriz. Bunu yapmak için önce eski repo tanımlarını ortadan kaldırmalıyız ki yaptığımız işlemler geçerli olabilsin.

```console
mkdir -p /etc/yum.repos.d/old
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/old/
```
Yukardaki işlemler ile eski tüm repo tanımlarını **/etc/yum.repos.d/old** dizini altına taşıdık. Şimdi kendi repo tanım dosyamızı oluşturalım.

```console
vi /etc/yum.repos.d/local-postgres.repo
```
VI editörü ile girdiğimiz dosyanın içerisine aşağıdaki metni kaydedip çıkalım.

```
[LocalRepository-PostgreSQL16]
name=RL9 - Local PostgreSQL16-Server Repository
metadata_expire=-1
gpgcheck=0
enabled=1
baseurl=file:///var/www/html/repos/postgres
```

Dosyayı `cat` komutu ile okursak çıktısı aşağıdaki gibi olmalı.
![cat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gf48ay3rvd6mo3micpnw.png)

Bu işlemlerin ardından repository'mizin aktif olabilmesi için `dnf` paket yöneticisinin cacheleriniz temizleyip yeniden repo listesini taratmamız gerekmekte. Bunu aşağıdaki komutlar ile yapabiliriz.

```console
dnf clean all
dnf update
```

Repomuzu `dnf repolist` komutu ile görüntüleyelim.
![repolist](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iw4i2xt3ka4bp2v17ob3.png)

Son olarak `postrgesql16-server` kurulumunu local repository üzerinden yaparak yapılan işlemlerin doğruluğunu kontrol edelim.
```console
dnf install postgresql16-server
```
![installation](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60a7r60xiskl4a4yw7aj.png)

Yükleme işlemi başarıyla tamamlandı! Kırmızı kutu içerisindeki alan gerekli tüm paketlerin local repository üzerinden yüklendiğine işaret etmekte.