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
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
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 "\["
Ö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
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
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
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
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