4 วิธีในการปิดใช้งาน/ล็อคการอัปเดตแพ็คเกจบางอย่างโดยใช้คำสั่ง Yum
ตัวจัดการแพ็คเกจ คือซอฟต์แวร์ที่อนุญาตให้ผู้ใช้ติดตั้งซอฟต์แวร์ใหม่ อัปเกรดระบบ หรืออัปเดตซอฟต์แวร์เฉพาะใดๆ และสิ่งต่างๆ ดังกล่าว ในกรณีของระบบที่ใช้ Linux ซึ่งซอฟต์แวร์ตัวหนึ่งมีการพึ่งพาจำนวนมากซึ่งจำเป็นต้องมีอยู่ในระบบเพื่อการติดตั้งซอฟต์แวร์นั้นโดยสมบูรณ์ ซอฟต์แวร์ตัวจัดการแพ็คเกจที่เหมือนกับซอฟต์แวร์ดังกล่าวจะกลายเป็นเครื่องมือที่จำเป็นอย่างมากในทุกระบบ
Linux Distribution แต่ละรายการมาพร้อมกับตัวจัดการแพ็คเกจเริ่มต้นสำหรับฟังก์ชันการทำงานที่ระบุไว้ข้างต้น แต่ฟังก์ชันที่พบมากที่สุดทั้งหมดนี้คือ: yum บนระบบ RHEL และ Fedora (ซึ่งปัจจุบันถูกแทนที่ด้วย DNF จาก Fedora 22+ เป็นต้นไป) และ apt จาก Debian
หากคุณกำลังมองหาเครื่องมือ APT เพื่อบล็อกหรือปิดใช้งานการอัปเดตแพ็คเกจบางอย่าง คุณควรอ่านบทความนี้
Dnf หรือ Danified yum กำลังแทนที่ yum ในระบบ Fedora ซึ่งเป็นระบบอื่นในรายการของเรา หากสำรวจอย่างถูกต้อง Package Managers เหล่านี้สามารถใช้เพื่อฟังก์ชันต่อไปนี้:
- การติดตั้งซอฟต์แวร์ใหม่จากพื้นที่เก็บข้อมูล
- แก้ไขการขึ้นต่อกันของซอฟต์แวร์โดยการติดตั้งการขึ้นต่อกันเหล่านั้นก่อนที่จะติดตั้งซอฟต์แวร์
- รักษาฐานข้อมูลการพึ่งพาของแต่ละซอฟต์แวร์
- ดาวน์เกรดเวอร์ชันของซอฟต์แวร์ที่มีอยู่
- การอัพเกรดเวอร์ชันเคอร์เนล
- รายการแพ็คเกจพร้อมสำหรับการติดตั้ง
เราได้กล่าวถึงบทความโดยละเอียดเกี่ยวกับตัวจัดการแพ็คเกจแต่ละตัวแยกกันพร้อมตัวอย่างที่เป็นประโยชน์ คุณควรอ่านบทความเหล่านี้เพื่อควบคุมและจัดการการจัดการแพ็คเกจใน Linux ของคุณ
อ่านเพิ่มเติม:
- เชี่ยวชาญคำสั่ง Yum ด้วยตัวอย่างการใช้งานจริง 20 ตัวอย่าง
- 27 คำสั่ง DNF เพื่อจัดการแพ็คเกจใน Fedora เวอร์ชัน 22+
- เรียนรู้ 25 คำสั่ง APT เพื่อจัดการแพ็คเกจ Ubuntu
ในบทความ เราจะดูวิธีล็อก/ปิดใช้งานการอัปเดตแพ็คเกจบางอย่างโดยใช้ตัวจัดการแพ็คเกจ Yum ในระบบ RHEL/CentOS และระบบ Fedora (ใช้ได้จนถึง Fedora 21 ซึ่งเป็นเวอร์ชัน Fedora ที่ใหม่กว่าในภายหลัง จัดส่งโดยมี dnf เป็นตัวจัดการแพ็คเกจเริ่มต้น)
ปิดการใช้งาน/ล็อคการอัปเดตแพ็คเกจโดยใช้ Yum
Yellow dog Updater, Modified (yum) เป็นเครื่องมือจัดการแพ็คเกจในการแจกแจงแบบ RedHat เช่น CentOS และ Fedora กลยุทธ์ต่างๆ ที่ใช้ในการล็อค/ปิดใช้งานการอัปเดตแพ็คเกจโดยใช้ Yum มีดังต่อไปนี้:
1. ปิดการใช้งานแพ็คเกจอย่างถาวรสำหรับการติดตั้งหรืออัปเดต
1. เปิดและแก้ไขไฟล์ yum.conf
ซึ่งอยู่ใน /etc/yum.conf หรือใน /etc/ ยำ/yum.conf
ดูเหมือนว่าด้านล่าง:
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
...
ที่นี่ หากต้องการแยกแพ็คเกจบางอย่างออกจากการติดตั้งหรือการอัปเกรด คุณเพียงแค่ต้องเพิ่มตัวแปรแยกพร้อมกับชื่อของแพ็คเกจที่คุณต้องการแยกออก ตัวอย่างเช่น หากฉันต้องการแยกแพ็คเกจ python-3
ทั้งหมดไม่ให้ได้รับการอัปเดต ฉันจะเพิ่มบรรทัดต่อไปนี้ต่อท้าย yum.conf
:
exclude=python-3*
หากต้องการยกเว้นมากกว่าหนึ่งแพ็คเกจ ให้แยกชื่อตามช่องว่าง
exclude=httpd php
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=python-3* [Exclude Single Package]
exclude=httpd php [Exclude Multiple Packages]
...
หมายเหตุ: หากต้องการรวมแพ็คเกจเหล่านี้ โดยไม่สนใจรายการใน yum.conf
ให้ใช้ “-disableexcludes ” และตั้งค่า เป็น all|main|repoid โดยที่ 'main' คือค่าที่ป้อนใน yum.conf และ 'repoid' คือรายการที่มีการยกเว้นระบุไว้ในไดเร็กทอรี repos.d ดังที่อธิบายในภายหลัง
ตอนนี้เรามาลองติดตั้งหรืออัปเดตแพ็คเกจที่ระบุแล้วดูว่าคำสั่ง yum จะปิดการใช้งานการติดตั้งหรืออัปเดต
# yum install httpd php
Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
* base: mirror.nbrc.ac.in
* epel: mirror.wanxp.id
* extras: mirror.nbrc.ac.in
* updates: mirror.nbrc.ac.in
Nothing to do
# yum update httpd php
Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
* base: mirror.nbrc.ac.in
* epel: mirror.wanxp.id
* extras: mirror.nbrc.ac.in
* updates: mirror.nbrc.ac.in
No packages marked for update
2. ปิดการใช้งานแพ็คเกจชั่วคราวสำหรับการติดตั้งหรืออัปเดต
2. ข้างต้นเป็นวิธีแก้ปัญหาแบบถาวรในการยกเว้นแพ็คเกจ เนื่องจากหากไฟล์ไม่ได้รับการแก้ไข แพ็คเกจนั้นจะไม่ได้รับการอัปเดต นี่เป็นวิธีแก้ปัญหาชั่วคราวสำหรับสิ่งนี้ด้วย เมื่อคุณทำการอัพเดตใดๆ ให้ใช้สวิตช์ -x
ในคำสั่ง yum เพื่อยกเว้นแพ็คเกจที่คุณไม่ต้องการอัพเดต เช่น:
yum -x python-3 update
คำสั่งดังกล่าวจะอัปเดตแพ็คเกจทั้งหมดที่มีการอัปเดต ยกเว้น python-3
บนระบบของคุณ
ที่นี่ หากต้องการแยกหลายแพ็คเกจ ให้ใช้ -x
หลายครั้ง หรือแยกชื่อแพ็คเกจด้วย ','
ในสวิตช์ตัวเดียว
yum -x httpd -x php update
OR
yum -x httpd,php update
3. การใช้สวิตช์ --exclude
ทำงานเหมือนกับ -x เพียงแค่ต้องแทนที่ -x ด้วย >–แยก และส่ง ','
รายการชื่อแพ็คเกจที่แยกจากกัน
yum --exclude httpd,php
3. ปิดการใช้งานการอัปเดตแพ็คเกจโดยใช้พื้นที่เก็บข้อมูล
4. สำหรับแพ็คเกจใดๆ ที่ติดตั้งจากแหล่งภายนอกผ่านการเพิ่มพื้นที่เก็บข้อมูล จะมีวิธีอื่นในการหยุดการอัปเกรดในอนาคต ซึ่งสามารถทำได้โดยการแก้ไขไฟล์ .repo
ซึ่งสร้างขึ้นใน /etc/yum/repos.d/ หรือ /etc/yum.repos.d< ไดเร็กทอรี
เพิ่มตัวเลือกยกเว้นด้วยชื่อแพ็กเกจใน repo ชอบ: หากต้องการแยกแพ็คเกจใด ๆ ที่ระบุว่า wine ออกจาก epel repo ให้เพิ่มบรรทัดต่อไปนี้ในไฟล์ epel.repo
:
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=wine
ตอนนี้ให้ลองอัปเดตแพ็คเกจ wine คุณจะได้รับข้อผิดพลาดดังที่แสดงด้านล่าง:
# yum update wine
Loaded plugins: fastestmirror, langpacks, versionlock
epel/x86_64/metalink | 5.6 kB 00:00
Loading mirror speeds from cached hostfile
* base: mirror.nbrc.ac.in
* epel: mirror.wanxp.id
* extras: mirror.nbrc.ac.in
* updates: mirror.nbrc.ac.in
No Match for argument: wine
No package wine available.
No packages marked for update
4. ปิดการใช้งานการอัปเดตแพ็คเกจโดยใช้ตัวเลือก versionlock
5. อีกวิธีหนึ่งใน yum ในการมาสก์เวอร์ชันของแพ็คเกจใดๆ ซึ่งทำให้ไม่สามารถอัปเกรดได้ คือการใช้ตัวเลือก versionlock
ของ yum แต่ในการดำเนินการนี้ คุณ ต้องติดตั้งแพ็คเกจ yum-plugin-versionlock บนระบบ
yum -y install yum-versionlock
ตัวอย่างเช่น หากต้องการล็อกเวอร์ชันของแพ็กเกจโดยพูดว่า httpd เป็น 2.4.6 เท่านั้น ให้เขียนคำสั่งต่อไปนี้เป็น root
yum versionlock add httpd
ผลลัพธ์ตัวอย่าง
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1
หากต้องการดูแพ็คเกจที่ถูกล็อค ให้ใช้คำสั่งต่อไปนี้เพื่อแสดงรายการแพ็คเกจที่ถูกล็อคเวอร์ชัน
yum versionlock list httpd
ผลลัพธ์ตัวอย่าง
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done
บทสรุป
เคล็ดลับเล็กๆ น้อยๆ เหล่านี้จะช่วยคุณในการปิดใช้งาน/ล็อกการอัปเดตแพ็กเกจโดยใช้ตัวจัดการแพ็กเกจ yum หากคุณมีลูกเล่นอื่น ๆ ในการทำสิ่งเดียวกันคุณสามารถแสดงความคิดเห็นกับเราได้