รับทําเว็บไซต์ รับทําseo
บทความที่น่าสนใจ

บทความ ที่น่าสนใจ

Linux Server (CentOS) : ติดตั้งโปรแกรมเพิ่มด้วย rpm

    หลังจาก ติดตั้ง CentOS 6.2 : เลือกชุดซอฟต์แวร์ที่จะลง แล้ว หากต้องการติดตั้งซอฟต์แวร์หรือโปรแกรมเพิ่มเติม สามารถทำได้ดังนี้

    ใส่แผ่นดีวีดีติดตั้ง แล้วใช้คำสั่ง mount เพื่อเรียกดูไฟล์ในแผ่น

    [root@cent6 ~]# mount /dev/dvd /mnt mount: block device /dev/sr0 is write-protected, mounting read-only

    ในแผ่นดีวีดีติดตั้ง CentOS 6.2 จะมีโครงสร้างไฟล์และไดเร็คทอรีดังนี้

    [root@cent6 ~]# cd /mnt/ [root@cent6 mnt]# ls -l total 658 -rw-r--r--. 2 root root 14 Dec 16 09:39 CentOS_BuildTag drwxr-xr-x. 3 root root 2048 Dec 11 06:38 EFI -rw-r--r--. 2 root root 212 Dec 15 11:32 EULA -rw-r--r--. 2 root root 18009 Dec 15 11:38 GPL drwxr-xr-x. 3 root root 2048 Dec 11 06:38 images drwxr-xr-x. 2 root root 2048 Dec 11 06:36 isolinux drwxrwxr-x. 2 500 500 630784 Dec 16 09:43 Packages -rw-r--r--. 2 root root 1354 Dec 9 19:58 RELEASE-NOTES-en-US.html drwxr-xr-x. 2 root root 4096 Dec 16 09:46 repodata -rw-r--r--. 2 root root 1706 Dec 9 19:57 RPM-GPG-KEY-CentOS-6 -rw-r--r--. 2 root root 1730 Dec 9 19:57 RPM-GPG-KEY-CentOS-Debug-6 -rw-r--r--. 2 root root 1730 Dec 9 19:57 RPM-GPG-KEY-CentOS-Security-6 -rw-r--r--. 2 root root 1734 Dec 9 19:57 RPM-GPG-KEY-CentOS-Testing-6 -r--r--r--. 1 root root 3380 Dec 16 09:46 TRANS.TBL 

    สำหรับ CentOS และลีนุกซ์ distribution ตระกูล RedHat เช่น RedHat Enterprise หรือ Fedora จะใช้คำสั่ง rpm ในการจัดการการติดตั้งลงโปรแกรม หรือลบโปรแกรมออก โดยทางคนจัดทำโปรแกรม จะรวมไฟล์ที่ต้องใช้เข้าด้วยกันให้เป็นไฟล์ในรูปแบบ rpm เพื่อง่ายต่อการติดตั้ง แต่หากโปรแกรมมีหลายส่วนหรือขนาดใหญ่มาก อาจมีการแยกเป็นไฟล์ rpm ย่อยต่างๆ

    สำหรับในแผ่นดีวีดีติดตั้ง CentOS 6.2 จะรวมไฟล์ rpm ของโปรแกรมต่างๆ ที่นิยมใช้กัน อยู่ในไดเร็คทอรี Packages

    ตัวอย่าง

    [root@cent6 mnt]# cd Packages/ [root@cent6 Packages]# ls -l total 4058406 -rw-r--r--. 2 500 500 1437036 Dec 9 02:38 389-ds-base-1.2.9.14-1.el6.x86_64.rpm -rw-r--r--. 4 500 500 375664 Dec 9 02:37 389-ds-base-libs-1.2.9.14-1.el6.i686.rpm -rw-r--r--. 2 500 500 370484 Dec 9 02:38 389-ds-base-libs-1.2.9.14-1.el6.x86_64.rpm -rw-r--r--. 2 500 500 215284 Dec 15 11:28 abrt-2.0.4-14.el6.centos.x86_64.rpm -rw-r--r--. 2 500 500 95072 Dec 15 11:28 abrt-addon-ccpp-2.0.4-14.el6.centos.x86_64.rpm -rw-r--r--. 2 500 500 64268 Dec 15 11:28 abrt-addon-kerneloops-2.0.4-14.el6.centos.x86_64.rpm -rw-r--r--. 2 500 500 58428 Dec 15 11:28 abrt-addon-python-2.0.4-14.el6.centos.x86_64.rpm -rw-r--r--. 2 500 500 55908 Dec 15 11:28 abrt-cli-2.0.4-14.el6.centos.x86_64.rpm ...

    หากไม่มีไฟล์ rpm ที่ต้องการในแผ่นแรก ลองใส่แผ่นที่สอง ดูใน Packages

    แต่ถ้าไม่มีจริงๆ ก็ต้องค้นหา และดาวน์โหลดจากอินเตอร์เน็ต

    ในหลายๆ ครั้ง จะติดตั้งโปรแกรมที่ต้องการได้ จำเป็นต้องติดตั้งโปรแกรมอื่นก่อน เรียกว่าเป็นปัญหา dependencies ถือว่าเป็นข้อเสียของการใช้คำสั่ง rpm เพียงอย่างเดียวเพื่อการติดตั้งโปรแกรม เพราะต้องแก้ปัญหานี้เอง เมื่อเทียบกับการใช้คำสั่ง yum จะช่วยแก้ไขปัญหานี้ แล้วติดตั้งโปรแกรมที่จำเป็นให้กับเราเลย

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

    ตัวอย่างการติดตั้งไฟล์ rpm (install)

    ในที่นี้ขอยกตัวอย่างการติดตั้งโปรแกรม git ซึ่งเป็นโปรแกรมประเภท revision control ที่เริ่มมีการใช้กันค่อนข้างมาก

    โดยจะเป็นการติดตั้งจากแผ่นดีวีดีติดตั้งแผ่นที่ 1

    ไฟล์ rpm เพื่อจะติดตั้ง git

    [root@cent6 Packages]# ls -l git* -rw-r--r--. 2 500 500 4844240 Jul 6 2011 git-1.7.1-2.el6_0.1.x86_64.rpm

    ใช้คำสั่ง rpm -i ตามด้วยชื่อไฟล์ rpm เพื่อติดตั้ง (install)

    [root@cent6 Packages]# rpm -i git-1.7.1-2.el6_0.1.x86_64.rpm warning: git-1.7.1-2.el6_0.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY error: Failed dependencies:  perl(Error) is needed by git-1.7.1-2.el6_0.1.x86_64  perl(Git) is needed by git-1.7.1-2.el6_0.1.x86_64  perl-Git = 1.7.1-2.el6_0.1 is needed by git-1.7.1-2.el6_0.1.x86_64

    ผลที่ได้จะพบปัญหาสองอย่าง

      - warning … NOKEY หมายถึงไม่สามารถตรวจสอบความถูกต้องของไฟล์ได้

      - error: Failed dependencies หมายถึงจะติดตั้งโปรแกรมนี้ได้ ต้องติดตั้งโปรแกรมอื่นก่อน

    ก่อนอื่นแนะนำให้แก้ไขปัญหาแรกก่อน วิธีการแก้ไขคือต้องติดตั้ง PGP PUBIC KEY เข้าไปในเครื่องก่อน เพื่อใช้ตรวจสอบความถูกต้องของไฟล์ rpm ที่อยู่ในแผ่น

    ไฟล์ที่ใช้คือ RPM-GPG-KEY-CentOS-6 อยู่ไดเร็คทอรีนอกสุดของแผ่น ภายใต้ /mnt

    [root@cent6 mnt]# ls -l RPM-GPG-KEY-CentOS-6 -rw-r--r--. 2 root root 1706 Dec 9 19:57 RPM-GPG-KEY-CentOS-6

    ใช้คำสั่ง rpm –import เพื่อติดตั้ง (import) PUBLIC KEY

    [root@cent6 mnt]# rpm --import RPM-GPG-KEY-CentOS-6

    ต้องไม่มี error ใดๆ จากการรัน rpm

    ลองติดตั้ง git อีกครั้ง

    [root@cent6 mnt]# cd Packages/ [root@cent6 Packages]# rpm -i git-1.7.1-2.el6_0.1.x86_64.rpm error: Failed dependencies:  perl(Error) is needed by git-1.7.1-2.el6_0.1.x86_64  perl(Git) is needed by git-1.7.1-2.el6_0.1.x86_64  perl-Git = 1.7.1-2.el6_0.1 is needed by git-1.7.1-2.el6_0.1.x86_64

    ข้อความ warning ก็จะหายไป

    ส่วนการแก้ไขปัญหา Failed depenencies นั้น ต้องดูเป็นกรณีไป บางครั้่งก็จะขึ้นชื่อไฟล์ rpm ที่ต้องติดตั้งก่อนมาเลย เช่นในตัวอย่างนี้คือ perl-Git

    แต่บางครั้งก็ขึ้นชื่อมาเฉยๆ เช่น perl(Error) เราต้องไปหาเองว่าไฟล์นี้ น่าจะอยู่ในไฟล์ rpm ไหน หลายๆ ครั้งก็ต้องค้นหาจาก google.com

    เช่น perl(Error) ใช้ google ก็อาจจะค้นหาว่า “perl(Error) rpm centos 6.2″ เป็นต้น

    ลองแก้ไขปัญหาไปซักพัก มีประสบการณ์ก็พอจะเดาออกว่าอยู่ในไฟล์ rpm ไหน

    เช่น perl(Error) ก็น่าจะมีไฟล์ perl-Error ลองดูในแผ่น ใช้คำสั่ง ls หาไฟล์ที่มีคำว่า perl-Error (พิมพ์อักษรตัวใหญ่เล็กให้เหมือนกัน)

    [root@cent6 Packages]# ls -l *perl-Error* -rw-r--r--. 2 500 500 29420 Jul 3 2011 perl-Error-0.17015-4.el6.noarch.rpm

    ลองติดตั้งดู

    [root@cent6 Packages]# rpm -i perl-Error-0.17015-4.el6.noarch.rpm [root@cent6 Packages]#

    ติดตั้งสำเร็จ ลองติดตั้ง git อีกครั้ง

    [root@cent6 Packages]# rpm -i git-1.7.1-2.el6_0.1.x86_64.rpm error: Failed dependencies:  perl(Git) is needed by git-1.7.1-2.el6_0.1.x86_64  perl-Git = 1.7.1-2.el6_0.1 is needed by git-1.7.1-2.el6_0.1.x86_64

    สังเกตว่า perl(Error) หายไป แสดงว่าเราติดตั้งไฟล์ rpm ถูกต้อง

    ส่วน perl(Git) หรือ perl-Git ก็ลองหาไฟล์ที่มีคำว่า perl-Git ดู

    [root@cent6 Packages]# ls -l *perl-Git* -rw-r--r--. 2 500 500 28264 Jul 6 2011 perl-Git-1.7.1-2.el6_0.1.noarch.rpm

    ลองติดตั้งดู

    [root@cent6 Packages]# rpm -i perl-Git-1.7.1-2.el6_0.1.noarch.rpm error: Failed dependencies:  git = 1.7.1-2.el6_0.1 is needed by perl-Git-1.7.1-2.el6_0.1.noarch 

    ปัญหาโลกแตก คือจะติดตั้ง git ก็จำเป็นต้องติดตั้ง perl-Git แต่พอลองติดตั้ง perl-Git ก็ฟ้องว่าต้องติดตั้ง git ก่อน

    หากเจอปัญหาแบบนี้ ให้พิมพ์ชื่อไฟล์ เรียงกันไปเลย (คั่นด้วยเว้นวรรค)

    [root@cent6 Packages]# rpm -i git-1.7.1-2.el6_0.1.x86_64.rpm perl-Git-1.7.1-2.el6_0.1.noarch.rpm

    เป็นอันติดตั้งสำเร็จ ลองใช้คำสั่ง git

    [root@cent6 Packages]# git --version git version 1.7.1  

    ตัวอย่างการลบการติดตั้ง rpm (erase)

    หากไม่ต้องการโปรแกรมที่ติดตั้งด้วย rpm แล้ว สามารถลบออก (erase) ด้วยคำสั่ง rpm -e

    ตัวอย่างการพยายามลบ rpm ของ git ออก

    หมายเหตุ เวลาลบโปรแกรมให้ระบุเฉพาะชื่อโปรแกรมเท่านั้น ไม่ต้องระบุเวอร์ชั่น

    [root@cent6 Packages]# rpm -e git error: Failed dependencies:  git = 1.7.1-2.el6_0.1 is needed by (installed) perl-Git-1.7.1-2.el6_0.1.noarch

    ก็จะฟ้องคล้ายๆ กับตอนติดตั้ง แต่การลบจะกลับกันคือ คุณไม่สามารถลบโปรแกรมนี้ออกได้ เพราะโปรแกรมนี้ถูกใช้โดยโปรแกรมอื่นอยู่ (dependencies)

    ลองลบ perl-Git ออก

    [root@cent6 Packages]# rpm -e perl-Git error: Failed dependencies:  perl(Git) is needed by (installed) git-1.7.1-2.el6_0.1.x86_64  perl-Git = 1.7.1-2.el6_0.1 is needed by (installed) git-1.7.1-2.el6_0.1.x86_64

    วิธีการแก้ไขปัญหา เหมือนกับตอนติดตั้งคือระบุชื่อโปรแกรมต่อกันไปเลย

    [root@cent6 Packages]# rpm -e git perl-Git [root@cent6 Packages]#

    หากคุณจำได้หรือทำเอกสารตอนติดตั้งไว้ อีกโปรแกรมที่สามารถลบออกได้คือ perl-Error

    [root@cent6 Packages]# rpm -e perl-Error