การจัดการซอร์ฟแวร์โดยใช้ Yum
(Managing Software With Yum)

โดย อดิศร  ขาวสังข์
เขียนเมื่อ 5/01/2549
อ้างอิง http://fedora.redhat.com/docs/yum/index.html

เกริ่นนำ
Yum (Yellow dog Updater, Modified) เป็นตัวอัพเดตและ ตัวติดตั้ง/ตัวลบ แพ็กเกจสำหรับระบบ rpm แบบอัตโนมัติ โดย Yum จะคำนวน dependency และหาทางออก (figures out) ในการติดตั้งแพ็กเกจ  โดย Yum จะช่วยให้ง่ายในการดูแลกลุ่มของเมชีนโดยปราศจากการอัพเดตแบบ manual ของแต่ละอันโดยใช้ rpm

คุณสมบัติของ Yum :

  • คลังข้อซอร์ฟแวร์จำนวนมาก (multiple repositories)
  • คอนฟิกได้ง่าย
  • การคำนวณ depency ที่ถูกต้อง
  • ทำงานเร็ว
  • พฤติกรรมที่ลงรอยกันกับ rpm (rpm-consistent behavior)
  • สนับสนุนกลุ่ม comps.xml ที่ประกอบด้วย multiple repository groups
  • อินเตอร์เฟสที่ง่าย
หลีกเลี่ยงการ Login โดยใช้ Root Account
คุณไม่จำเป็นต้อง Login โดยใช้ root account ในการจัดการกับระบบ Fedora คำสั่งทั้งหมดที่จะกล่าวในบทความนี้จะใช้ผ่านคำสั่ง su -c 'command' (substitute user) หลังจากนั้นจะมี prompt ให้ป้อนรหัสผ่าน ก็ให้ทำการป้อนรหัสผ่านของ root เพื่อเป็นการรันคำสั่งดังกล่าวผ่าน root account

1.บทนำ

Additional Resource
คุณลักษณะของยูติลิตี้ yum และออฟชัน ไม่ได้กล่าวไว้ในบทความนี้ ให้อ่าน man pages สำหรับ man(8) และ yum.conf(5) เพื่อเรียนรู้มากกว่านี้ โดยใช้คำสั่ง ดังนี้

man yum
man yum.conf

Resource อื่น ๆ ที่เกี่ยวกับการใช้งาน yum ประกอบด้วย :

Project web site

http://linux.duke.edu/projects/yum/

Users mailing list

https://lists.dulug.duke.edu/mailman/listinfo/yum/

Development mailing list

https://lists.dulug.duke.edu/pipermail/yum-devel/

2.Software Management Concepts

2.1 เกี่ยวกับ Packages

ซอร์ฟแวร์ของ Fedora และ documents อยู่ในรูปของไฟล์ที่เรียกว่า RPM packages โดยแต่ละ package ถูกบีบอัดโดยบรรจุด้วย product information, program files, icons, documents และ management scripts แอพพลิเคชันในการจัดการใช้ไฟล์เหล่านี้ในการค้นหา ติดตั้ง อัพเดตและลบซอร์ฟแวร์  ตัวอย่างเช่น  กระบวนการติดตั้ง Fedora ใช้ packages ที่ถูกจ่ายมากับ Fedora core ในการสร้างหรืออัพเกรดระบบ ตามที่คุณต้องการ

Packages ประกอบด้วย digital signature อีกด้วยเพื่อใช้สำหรับพิสูจน์ source  ยูติลิตี้ในการจัดการซอร์ฟแวร์จะพิสูจน์ digital signature ดังกล่าวนี้โดยใช้ GPG public key  ยูติลิตี้ yum และ rpm จะแชร์ common keying ซึ่งเก็บทั้งหมดของ public key สำหรับ package source ที่ approve แล้ว   ผู้ดูแลระบบจะคอนฟิก approved package source เหล่านี้

2.2 เกี่ยวกับคลังซอร์ฟแวร์ (Repository)

Repository เป็นไดเร็คทอรี่ที่ถูกจัดเตรียมไว้หรือเว็บไซต์ที่บรรจุแพ็กเกจซอร์ฟแวร์และไฟล์อินเด็กซ์   ยูติลิตี้สำหรับการจัดการซอร์ฟแวร์เช่น yum จะหาตำแหน่งของ RPM package โดยอัตโนมัติจาก repository เหล่านี้  วิธีการนี้ทำให้คุณไม่ต้องหาและติดตั้งแอพพลิเคชันหรืออัพเดตโดยแบบ manual คุณอาจจะใช้คำสั่งเดียวในการอัพเดตซอร์ฟแวร์ทั้งหมดหรือค้นหาซอร์ฟแวร์ใหม่ด้วยการกำหนดขอบเขต (criteria)

