Để cài đặt các gói ứng dụng được hỗ trợ trong bộ Fedora Core, trên thanh Panel phía trên, ta vào
System Add/Remove Program. Tuy nhiên nếu máy tính chưa kết nối vào internet hoặc chưa được cấu hình mạng đúng đắn thì hệ thống sẽ không cho truy xuất vào các gói ứng dụng hỗ trợ:
Nhấn Quit và kiểm tra lại kết nối mạng.
Sau khi đảm bảo kết nối internet đã thông suốt, ta mở lại công cụ Add/Remove Program, hệ thống sẽ kiểm tra các gói cài đặt trên máy tính và yêu cầu bỏ đĩa cài đặt Fedora Core 8 vào:
Hệ thống sẽ liệt kê các gói cài đặt được hỗ trợ sẳn trên Fedora Core 8 và được phân thành các mục tương ứng.
Nhấn chọn mục tương ứng và đánh dấu chọn gói cài đặt muốn cài vào hệ thống.
Đối với các chương trình ứng dụng không được hỗ trợ sẳn trên bộ Fedora Core, ta có thể sử dụng chuẩn RPM để cài đặt các gói này vào hệ thống.
RPM – RPM Package Management là một trình quản ly gói được sử dụng bởi nhiều Linux Distribution, như Redhat, Suse, Mandrake, và cả Fedora Core … Khi các phần mềm đã được đóng gói dưới dạng RPM, người sử dụng chỉ việc download về và cài đặt qua tiện ích của rpm. Tuy nhiên có nhiều phần mềm chỉ cung cấp dưới dạng source code ( tgz, tar.gz, tar.bz2 ). Người dùng có thể sử dụng những source code này hoặc người dùng có thể phát triển riêng phần mềm của mình để đóng gói thành gói tin rpm và phân phối lại cho cộng đồng sử dụng. Bài viết này giới thiệu cấu trúc gói tin rpm và cách đóng gói chúng.
Các gói RPM thực chất chỉ chứa các file đã được biên dịch và một số file khác như file cấu hình, các văn bản của gói phần mềm dạng mã nguồn. File RPM nếu được cài đặt thành công sẽ tạo hệ thống chạy được ngay vì thực chất nó là sự triển khai các file đã được biên dịch và các file cấu hình, các file văn bản vào các vị trí thích hợp để phần mềm có thể chạy ngay lập tức. Một gói được đóng dưới dạng RPM có thể coi như một gói cài đặt dạng setup.exe trong Windows.
Có hai kiểu gói RPM:
- File rpm nguồn với đuôi mở rộng .src.rpm. - Mã nhị phân với đuôi mở rộng: .rpm.
Sau khi download file về, vấn đề cài đặt thư mục ở đâu dường như không cần bận tâm lắm. Thậm chí, Fedora Core còn có một thư mục đặc biệt dùng để lưu trữ các gói này trước khi cài đặt. Bạn không cần phải dùng nó nếu máy tính của bạn là hệ thống đa người dùng. Điều đó có thể giúp mọi thứ có tính tổ chức cao hơn.
1. Cài đặt gói ứng dụng rpm:
Cú pháp cài đặt: rpm -i (hoặc ##install) [tuỳ chọn] <tên các file rpm>
Các thông số tùy chọn Mô tả
##hash (-h) In kí tự ‘#’ trong quá trình cài đặt ##test Chỉ thử cài đặt, không cài thật
##percent Hiện số phần trăm trong quá trình cài đặt ##excludedocs Không cài các tài liệu kèm theo gói ##includedocs Cài cả tài liệu đi kèm (mặc định)
##replacepkgs Cài đè một bản mới lên gói đã cài đặt trước đó ##replacefiles Có thể chép đè lên file của gói khác
##force Bỏ qua sự xung đột giữa các gói và các file
##noscripts Không thực hiện các script pre-install và post-install ##prefix <path> Ðổi thư mục cài đặt mặc định của gói (nếu có thể) ##ignorearch Không kiểm tra dòng máy tính (i386, i686, noarch..) ##ignoreos Không kiểm tra hệ điều hành (OS)
##nodeps Không kiểm tra tính phụ thuộc (dependencies) ##ftpproxy <host> Dùng máy tính <host> như là một FTP proxy ##ftpport <port> Dùng cổng <port> làm FTP port
Khi một gói nào đó được cài đặt, chương trình rpm sẽ thực hiện các công việc sau :
- Kiểm tra tính phụ thuộc của gói. Một số gói không hoạt động đúng nếu không có một gói nào đó được cài đặt từ trước. Hoặc nó kiểm tra xem có làm thay đổi tính phụ thuộc của các gói đã được cài đặt trước hay không.
Kiểm tra tình trạng xung đột giữa các file. Trong phần này chương trình rpm phải thử cài đặt các file, sau đó kiểm tra xem có xung đột hay không, hoặc thử thay đổi các file cấu hình. Sau đó kiểm tra lại.
- Sửa lại các file cấu hình đang có trong hệ thống. Một trong những ưu điểm khác của RPM với các trình quản lý cài đặt khác là cách chúng xử lý các file cấu hình. Khi một phần mềm được cài đặt, chúng cần phải thay đổi một số file cấu hình có sẵn trong hệ thống, rpm không chép đè các file cấu hình mới lên các file cũ mà nó phân tích tình trạng của các file cũ để chỉ thực hiện các thay đổi cần thiết (xem phần sau)
- Bung nén các file từ gói cài đặt vào các vị trí thí ch hợp. Bước này mới thật sự là copy các file từ gói cài đặt vào hệ thống, sau đó các thuộc tính của file cũng được rpm xác lập.
- Thực hiện các script sau cài đặt. Tương tự như các script trước lúc cài đặt, bước này đối với một số gói cũng cần được thực hiện, ví dụ như chạy ldconfig để cho các thư viện liên kết động mới có thể được dùng ngay.
- Lưu lại tất cả các thông tin trên vào cơ sở dữ liệu. RPM có một cơ sở dữ liệu rất lớn lưu trữ tất cả các công việc mà nó thực hiện với các gói cùng các thông tin về các gói. Nó sẽ sử dụng cơ sở dữ liệu này để tra cứu thông tin về sau hoặc kiểm tra xung đột.
Ðể cài đặt một gói, đơn giản là dùng lệnh : rpm -i <tên file của gói>
Nhớ là tên gói và tên file của gói là khác nhau ví dụ tên gói có thể là : eject-1.2-2 nhưng tên file của gói lại là eject-1.2-2.i386.rpm
Các thông số tùy chọn:
- Thay vì chỉ ra tên file cụ thể nằm trong hệ thống file của máy tính, ta có thể chỉ ra một URL chứa gói cài đặt. Ví dụ :
rpm -i ftp://ftp.redhat.com/RPMS/example-1.0-2.noarch.rpm
Có thể một lúc nào đó bạn cần phải cung cấp cả tên người dùng và mật khẩu để truy cập file đó, lúc đó cần một URL đầy đủ như sau :
ftp://elnino:passwords@ftp.redhat.com/RPM....0-2.noarch.rpm
Nhưng xem ra để cho mật khẩu hiện lên như vậy là điều không nên. Bạn có thể chỉ cần cung cấp tên người dùng trong URL, rpm sẽ hỏi bạn mật khẩu và lúc đó mới nhập mật khẩu theo cách không hiện lên màn hình.
- Thông thường thì chỉ cần một dòng lệnh rpm -i nh- vậy là đủ. Nó sẽ thực hiện cài đặt mà không hiện gì ra màn hình cả, trừ khi có lỗi khi cài đặt. Nếu muốn hiện thêm một số thông tin bạn có thể thêm các tùy chọn -v,-h hoặc -vv, hoặc ##percent cứ thử xem.
- Có lúc bạn chỉ thử cài một gói nào đó để xem nó có xung đột hoặc cần một file nào đặc biệt không. Hãy dùng tùy chọn ##test
- Có lúc một gói nào đó bị hỏng hoặc mất một số file cần cài lại. Bạn có thể dùng thêm tùy chọn ##replacepkgs. (Không phải là nâng cấp, bạn phải cài lại đúng gói đó theo đúng version và release)
Nhưng nếu cần thiết phải chép đè như vậy thì hãy dùng thêm tùy chọn ##replacefiles (một file backup sẽ được rpm tạo ra *.rpmsave). Cảnh giác với điều này vì nếu một lúc nào đó bạn xóa gói cài sau ra khỏi hệ thống, file bị ghi đè kia tất nhiên sẽ biến mất. Lúc đó cần phục hồi lại bằng file .rpmsave.
- Khi một gói nào đó (A chẳng hạn) phụ thuộc vào sự tồn tại của một gói nào đó có trước (ví dụ là . Bạn có thể sẽ không cài được gói A. Nhưng nếu bạn vẫn muốn cài gói A trước, rồi lúc nào đó cài gói B sau thì có thể dùng tùy chọn ##nodeps . Hãy lợi dụng tùy chọn này khi bạn không biết thứ tự của các gói khi cài đặt.
- Thông thường các gói cài đặt sẽ cài đặt các file của mình vào một số thư mục nhất định nào đó trong hệ thống. Tuy nhiên có một số phần mềm cho phép người dùng cài đặt vào một vị trí khác (relocateable). Lúc đó bạn phải thêm tùy chọn ##prefix <thư mục cài đặt> vào trong câu lệnh rpm -i. - Tùy chọn ##noscript : RPM thật sự còn làm nhiều công việc hơn là chỉ copy các file đơn thuần. Nó có các mã thi hành cần thiết trước và sau cài đặt, và điều này rất có ý nghĩa với sự hoạt động của một số phần mềm . Nhưng có lúc oái oăm nào đó bạn biết thừa là các script đó làm gì và không muốn chúng thực hiện thì hãy thêm tùy chọn ##noscript.
2. Xóa một gói ra khỏi hệ thống:
Ðể xóa một gói ra khỏi hệ thống, dùng lệnh :
rpm -e (hoặc ##erase) [ các tùy chọn ] <danh sách các gói>
Các thông số tùy chọn Mô tả
-e (hoặc ##erase) Xóa gói cài đặt
##test Thử xóa, không xóa thực sự
##noscripts Không thực hiện các mã pre-uninstall và post- uninstall
##nodeps Không kiểm tra tính phụ thuộc Khi một gói được xóa khỏi hệ thống, rpm thực hiện các công việc sau :
- Kiểm tra xem có một gói nào trong hệ thống phụ thuộc vào gói sẽ bị xóa không. - Thực hiện script pre-uninstall nếu có.
- Kiểm tra các file cấu hình có bị thay đổi không, nếu có sẽ lưu lại một bản copy. - Tra cứu cơ sở dữ liệu rpm để xóa các file của gói đó.
- Thực hiện các script post-uninstall nếu có.
Nâng cấp một gói cách thức cũng tương tự như cài đặt gói. Chỉ khác là tham số không phải -i mà là -U .
Nhưng cần chú ý : bạn có một file .rpm, sẽ có 2 khả năng, một là phần mềm đó hoàn toàn chưa có trên hệ thống của bạn, như vậy bạn chọn tham số -i để cài mới, nếu phần mềm đó đã tồn tại trong hệ thống nhưng với phiên bản cũ hơn, bạn phải chọn tùy chọn -U , nếu chọn -i sẽ xảy ra tình trạng xung đột các file giữa gói cũ và gói mới.
Thêm một chú ý nữa là đôi khi bạn cần cài một gói cũ hơn đè lên một gói có phiên bản mới hơn đang tồn tại trong hệ thống, lúc này bạn cần thêm tham số ##oldpackage
4. Lấy thông tin về các package:
Một trong những điểm thú vị nhất về rpm là nó luôn sẵn sàng cung cấp những thông tin cần thiết về toàn bộ các gói có trong hệ thống của bạn.
Cú pháp đầy đủ như sau :
rpm -q (hoặc ##query)
Các thông số tùy chọn Mô tả
pkg1 pkg2 .. pkgN Danh sách các gói cần query (đã cài đặt) -p <file rpm> Query một file rpm có thể chưa cài -f <file> Query gói nào chứa file <file> -a Query tất cả các gói đã được cài đặt ##whatprovides <x> Query gói nào cung cấp <x>
-g <group> Query gói nào thuộc nhóm <group> ##whatrequires <x> Query gói nào cần đến <x>
<null> (không tham số) Hiện ra tên gói
-i Hiện các thông tin chung về gói -l Hiện danh sách các file trong gói -c Hiện danh sách các file cấu hình -d Hiện danh sách các file tài liệu
##dumb Hiện tất cả các thông tin của từng file ##provides Hiện các file dùng chung mà gói cung cấp ##requires Hiện các file (gói) mà gói cần có
Có rất nhiều tình huống cần đến việc lấy thông tin từ một hoặc một vài gói nào đó. Chẳng hạn như bạn gặp một file bất kỳ trong hệ thống. Bạn muốn biết file đó thuộc về gói nào, hãy dùng lệnh : rpm -qf <tên file> . Hoặc bạn có một gói chương trình, bạn không biết nó có gì , chức năng của nó như thế nào... , không cần cài đặt nó, bằng lệng sau bạn có thể có các thông tin đó : rpm -qilp <tên file rpm> . Bạn có một phần mềm đã được cài đặt trong hệ thống từ rất lâu rồi nhưng không biết nó cài vào đâu và tài liệu ở đâu.v.v. tất cả các thông tin đó đều được đáp ứng bằng rpm -q.
Tips : Bạn có thể sinh ra một danh sách các tên gói đã được cài đặt trong hệ thống bằng lệnh rpm -qa > tên_file_kết_quả . Nếu cần nhiều thông tin hơn, cứ việc thêm các tham số cần thiết vào.
Tips : Bạn có thể có một cách hiển thị thông tin riêng của mì nh. Ví dụ như chỉ đưa ra tên gói và dung lượng mà không đưa ra các thông tin khác (không dùng -i). Hãy dùng thêm ##queryformat ‘% {NAME}\n%{SIZE}\n\n’ , chú ý về khuôn dạng của xâu format :
- Tất cả xâu queryformat phải được đặt trong một cặp nháy đơn - Các thẻ được đặt trong cặp {}, trước mỗi thẻ cần có ký tự %.
- Bạn có thể quy định độ rộng của các trường thông tin cần đưa ra bằng cách thêm một con số n vào trước tên thẻ (sau ký tự %).
Tips : Nhiều khi bạn không rõ có bao nhiêu loại thẻ l\và tên của chúng thế nào, hãy dùng rpm -querytag . Sẽ có rất nhiều thẻ hữu dụng, hãy thử lệnh đó.
Tips : Bạn cần tìm một số gói có một xâu nào đó trong tên, chẳng hạn cần tìm các gói có tên tận cùng là sh, hãy dùng lệnh :
rpm -qa | grep -i sh
Bạn sẽ được ash, bash csh..v.v.
Tips : Dành cho những người muốn xây dựng cơ sở dữ liệu về rpm. Chẳng hạn như lập một bảng hai cột, một cột là tên gói, một cột là thông tin mô tả ngắn gọn (summary hoặc description đều được) :
rpm -qa ##queryformat ‘%{NAME}#%{Summary}\n’ > result
Sau đó dùng MS Word convert nội dung tệp result sang table với sapate text at #.
5. Dùng RPM để kiểm tra các gói đã cài đặt:
Sau một thời gian vận hành hệ thống, có thể có lúc bạn tự hỏi : "Hệ thống của mình có gì trục trặc không nhỉ, có file nào bị lỗi không? Trạng thái của các phần mềm đang chạy như thế nào?” Tất cả
Các thông số tùy chọn Mô tả
pkg1 .. pkgN Danh sách các gói cần kiểm tra
-p <file .rpm> Kiểm tra chính file .rpm (không dùng rpmdb) -f <file> -f <file> Kiểm tra gói nào chứa file <file> -a Kiểm tra tất cả các gói
-g <group> Kiểm tra các gói thuộc về nhóm <group> ##noscripts Không chạy script kiểm tra
##nodeps Không kiểm tra tính phụ thuộc ##nofiles Không kiểm tra thuộc tính của file
Như đã nói ở các phần trước, toàn bộ thông tin về các gói đều được lưu trữ trong cơ sở dữ liệu của rpm. Kể cả là nội dung của từng file ( rpm sử dụng thuật toán MD5 để lưu trữ thông tin về nội dung của một file ). Do đó, mọi sự thay đổi của các gói rpm đều được lưu lại. Lệnh rpm -V sẽ kiểm tra lại tất cả các thông tin đó xem có khớp với ban đầu hay không. Khi có một lỗi nào đó sảy ra, rpm -V sẽ cung cấp các thông tin về lỗi phát hiện được, có các loại lỗi sau :
1. S Kích thước file. 2. M File mode. 3. 5 MD5 check sum.
4. D Số thiết bị (minor và major). 5. L Link file.
6. U Người sở hữu file. 7. G Nhóm sở hữu file.
8. T Thời điểm thay đổi nội dung của file. 9. c File cấu hì nh.
10. missing Thiếu file.
11. <filename> Một file cụ thể bị lỗi. - Một cách kiểm tra khác :
ở đây chỉ có một tùy chọn riêng là ##nopgp : không kiểm tra chữ ký PGP.
Khi bạn lấy một phần mềm nào đó về, nếu hợp pháp, bạn sẽ được nhà sản xuất cung cấp một file chữ ký số PGP. Hãy lưu thông tin này vào cơ sở dữ liệu của pgp trong hệ thống của bạn, bằng lệnh sau :
pgp -ka RPM-PGP-KEY ./somekeys.pgp
lúc này chữ ký đó đã có trong hệ thống của bạn. Khi bạn gặp một phần mềm nào đó, họ (ai đó) nói