Repositori perangkat lunak biasanya digunakan melalui internet dan dapat diakses oleh banyak pengguna di seluruh dunia. Namun, Anda dapat membuat repositori lokal Anda sendiri di server lokal dan menggunakannya sebagai pengguna tunggal, atau mengizinkan akses ke mesin lain di LAN Anda menggunakan server web atau FTP.
Keuntungan membuat repositori lokal adalah Anda tidak memerlukan koneksi internet untuk menginstal paket perangkat lunak atau pembaruan. Manfaat lainnya tentu saja kecepatan download. Karena paket diunduh melalui jaringan lokal, pembaruan berjalan dengan cepat.
Yellowdog Updater, Modified (YUM) atau Dandified YUM (DNF) adalah manajer paket perangkat lunak yang mengelola distribusi Linux berbasis RPM. Dengan YUM atau DNF, Anda dapat menginstal dan memperbarui grup komputer tanpa harus memperbarui setiap RPM secara manual.
Pada artikel ini, saya akan menjelaskan cara mengatur repositori YUM/DNF berbasis Apache lokal di Red Hat Enterprise Linux (RHEL) 8, menggunakan DVD instalasi atau file ISO. Saya juga akan menunjukkan cara menemukan dan menginstal paket perangkat lunak pada mesin RHEL 8 klien menggunakan server web Apache. Kami akan membahas proses yang sama untuk NGINX dan FTP di artikel mendatang.
[Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis.]
Prasyarat
Anda perlu menyiapkan dua sistem Red Hat Enterprise Linux 8:satu server repo lokal dan satu mesin klien yang akan menggunakan repositori lokal dari server lokal. Hasilnya akan terlihat seperti ini:
-
Server Repositori Lokal:RHEL 8 [10.0.0.10]
-
Mesin Klien Lokal:RHEL 8 [10.0.0.11]
-
DVD instalasi RHEL 8
-
Server web Apache
Buat repositori Anda
Membuat repositori Anda melibatkan sejumlah langkah. Mari kita telusuri mereka.
Langkah 1:Pasang media Red Hat Enterprise Linux 8
Pertama, mount media lokal (DVD, USB stick, dll.) yang berisi Red Hat Enterprise Linux 8. Gunakan DVD instalasi:
$ sudo mount /dev/cdrom /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
Atau pasang gambar ISO:
$ sudo mount -o loop rhel-8.0-x86_64-dvd.iso /mnt
Langkah 2:Buat repositori YUM lokal dari media yang dipasang
Pindahkan file repo yang ada di /etc/yum.repos.d
:
$ sudo mv /etc/yum.repos.d/*.repo /tmp/
Dari titik ini, lebih baik jika kita melanjutkan sebagai pengguna root. Beralih ke pengguna super dengan su
perintah.
Selanjutnya, buat direktori untuk repo:
# mkdir /local_repo
Gunakan direktori ini dengan Nginx atau Apache untuk menyajikan file melalui LAN.
Buat file konfigurasi repositori lokal baru, local-dvdrom.repo
, di bawah /etc/yum.repos.d
direktori:
# touch /etc/yum.repos.d/local-dvdrom.repo
# chmod u+rw,g+r,o+r /etc/yum.repos.d/local-dvdrom.repo
Langkah 3:Salin konten media ke direktori lokal
Salin file ISO secara lokal di bawah /local_repo
direktori:
# cd /mnt
# tar cvf - . | (cd /local_repo/; tar xvf -)
Tunggu hingga file disalin, lalu verifikasi bahwa file telah disalin menggunakan:
# ls -l /local_repo/
total 56
dr-xr-xr-x. 4 root root 38 Apr 4 2019 AppStream
dr-xr-xr-x. 4 root root 38 Apr 4 2019 BaseOS
dr-xr-xr-x. 3 root root 18 Apr 4 2019 EFI
-r--r--r--. 1 root root 8266 Mar 1 2019 EULA
-r--r--r--. 1 root root 1455 Apr 4 2019 extra_files.json
-r--r--r--. 1 root root 18092 Mar 1 2019 GPL
dr-xr-xr-x. 3 root root 76 Apr 4 2019 images
dr-xr-xr-x. 2 root root 256 Apr 4 2019 isolinux
-r--r--r--. 1 root root 103 Apr 4 2019 media.repo
-r--r--r--. 1 root root 1669 Mar 1 2019 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root 5134 Mar 1 2019 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root 1796 Apr 4 2019 TRANS.TBL
Langkah 4:Konfigurasi repositori YUM/DNF lokal
Edit file konfigurasi repo yang kita buat sebelumnya:
# vim /etc/yum.repos.d/local-dvdrom.repo
Tempelkan konfigurasi ini ke dalamnya:
[LocalRepo_BaseOS]
name=LocalRepo_BaseOS
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LocalRepo_AppStream]
name=LocalRepo_AppStream
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Instal paket yang diperlukan untuk membuat, mengonfigurasi, dan mengelola repositori lokal:
# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream 94 MB/s | 5.3 MB 00:00
LocalRepo_BaseOS 97 MB/s | 2.2 MB 00:00
repo id repo name status
LocalRepo_AppStream LocalRepo_AppStream 4,672
LocalRepo_BaseOS LocalRepo_BaseOS 1,658
# yum install createrepo yum-utils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:02:33 ago on Sat 05 Oct 2019 09:52:46 PM UTC.
Package dnf-utils-4.0.2.2-3.el8.noarch is already installed.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
createrepo_c x86_64 0.11.0-1.el8 LocalRepo_AppStream 76 k
Installing dependencies:
createrepo_c-libs x86_64 0.11.0-1.el8 LocalRepo_AppStream 101 k
drpm x86_64 0.3.0-14.el8 LocalRepo_AppStream 71 k
Transaction Summary
================================================================================
Install 3 Packages
Total size: 249 k
Installed size: 556 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : drpm-0.3.0-14.el8.x86_64 1/3
Installing : createrepo_c-libs-0.11.0-1.el8.x86_64 2/3
Installing : createrepo_c-0.11.0-1.el8.x86_64 3/3
Running scriptlet: createrepo_c-0.11.0-1.el8.x86_64 3/3
Verifying : createrepo_c-0.11.0-1.el8.x86_64 1/3
Verifying : createrepo_c-libs-0.11.0-1.el8.x86_64 2/3
Verifying : drpm-0.3.0-14.el8.x86_64 3/3
Installed products updated.
Installed:
createrepo_c-0.11.0-1.el8.x86_64 createrepo_c-libs-0.11.0-1.el8.x86_64
drpm-0.3.0-14.el8.x86_64
Complete!
Terakhir, jalankan createrepo
perintah:
# createrepo /local_repo/
Directory walk started
Directory walk done - 6647 packages
Temporary output repo path: /local_repo/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished
Langkah 5:Uji dan verifikasi repositori lokal Anda
Pada langkah ini, Anda membersihkan file repositori sementara dan memverifikasi bahwa repositori lokal diaktifkan:
# yum clean all
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
12 files removed
# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream 120 MB/s | 5.3 MB 00:00
LocalRepo_BaseOS 103 MB/s | 2.2 MB 00:00
repo id repo name status
LocalRepo_AppStream LocalRepo_AppStream 4,672
LocalRepo_BaseOS LocalRepo_BaseOS 1,658
Verifikasi bahwa repositori lokal telah dibuat:
# ls /local_repo/repodata/
26617821a5263fb13c7a49cc5e2d0b979b926eb17b9b4ed0b7df624e04c272f2-other.sqlite.bz2
5626e6dd41648dc6395def6889f4cc0e7f1006bb7d7eca748c9abd4c67fa5b9b-other.xml.gz
6290a72e46a90f98896c14f7664440de10c798d158ce0afe5f15a9f3896b7824-primary.xml.gz
a5c265589796231ed91b8b25a0473d05915bf62496495a004d321d042b26360c-filelists.sqlite.bz2
c8b51f43bdaa4f14cd5b083851cef1068e9284fa6557eb4552ba2ae22e7f72d5-primary.sqlite.bz2
ed21f77d28e263df02739a4bd55eb7247ffd0531c871bfe677d4b205dbffd5e8-filelists.xml.gz
repomd.xml
Anda dapat melihat bahwa repositori lokal menghasilkan file, jadi semuanya baik-baik saja saat ini.
Jika Anda membaca perintah di atas dengan cermat, Anda akan melihat pesan peringatan, This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register
. Jika Anda ingin menyembunyikan atau mencegah pesan ini saat menjalankan dnf
atau yum
perintah kemudian edit file /etc/yum/pluginconf.d/subscription-manager.conf
:
# vim /etc/yum/pluginconf.d/subscription-manager.conf
dan ubah parameter enabled=1
ke enabled=0
:
[main]
enabled=0
Siapkan server web Apache Anda
Seperti yang saya sebutkan sebelumnya, artikel ini mencakup pengaturan repositori Anda sendiri menggunakan server web Apache. Mari kita mulai menginstal dan mengonfigurasi Apache untuk melayani repo Anda.
Instal Apache
Untuk menginstal httpd
Paket (Apache) menggunakan YUM:
# yum install httpd
Last metadata expiration check: 3:38:03 ago on Sun 06 Oct 2019 09:51:22 AM UTC.
Dependencies resolved.
=========================================================================================
Package Arch Version Repository Size
=========================================================================================
Installing:
httpd x86_64 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 1.4 M
Installing dependencies:
apr x86_64 1.6.3-9.el8 LocalRepo_AppStream 125 k
apr-util x86_64 1.6.1-6.el8 LocalRepo_AppStream 105 k
httpd-filesystem noarch 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 34 k
httpd-tools x86_64 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 101 k
mod_http2 x86_64 1.11.3-1.module+el8+2443+605475b7 LocalRepo_AppStream 156 k
mailcap noarch 2.1.48-3.el8 LocalRepo_BaseOS 39 k
redhat-logos-httpd noarch 80.7-1.el8 LocalRepo_BaseOS 25 k
Installing weak dependencies:
apr-util-bdb x86_64 1.6.1-6.el8 LocalRepo_AppStream 25 k
apr-util-openssl x86_64 1.6.1-6.el8 LocalRepo_AppStream 27 k
Enabling module streams:
httpd 2.4
Transaction Summary
=========================================================================================
Install 10 Packages
Total download size: 2.0 M
Installed size: 5.5 M
Is this ok [y/N]:
Konfigurasikan Apache untuk memulai otomatis saat boot
Setelah Apache diinstal, mulai dan aktifkan httpd
service untuk memulai otomatis saat boot dan memverifikasi statusnya menggunakan perintah berikut:
# systemctl start httpd
# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disa>
Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 22s ago
Main PID: 16880 (httpd)
Tasks: 213 (limit: 2348)
Memory: 7.6M
CGroup: /system.slice/httpd.service
├─16880 /usr/sbin/httpd -DFOREGROUND
├─16881 /usr/sbin/httpd -DFOREGROUND
├─16883 /usr/sbin/httpd -DFOREGROUND
├─16884 /usr/sbin/httpd -DFOREGROUND
└─16885 /usr/sbin/httpd -DFOREGROUND
Oct 06 10:15:47 server systemd[1]: Starting Apache HTTP Server...
Oct 06 10:15:47 httpd[16880]: AH00558: httpd: Could not reliably determine the>
Oct 06 10:15:47 server httpd[16880]: Server configured, listening on: port 80
Oct 06 10:15:47 server systemd[1]: Started The Apache HTTP Server.
Konfigurasikan firewall
Selanjutnya, konfigurasikan firewall agar Apache dapat dijangkau:
# firewall-cmd --zone=public --permanent --add-service=http
success
# firewall-cmd --zone=public --permanent --add-service=https
success
# firewall-cmd --reload
success
Verifikasi bahwa Apache aktif dan berjalan
Sekarang Anda dapat memverifikasi bahwa server Apache Anda aktif dan berjalan dengan membuka localhost
URL di browser web Anda. Halaman web Apache default http://localhost/
harus ditampilkan.
Konfigurasi Apache
Untuk mengkonfigurasi Apache, buka file konfigurasi:
# vim /etc/httpd/conf/httpd.conf
Saat dibuka, temukan DocumentRoot
baris dan ubah menjadi:
DocumentRoot "/local_repo"
Kemudian ubah /var/www/http
bagian direktori:
<Directory "/local_repo">
Options All Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Uji dan bersihkan
Sekarang, mulai layanan Apache lagi dan uji statusnya:
# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disab>
Active: active (running) since Sun 2019-10-06 14:06:34 UTC; 7s ago
Docs: man:httpd.service(8)
Main PID: 5402 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 11528)
Memory: 39.3M
CGroup: /system.slice/httpd.service
├─5402 /usr/sbin/httpd -DFOREGROUND
├─5403 /usr/sbin/httpd -DFOREGROUND
├─5404 /usr/sbin/httpd -DFOREGROUND
├─5405 /usr/sbin/httpd -DFOREGROUND
└─5406 /usr/sbin/httpd -DFOREGROUND
Oct 06 14:06:34 server systemd[1]: Starting The Apache HTTP Server...
Oct 06 14:06:34 server httpd[5402]: AH00558: httpd: Could not reliably determine the ser>
Oct 06 14:06:34 server httpd[5402]: Server configured, listening on: port 80
Oct 06 14:06:34 server systemd[1]: Started The Apache HTTP Server.
Semuanya baik. Hapus halaman selamat datang sehingga Anda dapat menyajikan file repo:
# rm -rf /etc/httpd/conf.d/welcome.conf
Sekarang, uji httpd
dan mulai ulang Apache:
# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
# systemctl restart httpd
Ubah izin dan setel SELinux
Lanjutkan konfigurasi keamanan dengan mengubah izin pada local_repo
direktori dan mengkonfigurasi SELinux. Untuk mengubah izin:
# setfacl -R -m u:httpd:rwx /local_repo/
Kemudian, periksa apakah SELinux menerapkan:
# getenforce
Enforcing
Jika Enforcing
, ketik:
# chcon -Rt httpd_sys_content_t /local_repo/
Jika SELinux tidak disetel ke Enforcing, maka file tidak akan ditayangkan dari repo.
# setenforce enforcing
Dan buat perubahan permanen dengan mengedit file /etc/sysconfig/selinux dan atur nilai berikut:
SELINUX=enforcing
Siapkan klien
Sekarang, untuk mengonfigurasi repositori mesin klien Red Hat Enterprise Linux 8.
Tambahkan repo
Pada mesin klien, tambahkan repo lokal dari server ke konfigurasi YUM klien:
$ sudo vim /etc/yum.repos.d/local-rhel8.repo
Kemudian rekatkan konfigurasi berikut (pastikan untuk mengubah alamat IP server sesuai dengan pengaturan Anda):
[LocalServerRepo]
name=LocalServerRepo
enabled=1
gpgcheck=0
baseurl=[http://](http://10.0.0.10/)[**10.0.0.10**](http://10.0.0.10/)[/](http://10.0.0.10/)
Uji repo
Uji LocalServerRepo
dengan menginstal paket. Misalnya:
$ sudo yum install mc
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:01:42 ago on Sun 06 Oct 2019 02:14:03 PM UTC.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mc x86_64 1:4.8.19-9.el8 LocalServerRepo 1.9 M
Transaction Summary
================================================================================
Install 1 Package
Total download size: 1.9 M
Installed size: 6.8 M
Is this ok [y/N]: y
Downloading Packages:
mc-4.8.19-9.el8.x86_64.rpm 34 MB/s | 1.9 MB 00:00
--------------------------------------------------------------------------------
Total 32 MB/s | 1.9 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : mc-1:4.8.19-9.el8.x86_64 1/1
Running scriptlet: mc-1:4.8.19-9.el8.x86_64 1/1
Verifying : mc-1:4.8.19-9.el8.x86_64 1/1
Installed products updated.
Installed:
mc-1:4.8.19-9.el8.x86_64
Complete!
Itu hebat! Semuanya bekerja seperti yang diharapkan. Anda sekarang memiliki repositori YUM/DNF lokal berbasis Apache di Red Hat Enterprise Linux 8, menggunakan DVD instalasi atau file ISO.