เครือข่ายของ Server จัดให้มี repository จำนวนมากสำหรับแต่ละเวอร์ชันของ Fedora Core  ยูติลิตี้สำหรับการจัดการซอร์ฟแวร์ใน Fedora Core ได้ถูกคอนฟิกไว้โดยใช้สาม repository ดังนี้ :

Base

The packages that make up a Fedora Core release, as it is on disc

Updates

Updated versions of packages that are provided in Base

Extras

Packages for a large selection of additional software

ผูพัฒนาซอร์ฟแวร์แบบ third-party ยังจัดให้มี repository สำหรับ Fedora Core ของพวกเขาเช่นกัน

คุณอาจจะใช้ package group ที่ถูกจัดให้โดย Fedora repository ในการจัดการชุดแพ็กเกจที่เกี่ยวเนื่องกัน   โดย repository ของ third-party บางรายมีการเพิ่มแพ็กเกจเข้ากับ group เหล่านี้  หรืออาจจะจัดให้มีเพจเกจแบบ additional group

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

2.3 เกี่ยวกับการพึ่งพากัน (Depency)

ไฟล์บางไฟล์ที่ถูกติดตั้งบน Fedora distribution เป็น library ซึ่งอาจจัดจัดให้มี function ต่าง ๆ ต่อ หลายแอพพลิเคชัน  เมื่อแอพพลิเคชันอันหนึ่งต้องการ library แพ็กเกจซึ่งบรรจุ library ดังกล่าวจะเป็น depency  ในการติดตั้งแพ็กเกจอันหนึ่งที่ถูกต้องนั้นอันดับแรก Fedora ต้องสนองความพึ่งพากัน (depency) ของมันก่อน  ข้อมูลของการพึ่งพากัน (depencies information) สำหรับ RPM package อันหนึ่งถูกเก็บไว้ในไฟล์ RPM

ยูติลิตี้ yum ใช้ข้อมูลการพึ่งพากันของแพ็กเกจ (package depency data) ในการทำให้มั่นใจว่าความต้องการทั้งหมดสำหรับแอพพลิเคชันพบได้ในระหว่างการติดตั้ง  โดย yum จะติดตั้งแพ็กเกจสำหรับ depency ใด ๆ ที่ไม่ปรากฎอยู่บนระบบโดยอัตโนมัติ  เมื่อมีความต้องการแอพพลิเคชันใหม่ที่ชน (conflict) กับซอร์ฟแวร์ที่มีอยู่แล้ว yum จะทำการ abort โดยปราศจากการเปลี่ยนแปลงระบบใด ๆ

2.4 ทำความเข้าใจเกี่ยวกับชื่อของแพ็กเกจ

แต่ละ package file มีชื่อที่ยาวแสดงถึงข้อมูลหลายส่วน   ตัวอย่างต่อไปนี้เป็นชื่อของแพ็กเกจ tsclient

tsclient-0.132-6.i386.rpm

ยูติลิตี้การจัดการมักจะอ้างถึงแพ็กเกจเป็นสามรูปแบบ :

  • Package name: tsclient

  • Package name with version and release numbers: tsclient-0.132-6

  • Package name with hardware architecture: tsclient.i386

yum จะจัดบัญชีรายการแพ็กเกจในรูปแบบ name.architecture   ซึ่ง repository มักจะเก็บแพ็กเกจในไดเร็คทอรี่ที่แยกจากกันด้วย architecture  ในแต่ละกรณ ีโครงสร้างของฮาร์ดแวร์จะถูกระบุเป็น minimum type ของ machine ที่ต้องการใช้แพ็กเกจ

i386

Suitable for any current Intel-compatible computer

noarch

Compatible with all computer architectures

ppc

Suitable for PowerPC systems, such as Apple Power Macintosh

x86_64

Suitable for 64-bit Intel-compatible processors, such as Opterons

ซอร์ฟแวร์บางตัวอาจจะกำหนดเป็นแต่ละชนิดของ intel-compatible machine  ซึ่งอาจจะมีการจัดแพ็กเกจเป็นสำหรับ i386, i586, i686 และ x86_64 computer โดยเครื่องอย่างน้อยต้องเป็น Intel Pentium, VIA C3 หรือ compatible CPU อาจจะใช้แพ็กเกจ i586  สำหรับคอมพิวเตอร์ที่เป็น Pentium Pro หรือสูงกว่า หรือรุ่นในปัจจุบันของ AMD chip อาจจะใช้แพ็กเกจ i586

