ค้นหาเว็บไซต์

4 วิธีในการปิดใช้งาน/ล็อคการอัปเดตแพ็คเกจบางอย่างโดยใช้คำสั่ง Yum


ตัวจัดการแพ็คเกจ คือซอฟต์แวร์ที่อนุญาตให้ผู้ใช้ติดตั้งซอฟต์แวร์ใหม่ อัปเกรดระบบ หรืออัปเดตซอฟต์แวร์เฉพาะใดๆ และสิ่งต่างๆ ดังกล่าว ในกรณีของระบบที่ใช้ Linux ซึ่งซอฟต์แวร์ตัวหนึ่งมีการพึ่งพาจำนวนมากซึ่งจำเป็นต้องมีอยู่ในระบบเพื่อการติดตั้งซอฟต์แวร์นั้นโดยสมบูรณ์ ซอฟต์แวร์ตัวจัดการแพ็คเกจที่เหมือนกับซอฟต์แวร์ดังกล่าวจะกลายเป็นเครื่องมือที่จำเป็นอย่างมากในทุกระบบ

Linux Distribution แต่ละรายการมาพร้อมกับตัวจัดการแพ็คเกจเริ่มต้นสำหรับฟังก์ชันการทำงานที่ระบุไว้ข้างต้น แต่ฟังก์ชันที่พบมากที่สุดทั้งหมดนี้คือ: yum บนระบบ RHEL และ Fedora (ซึ่งปัจจุบันถูกแทนที่ด้วย DNF จาก Fedora 22+ เป็นต้นไป) และ apt จาก Debian

หากคุณกำลังมองหาเครื่องมือ APT เพื่อบล็อกหรือปิดใช้งานการอัปเดตแพ็คเกจบางอย่าง คุณควรอ่านบทความนี้

Dnf หรือ Danified yum กำลังแทนที่ yum ในระบบ Fedora ซึ่งเป็นระบบอื่นในรายการของเรา หากสำรวจอย่างถูกต้อง Package Managers เหล่านี้สามารถใช้เพื่อฟังก์ชันต่อไปนี้:

  1. การติดตั้งซอฟต์แวร์ใหม่จากพื้นที่เก็บข้อมูล
  2. แก้ไขการขึ้นต่อกันของซอฟต์แวร์โดยการติดตั้งการขึ้นต่อกันเหล่านั้นก่อนที่จะติดตั้งซอฟต์แวร์
  3. รักษาฐานข้อมูลการพึ่งพาของแต่ละซอฟต์แวร์
  4. ดาวน์เกรดเวอร์ชันของซอฟต์แวร์ที่มีอยู่
  5. การอัพเกรดเวอร์ชันเคอร์เนล
  6. รายการแพ็คเกจพร้อมสำหรับการติดตั้ง

เราได้กล่าวถึงบทความโดยละเอียดเกี่ยวกับตัวจัดการแพ็คเกจแต่ละตัวแยกกันพร้อมตัวอย่างที่เป็นประโยชน์ คุณควรอ่านบทความเหล่านี้เพื่อควบคุมและจัดการการจัดการแพ็คเกจใน Linux ของคุณ

อ่านเพิ่มเติม:

  1. เชี่ยวชาญคำสั่ง Yum ด้วยตัวอย่างการใช้งานจริง 20 ตัวอย่าง
  2. 27 คำสั่ง DNF เพื่อจัดการแพ็คเกจใน Fedora เวอร์ชัน 22+
  3. เรียนรู้ 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 หากคุณมีลูกเล่นอื่น ๆ ในการทำสิ่งเดียวกันคุณสามารถแสดงความคิดเห็นกับเราได้