Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

คลัง (repositories) มาตรฐาน (ทางการ) ของ RHEL/CentOS มีแพ็กเกจพื้นฐานจำนวนน้อยที่ไม่ได้มีเวอร์ชันล่าสุดของโปรแกรมเสมอไป อย่างไรก็ตาม สามารถใช้ third-party public หรือ private repositories เพื่อติดตั้งโปรแกรมใหม่ใน Red Hat Enterprise Linux, CentOS, Oracle Linux และ Scientific Linux Remi และ EPEL เป็น third-party repositories ที่นิยมที่สุด ในบทความนี้ เราจะดูวิธีติดตั้ง จัดการ และใช้ additional repositories กับตัวจัดการแพ็กเกจ yum (dnf) ใน CentOS

Repository คือที่เก็บแพ็กเกจซอฟต์แวร์ RPM สำหรับ Linux ที่อัปเดตได้ ตัวจัดการแพ็กเกจต่างๆ อาจใช้ network repositories เพื่อติดตั้งและอัปเดตโปรแกรม

วิธีเปิดใช้งาน EPEL และ Remi Repository ใน CentOS?

เมื่อติดตั้ง OS (ในตัวอย่างคือ CentOS 7) basic repositories จะติดตั้งโดยค่าเริ่มต้น สามารถดูรายการได้ด้วยคำสั่ง:

yum repolist

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

เห็นในภาพมี 3 repositories ติดตั้งในระบบ — base, extras, updates เพียงพอสำหรับเริ่มติดตั้งซอฟต์แวร์พื้นฐานและ additional repositories

มาดูวิธีติดตั้ง extra repositories ใน CentOS

EPEL อาจเป็น repository ยอดนิยมที่สุดวันนี้

EPEL (Extra Packages for Enterprise Linux) เป็นโครงการ repository เปิดและฟรีจากทีม Fedora มีแพ็กเกจซอฟต์แวร์เพิ่มเติมคุณภาพสูงสำหรับ Linux distros คลังนี้โฮสต์แพ็กเกจจำนวนมากตั้งแต่ FTP servers ไปจนถึง PHP และเครื่องมือ system monitoring นี่คือ repository ยอดนิยมที่สุด สังเกตว่า EPEL packages ไม่ขัดแย้งกับ native CentOS/RHEL packages และไม่แทนที่พวกมัน

ติดตั้ง EPEL ใน CentOS 7 ได้ง่ายมาก (ไม่เหมือน CentOS 6) ด้วย RPM package (วิธีง่ายที่สุดเพิ่ม repo ใหม่):

yum install epel-release

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

หลังติดตั้ง repository จะปรากฏใน repo list ทันทีโดยไม่ต้องทำอะไร (ไม่ต้อง clear yum cache)

เพื่อติดตั้ง Remi repository บน CentOS ให้รันคำสั่ง:

rpm -ivh https://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Remi เป็นอีก repository ยอดนิยมสำหรับ CentOS มีเวอร์ชัน PHP และ MySQL ล่าสุด สร้างโดย Remi Collet เพื่อใช้ repository นี้ EPEL repo ต้องเปิดใช้งานใน OS ของคุณ โปรดทราบว่าแพ็กเกจบางส่วนอาจขัดแย้งกับแพ็กเกจจาก basic repos

หากไม่มี RPM package สำหรับ repository ที่ต้องการ สามารถเพิ่มได้ด้วยการสร้างไฟล์ config .repo ใน /etc/yum.repos.d เอง (ดูในส่วนถัดไป)

เพื่อทราบว่าแพ็กเกจติดตั้งจาก repository ไหน สามารถแสดงรายการแพ็กเกจทั้งหมด:

yum list installed

เห็นได้ว่าแต่ละแพ็กเกจมีข้อมูล repository ที่ติดตั้งมา (มี base, update, epel และ anaconda repos ในภาพ)

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

สามารถแสดงรายการแพ็กเกจที่พร้อมติดตั้งใน repo เฉพาะ:

yum repo-pkgs epel list

ไฟล์การกำหนดค่า Repository (*.repo)