คำสั่งของ yum จะใช้ชื่อแพ็กเกจที่สั้นเพราะเพราะ yum จะเลือกแพ็กเกจที่เป็นปัจจุบันที่นิยมกันโดยอัตโนมัติจาก repository ที่ match กับโครงสร้างของฮาร์ดแวร์ของคอมพิวเตอร์ของคุณ

3.เครื่องมือจัดการซอร์ฟแวร์ใน Fedora Core
ยูติลิตี้ yum เป็นระบบการจัดการซอร์ฟแวร์ที่สมบูรณ์  Fedora Core ได้รวบรวมแอพพลิเคชันอื่น ๆ อีกหลายแอพพลิเคชันที่สามารถใช้กับ yum ได้

บน desktop ของคุณจะมี alert icon เพื่อใช้แจ้งเตือนการอัพเดตแพ็กเกจ ไอคอนดังกล่าวจะแสดงเป็นวงกลมกระพริบสีแดง  โดยไอคอนนี้เป็นส่วนของแิอพพลิเคชัน up2date ซึ่งทำให้ง่ายต่อการระบบการอัพเดต

นอกจากนั้น Fedora Core ยังมีแพ็กเกจ system-config-packages ในการรันแอพพลิเคชันนี้รันได้จาก graphic interface ด้วยการเลือกเมนู Desktop->System Settings->Add/Remove Applications โดย system-config-packages จะต่างจาก up2date และ yum คือ system-config-packages จะติดตั้งแพ็กเกจของซอร์ฟแวร์จากแผ่นดิสก์ที่ใช้ในการติดตั้ง Fedora Core เท่่านั้น และไม่ใช้ repository ซึ่งแอพพลิเคชันตัวนี้ถูกใช้บนระบบที่ไม่มีการเชื่อมต่อเครือข่าย

ียูติลิตี้ที่เป็นคำสั่ง rpm (command line) มีหลายฟังก์ชันสำหรับการทำงานกับแพ็กเกจ RPM คุณสามารถใช้คำสั่ง rpm แบบ manual เพื่อติดตั้งและ remove แพ็กเกจจากระบบของคุณ  ถ้าคุณติดตั้งซอร์ฟแวร์ด้วยยูติลิตี้ rpm คุณต้องมีการตรวจสอบและติดตั้งการพึ่งพากัน (depency) แบบ manual   ด้วยเหตุผลนี้จึงมีการแำนะนำให้ใช้ yum แทน

4.การจัดการซอร์ฟแวร์Fedora Core

การใช้ yum ในการ modify ซอร์ฟแวร์มี 4 วิธีการคือ :

  • To install new software from package repositories

  • To install new software from an individual package file

  • To update existing software on your system

  • To remove unwanted software from your system

การใช้คำสั่ง yum จะมีการระบุ function และหนึ่งหรือหลายแพ็กเกจหรือกลุ่มของแพ็กเกจ

การทำงานแต่ละครั้ง  yum จำทำการดาวน์โหลดข้อมูลเกี่ยวกับแพ็กเกจล่าสุด จากคลังซอร์ฟแวร์ (repository) ที่ได้ถูกคอนฟิกไว้  ถ้าระบบเครือข่ายของคุณทำงานช้า อาจจะต้องใช้เวลาในการดาวน์โหลด repository index และ header file ของแต่ละแพ็กเกจนาน

ยูติลิตี้ yum จะค้นหาไฟล์ข้อมูลเหล่านี้เพื่อกำหนดชุดที่ดีที่สุดของการดำเนินการเพื่อให้ได้ผลตามต้องการ และแสดงผลการดำิเนินการ (transaction) เพื่อให้คุณยืนยัน  การดำิเนินการ (transaction) อาจจะประกอบด้วย การติดตั้ง  การอัพเดต  การลบหรือการเพิ่มแพ็กเกจ  เพื่อแก้ปัญหาเรื่องของ software depency

ตัวอย่างของ transaction ของการติดตั้ง tsclient

=============================================================================
Package                        Arch                     Version                     Repository                                Size
=============================================================================
Installing:
   tsclient                   i386                         0.132-6                                base                                     247 k
Installing for dependencies:
   rdesktop               i386                         1.4.0-2                                 base                                     107 k
Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 355 k
Is this ok [y/N]:

