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
Trang 1Cách sử dụng RPM
RPM 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
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
Trang 2vấ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ài liệ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
Trang 3● -d, docfiles: Chỉ hiển thị những file tài liệ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
Trang 43 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
Trang 5● 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
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
Trang 6cà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:
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ài liệ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
Trang 7Khi 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ài liệ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