ไฟล์กำหนดค่า repository ทั้งหมดอยู่ใน /etc/yum.repos.d/ และมี extension *.repo ไฟล์ config ทั่วไปมีพารามิเตอร์ดังนี้:

  • name — ชื่อ repository
  • baseurl — ลิงก์ไปยัง repository (อาจเป็น ftp://address, https://address, https://address หรือ file://address สำหรับ local repo)
  • enabled – ใช้ repo นี้หรือไม่: 1 — เปิดใช้งาน, 0 — ปิดใช้งาน;
  • async – ใช้การดาวน์โหลดแพ็กเกจแบบขนานหรือไม่ (auto/on/off)
  • gpgcheck – ตรวจสอบ GPG หรือไม่ (1 — ตรวจสอบ)
  • gpgkey — ลิงก์ไปยัง GPG key
  • exclude — รายการแพ็กเกจที่ исклюช
  • includepkgs — รายการแพ็กเกจที่รวม
  • mirrorlist – รายการ mirror ของ repository

ไฟล์ repo ขนาดเล็กที่สุดอาจเป็นแบบนี้:

[rep_name] name=rep_name baseurl=rep_url 

ตัวอย่าง หลังจากติดตั้ง REMI repository ไฟล์ config Remi (remi-*.repo) จะปรากฏในไดเรกทอรี repository

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

เห็นได้ว่า Remi มีไฟล์ config แยกสำหรับแต่ละ PHP version ต้อง enable PHP version ที่ต้องการผ่าน config file เช่น ผมจะติดตั้ง PHP 7.3 จึง enable repo นั้น (ระบุ enabled=1 ใน remi-php73.repo):

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

สามารถเชื่อมต่อ repository แบบ manual ได้ สร้างไฟล์ config repository ใน /etc/yum.repos.d/ มาเพิ่ม MariaDB repo

nano /etc/yum.repos.d/mariadb.repo

เพิ่มข้อมูลจากนักพัฒนาแพ็กเกจ MariaDB:

[mariadb] name = MariaDB baseurl = https://yum.mariadb.org/10.4/centos73-amd64/ gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1

วิธีปิดใช้งาน Repository ใน CentOS?

เพื่อปิดใช้งานหนึ่งใน repositories ที่ติดตั้งไว้ เพียงระบุ enabled=0 ในไฟล์ config ของมัน

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

จากนั้น clean yum cache:

yum clean all

และสร้างใหม่:

yum makecache

หลังจากนั้น remi-php73 repo จะไม่ถูกใช้ตอนติดตั้งหรืออัปเดตแพ็กเกจ

หากไม่ต้องการใช้ repository เพียงแค่คำสั่ง install/update ปัจจุบัน สามารถปิดในคำสั่ง yum ได้ เช่น:

yum update --disablerepo=epel

ในตัวอย่างนี้ เราปิด EPEL และอัปเดตแพ็กเกจที่ติดตั้งอยู่

สามารถปิด repositories ที่ไม่ต้องการชั่วคราวได้ เช่น อัปเดตแพ็กเกจเฉพาะจาก MariaDB repository:

yum update --disablerepo "*" --enablerepo=mariadb

เพื่อปิดหรือลบ repos ใช้ yum-config-manager ที่มากับ yum-utils tools

ติดตั้ง yum-utils:

yum -y install yum-utils

ปิด repository เช่น remi:

yum-config-manager --disable remi

เพื่อลบ repository อย่างสมบูรณ์ ต้องลบไฟล์ config ของมันและอัปเดต yum cache

วิธีตรวจสอบ Repo สำหรับ Package Updates ที่พร้อมใช้งาน?

สามารถตรวจสอบ repository เฉพาะสำหรับ package update ที่พร้อมใช้งาน

yum check-update --disablerepo "*" --enablerepo=mariadb

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

ดังนั้น คุณสามารถจัดการ repos ที่เชื่อมต่อบนเซิร์ฟเวอร์ได้ โปรดทราบว่า repositories ต่างๆ อาจมีแพ็กเกจเหมือนกัน และ version conflicts อาจเกิดระหว่างอัปเดต จึงควรเปิดใช้งานเฉพาะ repositories ที่ทำงานจริง

Third-Party Repositories ยอดนิยมสำหรับ CentOS และ RHEL

MariaDB repo ตามชื่อมีแพ็กเกจ MariaDB สร้างโดยนักพัฒนา MariaDB รองรับและอัปเดตตลอด

เพื่อติดตั้ง repository นี้ สร้างไฟล์ .repo ด้วยเนื้อหา:

[mariadb] name = MariaDB baseurl = https://yum.mariadb.org/10.4/centos73-amd64/ gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1

เหมือนกัน Nginx มีแพ็กเกจเกี่ยวกับ nginx HTTPD server

เพื่อติดตั้ง nginx repo สร้างไฟล์ .repo และเพิ่มข้อความ:

[nginx-stable] name=nginx stable repo baseurl=https://nginx.org/packages/CentOS/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key

รายการ repositories นี้เพียงพอสำหรับ configure LAMP stack กับ nginx เป็น front-end server

รายการนี้อาจเพียงพอสำหรับผู้ใช้เกือบทุกคน แต่ผมจะให้ตัวอย่างเพิ่ม

Webtatic รองรับโดยผู้เชี่ยวชาญจำนวนจำกัด ส่วนใหญ่คือ Andy Thompson มีแพ็กเกจ PHP แต่ดังน้อยกว่า Remi เนื่องจากเวอร์ชัน PHP ล่าสุดใน repo นี้เป็น 7.2 ณ เวลาเขียนบทความ

yum repo-pkgs webtatic list | grep php7

mod_php71w.x86_64 7.1.31-1.w7 webtatic mod_php72w.x86_64 7.2.21-1.w7 webtatic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ php72w-tidy.x86_64 7.2.21-1.w7 webtatic php72w-xml.x86_64 7.2.21-1.w7 webtatic php72w-xmlrpc.x86_64 7.2.21-1.w7 webtatic

เพื่อเปิดใช้งาน repository ติดตั้ง RPM package:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

MySQL คือสิ่งที่ผมอยากเตือน ไม่ได้วางไว้กับ popular ones เพราะคิดว่า MySQL เป็น database server สูญเสียตำแหน่ง มักติดตั้ง MariaDB แทน แต่หากใครอยากติดตั้ง MySQL สามารถเปิด repo นี้ได้ เช่น ต้องการติดตั้ง mysql 5.7:

ดาวน์โหลดแพ็กเกจ:

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

และติดตั้ง:

rpm -Uvh mysql57-community-release-el7-9.noarch.rpm

หลังติดตั้ง สามารถติดตั้ง MySQL ได้:

วิธีติดตั้งและกำหนดค่า Repositories ใน CentOS/RHEL

ในบทความนี้ เราได้แสดงบางด้านของการจัดการ repository ใน CentOS และศึกษา repositories ที่มีประโยชน์บางส่วน