ตัวอย่าง 1 รูปแบบของ yum transaction report

 

ทบทวนดูรายการของการเปลี่ยนแปลง และกด y เพื่อยอมรับการโปรดำเนินการ  ถ้ากด N หรือ Enter โปรแกรม yum ก็จะไม่ดาวน์โหลดหรือเปลี่ยนแปลงใด ๆ

Package Version
ยูติลิตี้แสดงและใช้เฉพาะเวอร์ชันใหม่ของแต่ละแพ็กเกจ  เว้นเสียแต่คุณระบุเวอร์ชันเก่า

ยูติลิตี้มีการนำเข้า repository public key อีกด้วยถ้า key ดังกล่าวไม่ถูกติดตั้งไว้บน rpm keying

ตัวอย่างของการอิมพอร์ต public key

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
public key not available for tsclient-0.132-6.i386.rpm
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Importing GPG key 0x4F2A6FD2 "Fedora Project <fedora@redhat.com>"
Is this ok [y/N]:

ตัวอย่าง 2 รูปแบบของ yum public key import

 

ให้ตรวจสอบ public key และกด y เพื่อ import key และ authorize the key สำหรับการใช้งาน   กด N หรือ Enter เพื่อหยุดโดยปราศจากการติดตั้งแพ็กเกจใด ๆ

ในการทำให้แน่ใจว่าแพ็กเกจที่ดาวน์โหลดมาเป็นแพ็กเกจที่่แท้จริง ยูติลิตี้ yum จะพิสูจน์ ditital signature ของแต่ละแพ็กเกจกับ public key ของ provider ถ้าแพ็กเกจทั้งหมดที่้ต้องการสำหรับ transaction ได้ดาวน์โหลดมาอย่างสมบูรณ์และผ่านการพิสูจน์ (verify) แล้ว yum ก็จะนำมาใช้กับระบบของคุณ

แต่ละ transaction ที่สมบูรณ์ จะมีการบันทึกแพ็กเกจที่มีผลในล็อกไฟล์ /var/log/yum.log คุณสามารถอ่านไฟล์นี้ได้ด้วย root access

Download are Cached
ยูติลิตี้ yum แสดงและใช้งานเฉพาะเวอร์ชันใหม่ของแต่ละแพ็กเกจ ยูติลิตี้ yum จะเก็บไฟล์ข้อมูลที่ได้ดาวน์โหลดมาเพื่อที่จะนำมาใช้งานใหม่ (reuse) คุณอาจจะสำเนาแพ็กเกจจาก repository cache directory ภายใน /var/cache/yum ไปใช้งานอื่นได้  และถ้าคุณลบแพ็กเกจจาก cache ดังกล่าว คุณก็ไม่สามารถสำเนาซอร์ฟแวร์ที่ถูกติดตั้งอยู่บนระบบคุณได้

4.1 การติดตั้งซอร์ฟแวร์ใหม่ด้วย yum

การติดตั้งแพ็กเกจที่ชื่อ tsclient ใช้คำสั่งดังนี้ :

su -c 'yum install tsclient'

แล้วให้ป้อนรหัสผ่านของ root

ในการติดตั้งกลุ่มของแพ็กเกจ (package group) ที่เป็น MySQL Database ใช้คำสั่งดังนี้ :

su -c 'yum groupinstall "MySQL Database" '

แล้วป้อนรหัสผ่านของ root

New Services Require Activation
เมื่อคุณติดตั้งบริการอันหนึ่ง Fedora Core จะไม่ Active หรือ Start บริการดังกล่าว  ในการคอนฟิกให้บริการใหม่มีการรันเมื่อ boot เครื่อง ทำให้ด้วยการเลือกเมนู Desktop->System Settings->Server Settings->Services หรือใช้คำสั่ง chkconfig และคำสั่ง service

4.2 การอัพเดตซอร์ฟแวร์ด้วย yum

ในการอัพเดตแพ็กเกจ tsclient ใช้คำสั่งดังนี้ :

su -c 'yum update tsclient'

แล้วป้อนรหัสผ่านของ root

New Software Version Require Reloading
ในขณะอัดเดตถ้าซอร์ฟแวร์ดัวกล่างกำลังถูกใช้งาน  เวอร์ชันเก่าของโปรแกรมก็จะ Active อยู่จนกระทั่ง Application หรือ Service มีการ restart  การอัพเดตเคอร์เนลจะมีผลเมื่อมีการ reboot ระบบ

การอัพเดตแพ็กเกจทั้งหมดของ MySQL Database ใช้คำสั่งดังนี้ :

