Nguyễn Thanh Hải-QL02A/3 (hai2502@yahoo.com) Cách sửdụngRPMRPM là chương trình cài đặt RPM Package Manager, dùng để cài đặt các chương trình đã được biên dịch từ source sang file nhị phân. Những ưu điểm của việc cài chương trình dạng RPM so với việc cài chương trình từ source code. - Dễ dàng cài đặt và gỡ cài đặt ra khỏi hệ thống. - Dễ dàng kiểm tra lỗi các package đã cài vào hệ thống. - Dễ xây dựng package. - Chương trình thực thi hoàn toàn giống với cách cài từ source code. - Có thể cài được trên nhiều hệ thống. RPM có thể dễ dàng thực hiện được các công việc sau: cài đặt, gỡ cài đặt, nâng cấp, làm tươi, kiểm tra lỗi. 1. Các thông số và cấu hình về RPM của hệ thống: ● --version: hiển thị phiên bản của RPM hiện đang sửdụng VD: [root@KINGHAI root]# rpm --version RPM version 4.3.1 ● --quiet: Không hiển thị thông tin trong suốt quá trình cài đặt một package, chỉ hiển thị thông tin lỗi. ● -v: Hiển thị thông tin quá trình cài đặt package. ● --rcfile: thay đổi các chứa thông tin cấu hình cho RPM, các file cách nhau bằng dấu “:”. Mặc định, các file cấu hình sẽ là /usr/lib/rpm/rpmrc:/usr/lib/rpm/red hat/rpmrc:/etc/rpmrc:~/.rpmrc. ● --dbpath: Thay đổi file dữ liệu thông tin về các package. Mặc định file này sẽ là /var/lib/rpm 2. Truy vấn một package (Query): Tìm kiếm thông tin về một package trong cơ sở dữ liệu của hệ thống. Cấu trúc của một câu lệnh query package: rpm -q|--query [điều kiện hiển thị] [điều kiện truy vấn] <package> <package> có thể là một package tại máy cục bộ, hoặc là một package ở một địa chỉ ftp hoặc http nào đó. Nếu package ở một trang ftp hoặc http thì tên package sẽ là đường dẫn tuyệt đối đến package đó. VD: [root@KINGHAI root]#rpm -qpi x-unikey-0.9.2-1.i586.rpm hay [root@KINGHAI root]#rpm -pqi http://unikey.sourceforge.com/download/x- unikey-0.9.2-1.i586.rpm Chú ý: Khi truy vấn một package ở một địa chỉ http hoặc ftp thì header của package sẽ được download về, chứ không download toàn bộ package. Điều kiện hiển thị: ● -a, --all: hiển thị tất cả các package đã được cài đặt vào hệ thống. VD: [root@KINGHAI root]#rpm -qa ● -f, --file: hiển thị package nào có chứa câu lệnh đang cần truy vấn. Chú ý: muốn truy vấn được package nào có chứa câu lệnh đang cần truy Nguyễn Thanh Hải-QL02A/3 (hai2502@yahoo.com) vấn thì phải gõ đường dẫn chính xác cùa câu lệnh, có thể tìm đường dẫn chính xác của câu lệnh bằng whereis <câu lệnh> VD: [root@KINGHAI root]# whereis gcc gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc usr/share/man/man1/gc c.1.gz [root@KINGHAI root]# rpm -qf /usr/bin/gcc gcc-3.3.3-7 Khi muốn tìm kíếm các file tàiliệu có liên quan đến câu lệnh nào, dùng [root@KINGHAI root]#rpm -qdf /usr/bin/md5sum ● -g, --group: hiển thị package nào là thuộc group nào. VD: [root@KINGHAI root]# rpm -qg System/Internationalization x-unikey-0.9.2-1 Chú ý: Để biết tên group nào sở hữu package nào, nên xem thông tin package bằng rpm -qi ● -p: Hiển thị tên của package sau khi đã cài vào hệ thống. VD: [root@KINGHAI root]# rpm -qp x-unikey-0.9.2-1.i586.rpm x-unikey-0.9.2-1 Khi dùng option này với các option -i, -l có thể xem thông tin, liệt kê danh sách của package mà không cần phải cài package vào hệ thống. ● --pkgid: Hiển thị package có chuỗi kiểm tra MD5 trùng với chuỗi này. ● --whatprovides: Hiển thị tất cả các package có chứa câu lệnh/chức năng này. VD: [root@KINGHAI root]# rpm -q --whatprovides gcc gcc-3.3.3-7 ● --whatrequires: Hiển thị tất cả các package có liên quan đến câu lệnh/chức năng này. VD: [root@KINGHAI root]# rpm -q --whatrequires gcc gcc-c++-3.3.3-7 gcc-g77-3.3.3-7 gcc-gnat-3.3.3-7 gcc-objc-3.3.3-7 gcc-java-3.3.3-7 sm56-06.05.00-1 ● -v: Sửdụng option này cùng với các option -c, -d, -l, -s để hiển thị danh sách giống như danh sách của câu lệnh ls -l. Điều kiện truy vấn: ● --changelog: Hiển thị những thay đổi, cập nhật của package qua các lần đóng gói. Thông tin này do người đóng gói file cung cấp trong package. VD: [root@KINGHAI root]#rpm -q –changelog x-unikey-0.9.2-1 ● -c, --configfiles: Chỉ hiển thị những file cấu hình. VD: [root@KINGHAI root]#rpm -q –configfiles x-unikey-0.9.2-1 Nguyễn Thanh Hải-QL02A/3 (hai2502@yahoo.com) ● -d, --docfiles: Chỉ hiển thị những file tàiliệu của chương trình. VD: [root@KINGHAI root]#rpm -q –docfiles x-unikey-0.9.2-1 ● --filesbypkg: tương tự -l. ● -i, --info: Hiển thị thông tin về package, bao gồm: tên package, miêu tả, ngày phát hành, dung lương. ngày xây dựng package, ngày cài đặt vào hệ thống và các thông tin khác. Nếu muốn xem thông tin về một option chưa được cài vào hệ thống, dùng thêm option -p. VD: [root@KINGHAI root]#rpm -qi x-unikey ● -l, --list: Xem các file trong package. Nếu muốn xem danh sách file trong một package chưa được cài vào hệ thống thì thêm option -p. VD: [root@KINGHAI root]#rpm -ql x-unikey-0.9.2-1 hay [root@KINGHAI root]#rpm -qpl x-unikey-0.9.2-1-1.i586.rpm ● --provides: Xem các lệnh mà sau khi cài package sẽ sửdụng được. Nếu có file binary thì sẽ xem được thêm phiên bản của package. VD: [root@KINGHAI root]#rpm -q --provides gcc gcc = 3.3.3-7 ● -R, --requires: Xem tất cả các packages cần thiết để package có thể hoạt động được. VD: [root@KINGHAI root]# rpm -q --requires gcc /bin/sh /bin/sh /bin/sh /sbin/install-info binutils >= 2.14.90.0.4-4 cpp = 3.3.3-7 glibc-devel >= 2.2.90-12 libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.3) libgcc >= 3.3.3-7 rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Chú ý: --requires và –whatrequires có chức năng khác nhau. ● --scripts: Xem các scripts được thực hiện khi cài đặt và gỡ cài đặt một package. VD: [root@KINGHAI root]#rpm -qi x-unikey ● --state: Xem tình trạng của các file trong package, file ở trạng thái normal (bình thường), trạng thái not installed (chưa cài), hoặc ở trạng thái replaced (đã được thay thế, cài chồng). VD: [root@KINGHAI root]#rpm -qs x-unikey ● --triggers, --triggerscripts: Xem các trigger scripts sẽ được tự động thực hiện. VD: [root@KINGHAI root]#rpm -q –triggers x-unikey Nguyễn Thanh Hải-QL02A/3 (hai2502@yahoo.com) 3. Cài đặt (Install): Cài đặt một package vào hệ thống. Cấu trúc một câu lệnh cài đặt: rpm -i [điều kiện cài đặt] -i|--install: Cài đặt package. VD: [root@KINGHAI root]#rpm -ivh x-unikey-0.9.2-1.i586.rpm hay [root@KINGHAI root]#rpm --install -vh x-unikey-0.9.2-1.i586.rpm Điều kiện cài đặt: ● --test: Dùng option này để kiểm tra sau khi cài đặt package thì sẽ xảy ra đụng độ ở các package nào hoặc file nào không, hoặc cần thêm các package nào để package cần cài có thể hoạt động được. Option này sẽ không cài đặt package. VD: root@KINGHAI root]# rpm -ivh --test xmms-mp3.rpm Nếu xảy ra lỗi thì hệ thống sẽ thông báo lỗi tương tự như khi cài đặt hoặc nâng cấp. ● --replacepkgs: Trong trường hợp khi cài một package mà nhận được thông báo package đó đã được cài đặt (package already installed) và không cho cài tiếp, thì khi sửdụng option này sẽ cài chồng package đó. VD: [root@KINGHAI root]#rpm -ivh –replacepkgs x-unikey-0.9.2- 1.i586.rpm ● --replacefiles: Trong trường hợp khi cài một package mà một file nào đó trong package đã được cài bởi một package khác, và hệ thống sẽ thông báo file đó đã tồn tại (VD: foo /usr/bin/foo conflicts with file from bar- 1.0-1) và sẽ không cho cài đặt, khi sửdụng option này thì sẽ cho phép cài chồng file đó trong hệ thống. Chú ý: Khi sửdụng option này, nên chú ý file bị conflict. Trong tương lai, nếu user không muốn sửdụng package có file bị conflict này nữa, user gỡ package đó ra khỏi hệ thống, do đó file bị conflict cũng bị xóa, và chương trình trước đó sẽ không thực thi được vì thiếu file cần thiết. VD: [root@KINGHAI root]#rpm -ivh –replacefiles x-unikey-0.9.2- 1.i586.rpm ● --nodeps: Khi cài đặt một package, mà package đó cần các package khác để có thể hoạt động được, mà các package đó chưa được cài đặt thì hệ thống sẽ thông báo lỗi. VD: [root@KINGHAI root]# rpm -ivh xmms-mp3.rpm warning: xmms-mp3.rpm: V3 DSA signature: NOKEY, key ID e42d547b error: Failed dependencies: xmms = 1:1.2.10 is needed by xmms-mp3-1.2.10-2.2.p.1.fc2.fr libxmms.so.1 is needed by xmms-mp3-1.2.10-2.2.p.1.fc2.fr Khi gặp thông báo này thì user phải cài các package cần thiết để package xmms có thể cài được. Nếu sửdụng option –nodeps thì hệ thống sẽ cài đặt package mà không quan tâm đến sự cần thiết phải có các package nào thì package đang cài mới hoạt động được, tuy nhiên có thể xảy ra tình trạng package sau khi cài xong sẽ không thực thi được. VD: root@KINGHAI root]# rpm -ivh --nodeps xmms-mp3.rpm Nguyễn Thanh Hải-QL02A/3 (hai2502@yahoo.com) ● --force: Bắt buộc hệ thống cài package này. --force đồng nghĩa với việc sửdụng –replacepkgs và –replacefiles. 4. Gỡ cài đặt (Erase): Cấu trúc một câu lệnh gỡ cài đặt rpm -e [Điều kiện gỡ cài đặt] <package> <package> có thể chỉ là tên của package không cần version. Nhưng nên sửdụng tên package đầy đủ với version và phần mở rộng rpm. VD: [root@KINGHAI root]#rpm -e x-unikey hay [root@KINGHAI root]#rpm -e x-unikey-0.9.2-1.i586.rpm Điều kiện gỡ cài đặt: ● --allmatches: Gỡ cài đặt tất cả các version của package, nếu trong hệ thống có cài nhiều package với các version khác nhau. ● --nodeps: tương tự như option của phần cài đặt. ● --test: tương tự như option của phần cài đặt. 5. Nâng cấp và “làm tươi” package: 5.1 Nâng cấp (Upgrade): Cập nhật package. Nếu package chưa tồn tại thì dùng option này sẽ cài package. Khi thực hiện option này, hệ thống sẽ xóa toàn bộ package cũ, và thay bằng package mới. Cấu trúc câu lệnh nâng cấp: rpm -U|--upgrade [Điều kiện nâng cấp] <package> VD: #rpm -Uvh x-unikey-0.9.2-1.i586.rpm Điều kiện nâng cấp: ● --oldpackage: Khi nâng cấp một package mà phiên bản của package cần cài vào máy cũ hơn so với package đã có trong máy, hệ thống sẽ báo lỗi và không cho cài đặt. VD: [root@KINGHAI root]#rpm -Uvh foo-1.0-1.i386.rpm foo package foo-2.0-1 (which is newer) is already installed error: foo-1.0-1.i386.rpm cannot be installed Khi dùng option này thì sẽ báo cho hệ thống biết package đang có trong hệ thống là cũ và sẽ ép hệ thống cài đặt package này vào. [root@KINGHAI root]#rpm -Uvh –oldpackage foo-1.0-1.i386.rpm 5.2 “Làm tươi” package (Freshen): Cập nhật package, tưong tự như -U, tuy nhiên option này chỉ sửdụng được khi package cũ đã tồn tại trong hệ thống. Hệ thống sẽ so sánh phiên bản của 2 package cũ và mới, nếu khác nhau thì sẽ cập nhật, nếu giống nhau thì sẽ không làm gì cả. Cấu trúc của câu lệnh “làm tươi” package rpm -F <package> VD: [root@KINGHAI root]#rpm -Fvh x-unikey-0.9.2-1.i586.rpm Trong trường hợp trong máy hiện tại đã cài một số package, và user đã download một khối lượng lớn package về máy, user không muốn Nguyễn Thanh Hải-QL02A/3 (hai2502@yahoo.com) cài tất cả các package đã download về mà chỉ muốn cài lại các package đã có trong máy, thì làm như sau: [root@KINGHAI root]#rpm -Fvh *.rpm Hệ thống sẽ tự động dò các package đã có trong hệ thống và cài đặt lại với các package có version mới hơn vào hệ thống. Thực hiện câu lệnh này phải thực hiện trong thư mục có chứa các rpm cần “làm tươi” 6. Kiểm tra (Verify): Kiểm tra package kiểm tra thông tin của một file được cài đặt từ một package với package gốc. Cấu trúc câu lệnh kiểm tra rpm -V [Điều kiện chọn] [Điều kiện kiểm tra] <file/command> <file/command> có thể là bất cứ file nào cần kiểm tra. Phải nhập đường dẫn tuyệt đối của file/command cần kiềm tra. Nếu muốn kiềm tra một file nào đó Điều kiện chọn: Tương tự như điều kiện chọn của Truy vấn (query). Điều kiện truy vấn: ● --nodeps: không kiểm tra sự phụ thuộc vào package khác. ● --nofiles: Không kiểm tra thuộc tính của các file. ● --nomd5: Không kiểm tra MD5 checksum. ● --nosize: Không kiểm tra kích thước file trong package và trong hệ thống. Nếu kiểm tra không có lỗi sẽ không hiển thị kết quả ra màn hình. Nếu việc kiểm tra có lỗi, thì kết quả sẽ được hiển thị ra màn hình. Trước mỗi file kiểm tra sẽ có một ký tự cho biết file đó là file dạng gì: • c: file cấu hình (Configuration file). • d: file tàiliệu (Document file). • g: file ảo, xuất hiện sau khi đã cài package, không nằm trong package nguyên thủy. • l: file chứa thông tin bản quyền (license file). • r: file Readme. Kết quả trả về của việc kiểm tra là một chuỗi 8 ký tự. Nếu phần nào hiển thị dấu “.” thì phần kiểm tra không có lỗi, nếu có lỗi thì sẽ hiển thị ký tự đại diện cho lỗi. Các ký tự đại diện bao gồm (theo thứ tự hiển thị lỗi): • S: Kích thước của file sau khi cài đặt và file trong package nguyên thủy khác nhau. • M: Permission và định dạng file khác với file trong package nguyên thủy. • 5: Kiểm tra MD5 sai. • D: Kiểm tra con số chỉ thiết bị nào đang giao tiếp với file hoặc file được lưu trữ trên loại thiết bị nào. Khi thay đổi loại thiết bị lưu trữ thì còn số này bị thay đổi. • U: User sở hữu file thay đổi. • G: Group sở hữu file thay đổi. • T: Thời gian lần chỉnh sửa cuối cùng bị thay đổi. Nguyễn Thanh Hải-QL02A/3 (hai2502@yahoo.com) Khi hiển thị dấu “?” là hệ thống không kiểm tra được phần đó. VD: [root@KINGHAI root]#rpm -Va S.? . /usr/sbin/netconfig S.5 T c /etc/sysconfig/pcmcia S.5 T c /etc/samba/smb.conf . Theo ví dụ trên • /usr/sbin/netconfig có lỗi ở kích thước file, không kiểm tra được MD5. • /etc/sysconfig/pcmcia là file cấu hình, có lỗi ở kích thước file, có lỗi ở MD5, và có lỗi ở lần thời gian lần thay đổi cuối. • /etc/samba/smb.conf là file cấu hình, có lỗi ở kích thước file, có lỗi ở MD5, và có lỗi ở lần thời gian lần thay đổi cuối. Tàiliệu tham khảo: – Maximum RPM. (www.redhat.com) – Red Hat Linux 7.0: The Official Red Hat Linux Reference Guide-Chapter 5. Package Management with RPM. – RPM-HOWTO, Donnies Barner, Red Hat ,Inc – RPM Manual Page. . hình cho RPM, các file cách nhau bằng dấu “:”. Mặc định, các file cấu hình sẽ là /usr/lib /rpm/ rpmrc:/usr/lib /rpm/ red hat/rpmrc:/etc/rpmrc:~/.rpmrc. ● --dbpath:. số và cấu hình về RPM của hệ thống: ● --version: hiển thị phiên bản của RPM hiện đang sử dụng VD: [root@KINGHAI root]# rpm --version RPM version 4.3.1