Oracle Linux Deposu olarak yerel PostgreSQL deposu oluşturmak

Ali Orhun Akkirman - Oct 27 '22 - - Dev Community

Yerel Oracle Linux deposu oluşturabilmek için öncelikle "/etc/yum.repos.d" altında "repoid"'si tanımlı olmalıdır.

Repo oluşturmak için altyapı paketi

Repo senkronize etmek için aşağıdaki paketin kurulu olduğundan emin olunmalı.

dnf install -y dnf-utils
Enter fullscreen mode Exit fullscreen mode

Sistemde tanımlı repo oluşturabilme

RepoID ekli olan OracleLinux'un mevcut repoları dışında bir repo eklenmesi gerekiyorsa herhangi bir makineye eklendiği gibi eklenmesi gerekmektedir. Bunun için örneğin PostgreSQL reposu ekleyebilmek için aşağıdaki komut kullanılarak gerekli imzalar hazırlanır.

dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y
yum module reset postgresql -y
yum module enable postgresql:13 -y
Enter fullscreen mode Exit fullscreen mode

PostgreSQL sürümlerine göre ayrı ayrı repolarda tutulduğu için 13 kurulması gerekiyorsa enable edilmesi gerekecektir.

PostgreSQL özelinde, normal repo kullanımlarında repo id'lerini bulabilmek için aşağıdaki komut kullanılabilir.

cat /etc/yum.repos.d/pgdg-redhat-all.repo  | grep "\["
Enter fullscreen mode Exit fullscreen mode

Örnek olarak "[pgdg13]" çıktısını kullanacağız.

Repoların yerel repo olarak indirilebilmesinin sağlanması

Daha önce farklı bir repo indirilmiş ise o klasöre veya yeni yönlendirilmesi gereken repolar var ise aşağıdaki gibi klasör oluşturularak repo adresi belirlenir.

mkdir -p /repodata/repos/postgresql
Enter fullscreen mode Exit fullscreen mode

Bu klasör altında senkronizasyon işleminin yapılması için ise aşağıdaki komut çalıştırılmalı

/usr/bin/reposync --newest-only --download-metadata --refresh --repoid=pgdg13 -p /repodata/repos/postgresql
Enter fullscreen mode Exit fullscreen mode

Sunucu üzerinden hizmet verilmesi

Bu adımdan sonra en son bağlanma işlemi yapılması gerekecek. Bu adımda daha önceden bir web sayfası hizmeti var ise o hizmet ile aynı adresten yayın yapılması gerekecektir. Bu bağlama işlemi çalışan sisteme aktarılması için gereklidir.

mkdir -p /var/www/html/repo/postgresql/pgdg13
ln -s /repodata/repos/postgresql/pgdg13/ /var/www/html/repo/postgresql/pgdg13/x86_64
mkdir /repodata/repos/logs
Enter fullscreen mode Exit fullscreen mode

Düzenli olarak çalıştırılması

Aşağıdaki betik yardımı ile belirlenecek aralıklarda senkronizasyon yapılması sağlanacaktır. /repodata/repos/scripts/repo_sync.sh dosyası olarak kayıt edilebilir

#!/bin/bash

LOG_FILE=/repodata/repos/logs/repo_sync_$(date +%Y.%m.%d).log

find /repodata/repos/logs/repo_sync* -mtime +5 -delete; >> $LOG_FILE 2>&1

/usr/bin/reposync --newest-only --download-metadata --refresh --repoid=pgdg13 -p /repodata/repos/postgresql >> $LOG_FILE 2>&1
Enter fullscreen mode Exit fullscreen mode

Düzenli aralıklarla çalışması için ise (örneğin her gece 01:00'de)

chmod u+x /repodata/repos/scripts/repo_sync.sh
0 1 * * * /repodata/repos/scripts/repo_sync.sh > /dev/null 2>&1
Enter fullscreen mode Exit fullscreen mode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .