Merhabalar,
Bu makalede, linux sunucularda program veya update yüklemek için sunucu üzerinde bir local repository’nin nasıl oluşturulabileceğine dair bilgiler aktarmak istiyorum. İnternete çıkmasını istemediğiniz linux sunucularınız varsa, bu sunucular üzerinde program yüklemek için local repolar kullanılır.
Local repo kullanım senaryoları, genellikle aşağıdaki maddeler şeklinde olmaktadır.
- ISO dosyasını sunucu üzerine kopyalayıp repo oluşturarak
- ISO dosyasını CD/DVD’ye yazıp sunucu cdrom’una takarak ve repo oluşturarak
- İnternete açık olan ve tüm update’leri kendi üzerinde senkronize eden başka bir merkezi update sunucu oluşturup, diğer sunucularda merkezi update sunucuyu gösteren bir repo oluşturarak
En çok kullanılan modeller bunlar olmaktadır. Elbette ki farklı senaryolar da vardır. Ancak genel olarak bunların bilinmesi yeterli olacaktır.
Bu uygulamayı, tüm linux dağıtımlarında kullanabilirsiniz. Dağıtıma özel bir işlem değildir. Ben bu makalede RedHat 8.5 server kullanacağım.
Biz bu makalede, ilk maddeyi takip ederek işlemlerimizi yapacağız. Diğer senaryolarla ilgili makalelerimi de zaman içinde paylaşacağım.
Şimdi işlemlerimize başlayalım.
ISO dosyasından repository oluşturma
Güvenlik gereği, dış dünyaya erişimi olmayan sunucular için resmi dağıtım sitesinden indireceğiniz bir ISO medyası ile sunucu üzerinde repo oluşturabiliyoruz. Ben bu senaryoyu, genelde eğitim verdiğim sınıflarda uygulamaktayım. Böylece her katılımcının sunucusu, kendi üzerinden program yükleyip kaldırabiliyor ve böylece internet bant genişliğine negatif etkileri de engellemiş oluyoruz.
Öncelikle sunucumuz üzerinde / dizini altında iso adında bir dizin oluşturuyoruz ve RedHat kurulum ISO dosyamızı bu dizine kopyalıyoruz.
mkdir /iso
ls -l iso
ISO dosyamı, bu oluşturduğum dizin içerisine SCP programıyla kopyaladım. Listelendiğini görebiliyorsunuz.
Daha sonra bu ISO dosyamızı mount edeceğimiz bir alan oluşturacağız. Örneğin bu ISO dosyasını mount edeceğimiz, /mnt dizini altında /rhel dizini oluşturalım ve o lokasyona mount edelim. Yani bu lokasyon bizim mount point’imiz olsun.
İlk komutla dizinimizi oluşturuyoruz ve ardından ikinci komutumuzla da ISO dosyamızı /mnt/rhel dizinine mount ediyoruz.
mkdir -p /mnt/rhel
mount -o loop /iso/ rhel-8.5-x86_64-dvd.iso /mnt/rhel
ls -l /mnt/rhel/
Mount işlemi başarılı ve ISO medyamızın içeriğini listeleyebiliyoruz.
Öncelikle /etc/yum.repos.d/ dizininde, ilk kurulumla birlikte gelen repolar varsa ya disable edebilirsiniz ya da tamamen silebilirsiniz. İsterseniz farklı bir lokasyona da alabilirsiniz.
Şimdi sistemde hangi repolar olduğuna bakalım.
yum repolist
ls -l /etc/yum.repos.d/
Benim sunucumda şu an hiçbir repo tanımı yok. Sizde tanımlı repo varsa, az önce de belirttiğim gibi taşıyabilir, disable edebilir ya da silebilirsiniz.
Az önce ISO medyamızı mount etmiştik. O medya içinde media.repo adında bir dosya var. Bu dosyayı öncelikle /etc/yum.repos.d/ altına kopyalayalım. Sonra da dosya izinlerini aşağıdaki gibi değiştirelim.
cp /mnt/rhel/media.repo /etc/yum.repos.d/rhel8dvd.repo
chmod 644 /etc/yum.repos.d/rhel8dvd.repo
Repository adı rhel8dvd.repo olacak şekilde kopyalamayı yaptım. Buradaki isimlendirmeyi de bu reponun local repo ve DVD ya da ISO olduğunu hatırlatacak şekilde seçtim. Şimdi bu kopyaladığımız ve izinlerini belirlediğimiz dosyamızı açıp, bazı eklemeler ve ufak düzenlemeler yapacağız.
Dosyamızın içeriğine bakalım.
cat /etc/yum.repos.d/rhel8dvd.repo
Var olan bu kayıtları aşağıdaki formatta değiştireceğiz.
[InstallMedia-BaseOS]
name=ISO RHEL8.5 Base-OS
enabled=1
gpgcheck=1
baseurl=file:///mnt/rhel/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[InstallMedia-AppStream]
name=ISO RHEL8.5 AppStream
enabled=1
gpgcheck=1
baseurl=file:///mnt/rhel/AppStream
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
nano /etc/yum.repos.d/rhel8dvd.repo
Repo içeriğini bu şekilde düzenledikten sonra dosyayı kaydedip çıkıyoruz.
Şimdi yum cache temizliği yapalım ve yeniden bir cache oluşturalım.
yum clean all
yum repolist
yum makecache
Bakınız dosya içinde tanımlarını yaptığımız yükleme noktaları, repo olarak görünmekte. Artık internet bağlantısı olmasını düşünmediğiniz sunucularda, ISO medyasını kullanarak bu şekilde local repo oluşturup program yüklenmesini sağlayabilirsiniz.
Fakat burada şuna çok dikkat etmek gerekiyor. Biz mount işlemini yaptık ama sunucu reboot edildiğinde ve tekrar açıldığında, ISO dosyamız otomatik mount olacak şekilde gelmeyecek. Dolayısıyla bu local repo’yu kullanamayacaksınız. Hemen örnekle göstereyim.
Sunucuyu reboot edeceğim ve tekrar açıldığında bir program yüklemeye çalışacağım.
shutdown -r now
ls -l /mnt/rhel
ISO dosyamızı buraya mount etmiştik. Gördüğünüz gibi otomatik mount gelmiyor ve içeriği listeleyemiyoruz.
Şimdi açılışta otomatik mount gelmesini sağlamak için /etc/fstab dosyasında bir düzenleme yapmamız gerekiyor. Aşağıdaki komutla, ilgili dosyayı açalım ve en son satıra, verdiğim formatta girişi ekleyelim.
nano /etc/fstab
En alt satıra şu formatta ekleyeceğiz:
/iso/rhel-8.5-x86_64-dvd.iso /mnt/rhel iso9660 loop 0 0
Dosyayı kaydedip çıkış yapalım ve sunucuyu restart edip sonucu görelim.
Sunucu tekrar açıldığında, mount point olarak belirlediğimiz dizini listelemeyi denediğimizde, mount edildiğini görebiliyoruz ve dizin içeriğini de listeleyebiliyoruz.
Şimdi test amaçlı bir program yükleyelim.
yum install nginx -y
Bakınız local olarak tanımladığım repo üzerinden yükleme yapılabiliyor.
İşlemlerimiz başarılı görünüyor.
İlk senaryo olarak, bir ISO medya kullanarak local repo oluşturma işlemlerimiz bunlardan ibarettir.
Yararlı olması dileğiyle.
Yusuf İşleyen