su -c 'yum groupupdate "MySQL Database" '

แล้วป้อนรหัสผ่านของ root

4.3 การลบ (remove) ซอร์ฟแวร์ด้วย yum

ในการ remove ซอร์ฟแวร์ yum จะตรวจสอบระบบของคุณทั้งซอร์ฟแวร์ที่ระุบุและและซอร์ฟแวร์ใด ๆ ที่เป็น denpency นั่นคือ transaction ในการ remove ซอร์ฟแวร์จะทำการลบทั้งซอร์ฟแวร์และ depency

ในการ remove แพ็กเกจ tsclient ออกจากระบบ ใช้คำสั่งดังนี้ :

su -c 'yum remove tsclient'

แล้วป้อนรหัสผ่านของ root

การ remove แพ็กเกจทั้งหมดในกลุ่มแพ็กเกจของ MySQL Database ใ้ช้คำสั่งดังนี้ :

su -c 'yum gruoupremove "MySQL Database" '

แล้วป้อนรหัสผ่านของ root

5.การค้นหาแพ็กเกจด้วย yum

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

รูปแบบของผลลัพท์ขึ้นอยู่กับ option ถ้ากระบวนการสอบถามไม่มีข้อมูล ก็จะไม่มีแพ็กเกจที่แมตซ์กับเกณฑ์ที่กำหนด

5.1 การค้นหาโดยใช้ชื่อแพ็กเกจและ attribute

การค้นหาแพ็กเก็ตที่ต้องการโดยใช้ชื่อ  ให้ใช้ฟังก์ชัน list  ซึ่งการค้นหาแพ็กเกต tsclient ใช้คำสั่งดังนี้ :

su -c 'yum list tsclient'

แล้วป้อนรหัสผ่านของ root

เพื่อการการสอบถามมีความเที่ยงตรง  ก็ทำได้ด้วยการระบุแพ็กเกจที่ประกอบด้วยชื่อและ attribute อื่น เ่ช่นเวอร์ชันของโครงสร้างฮาร์ดแวร์   ซึ่งการค้นหาสำหรับเวอร์ชัน 0.132 ของแอพพลิเคชัน ใช้คำสั่งดังนี้ :

su -c 'yum list tsclient-0.132'

5.2 Advanced Search

ถ้าคุณรู้ชื่อของแพ็กเกจ ให้ใช้ search option หรือ provide option หรืออาจใช้ wildcard หรือ regular expression ด้วย yum search option ใด ๆ เพื่อให้เกณฑ์การค้นหากว้างขึ้น

ออฟชัน search จะเช็คชื่อ, descriptions, summaries และ listed package maintainers ของแพ็กเกจที่ใช้งานได้ทั้งหมด  ตัวอย่างเช่นการค้นหาแพ็กเกจทั้งหมดที่เกี่ยวข้องกับ PalmPilots ค้นหาได้ดังนี้ :

su -c 'yum search PalmPilot'

ฟังก์ชัน provide จะเช็คทั้งไฟล์ีีที่ถูกรวมอยู่อยู่ในแพ็กเกจและฟังกชันที่ซอร์ฟแวร์จัดให้   ออฟชันนี้ต้องการให้ yum ดาวน์โหลดและอ่าน index files ที่ใหญ่กว่าออฟชัน search

ในการค้นหาแพ็กเกจทั้งหมดที่ประกอบด้วยไฟล์ที่เรียกว่า libneon ใช้คำสั่งดังนี้ :

su -c 'yum provides libneon'

ในการค้นหาแพ็กเกจทั้งหมดที่จัดให้มีบริการ MTA (Mail Transport Agent) หรือไม่ก็เป็นไฟล์ที่ประกอบด้วย mta อยู่ในชื่อ ใช้คำสั่งดังนี้ :

su -c 'yum provides MTA'

การใชัอักษรที่เป็น wildcard ที่เป็นมาตรฐานในการรัน search option ใด ๆ ด้วย partial word หรือชื่อ เครื่องหมาย ? จะำแทนหนึ่งตัวอักษร, เครื่องหมาย * แทนจำนวนตัวอักษรที่เป็นศูนย์หรือมากกว่า  และมักจะมีการเพิ่มเครื่องหมาย escape (\) ก่อน wildcard

ในการแสดงรายชื่อของแพ็กเกจทั้งหมดด้วยชื่อที่ขึ้นต้นด้วย tsc เป็นดังนี้ :

su -c 'yum list tsc\*'