Menu bài viết
Nếu ai đã từng cài đặt phần mềm trên windows, chắc hẳn khi lần đầu tiên cài đặt phần mềm trên Linux sẽ gặp rất nhiều khó khăn. Có khi phải mất nguyên mấy giờ, có khi 1 buổi và có khi mấy ngày mới có thể cài đặt 1 phần mềm. Vì đơn giản cài đặt phần mềm trên Linux không như trên window cứ đúp chuột 1 phát là sau đó cứ next ,…, next cuối cũng finish là xong. Trên hệ thống Linux, nếu bạn nào đã từng cài đặt phần mềm các bạn sẽ thấy Linux có 3 cách cài đặt phổ biến là yum, rpm và biên dich phần mềm. Vậy câu hỏi được đặt ra 3 cách cài này nó giống và khác nhau, ưu điểm và nhược điểm của chúng ra sao.
Nội dung bài viết:
RPM
YUM
Biên dịch phần mềm
1/ RedHat Package Manager (RPM)
Một tiện ích được phát triển trong dòng họ Linux Redhat từ khi mới ra đời. Tiện ích này có chức năng tương đương với dpkg trên hệ thống Ubuntu.
Nó cung cấp cho người dùng nhiều tính năng để duy trì hệ thống của mình. Người dùng có thể cài đặt, xóa hoặc nâng cấp các package trực tiếp bằng lệnh. RPM có một cơ sở dữ liệu chứa các thông tin của các package đã cài đặt và các tập tin của chúng, nhờ vậy RPM cho phép bạn truy vấn các thông tin, cùng như xác thực các package trong hệ thống. Nếu bạn sử dụng XWindow, có thể dùng chương trình KDE-PRM hoặc Gnome-RPM thay cho việc sử dụng lệnh. Nhược điểm của RPM là không tự động xác định các gói phụ thuộc.
Gói phụ thuộc là gì? Trên Linux 1 gói phần mềm muốn hoạt động được cần 1 cho đến nhiều thư viện khác để có thể chạy được. Nói nôm na dễ hiểu, phần mềm A muốn chạy được thì cần phải có thư viện của phần mềm B và C, tương tự B và C lại cần các thư viện của phần mềm E,F,G,,.. cứ như vậy mà tiếp diễn tùy thuộc vào người phát triển phần mềm. Do đó khi dùng RPM bạn phải thực hiện cài tuần tự các gói phụ thuộc trước thì mới có thể cài được phần mềm mà bạn muốn cài lúc ban đầu.
Cấu trúc của một RPM Package như sau:
a/ Cài đặt một package
Để tải một tập tin trên mạng ta dùng lệnh wget
[[email protected] ~]# wget https://download.sernet.de/pub/samba/3.6/rhel/6/x86_64/samba3-3.6.24-45.el6.x86_64.rpm
Link down samba
Khi cài sẽ báo lỗi là phải cài gói phụ thuộc trước là samba3-client:
[[email protected] ~]# rpm -ivh samba3-client-3.6.24-45.el6.x86_64.rpm
[[email protected] ~]# rpm -ivh samba3-3.6.24-45.el6.x86_64.rpm
Giải thích ý nghĩa các tùy chọn đã dùng:
–i: (install) cài đặt một package
–v: (verbose) hiện thị tóm tắt kết quả sau khi cài đặt package
–h: (hash) hiện thị dấu “#” thông báo quá trình cài đặt đang tiếp diễn
b/ Cập nhật một package (upgrade):
[[email protected] ~]# rpm -Uvh samba3-client-3.6.24-45.el6.x86_64.rpm
Ta có thể dụng lệnh rpm với các tùy chọn:
—nodeps: lệnh rpm sẽ bỏ qua các gói phụ thuộc
—force: lệnh rpm sẽ bỏ qua lỗi xung đột
c/Truy vấn các package đã được cài đặt trên hệ thống (Query):
Liệt kê các package có tên samba3
[[email protected] ~]# rpm -qa samba3
Liệt kê các package có chứa tên samba3
[[email protected] ~]# rpm -qa |grep “samba”
Liệt kê các files tài liệu liên quan đến samba
[[email protected] ~]# rpm -qd samba3
Liệt kê các thông tin mô tả gói samba3
[[email protected] ~]# rpm -qi samba3
Liệt kê tất các tập tin cấu hình của samba3
[[email protected] ~]# rpm -qc samba3
Giải thích các tùy chọn:
–q: (packagefile) hiện thị package
–a: (all) truy vấn tất cả các package đã được cài đặt
–d: (documentation) liệt kê các files tài liệu liên quan đến package
–i: (information) liệt kệ các thông tin như package name, description, release number, và các thông tin khác
–c: (configuration) liệt kê các tập tin cấu hình của package
d/ Gỡ bỏ một package (Erase):
[[email protected] ~]# rpm -e samba3-3.6.24-45.el6.x86_64
[[email protected] ~]# rpm -e samba3-client-3.6.24-45.el6.x86_64
Dùng lệnh để kiểm tra kết quả:
[[email protected] ~]# rpm -qa |grep “samba3”
Nếu gỡ bỏ một package mà package đó còn phụ thuộc vào các package khác thì khi gỡ bỏ ta dùng thêm tùy chọn –nodeps.
2/ Yellowdog Updater Modified (YUM)
Một tiện ích khác được cộng đồng Redhat phát triển riêng, nó cũng tương tự như tiện ích RPM mục đích và ưu điểm giúp người dùng cài đặt phần mềm dễ dàng hơn. Tuy nhiên ở yum có sự khác biệt đó là nó tự động xác định được các gói phụ thuộc và tự động cài đặt các gói phụ thuộc đó trước khi cài đặt gói chính. Yêu cầu của phương pháp này là bạn phải có internet.
Tìm một phần mềm nào đó:
#yum search tên_phần_mềm
[[email protected] ~]# yum search httpd
Liệt kê tất cả các gói phần mềm đã được cài đặt trên máy:
#yum list installed
[[email protected] ~]# yum list installed | grep “httpd”
Hiện thị danh sách các gói phần mềm có thể được cài đặt bằng yum:
#yum list hoặc yum list all
[[email protected] ~]# yum list all
Hiển thị danh sách các gói phần mềm đã có bản update:
#yum list update hoặc yum check-update
[[email protected] ~]# yum list update
Thực hiện nâng cấp tất cả các gói phần mềm:
#yum update
[[email protected] ~]# yum update
Kiểm tra xem một gói phần mềm cụ thể đã có bản update mới chưa:
#yum update tên_phần_mềm
[[email protected] ~]# yum update httpd
Cài đặt gói phần mềm cụ thể:
#yum install tên_phần_mềm
[[email protected] ~]# yum install httpd
Gỡ bỏ gói phần mềm cụ thể:
#yum remove tên_phần_mềm
[[email protected] ~]# yum remove httpd
Hiển thị các gói phần mềm ko thể cài đặt:
#yum extras
[[email protected] ~]# yum extras
Hiển thị thông tin về gói phần mềm của một file cụ thể:
#yum whatprovides tên_tập_tin
[[email protected] ~]# yum whatprovides /etc/httpd
Hiện thị thông tin về gói phần mềm:
#yum info tên_phần mềm
[[email protected] ~]# yum info httpd
3/ Biên dịch phần mềm
Phương pháp này thì khác hơn so với RPM và Yum nó không phụ thuộc bạn dùng distro nào miễn là dùng Linux là điều có thể dùng phương pháp này. Bước đầu tiên khi muốn thực hiện phương pháp cài đặt này là bạn phải có file source của nó(có định dạng thường là file nén tag.gz. tar.bz2,..). Sau khi down file source về bạn tiến hành giải nén nó ra, sau đó bay vào trong thư mục giải nén thực hiện quá trình đầu tiên là check thư viện và các config file. Lỗi 98% thường xuất hiện tại bước này, vì cũng giống như RPM biên dịch phần mềm cũng cần phải đầy đủ thư viện thì mới có thể biên dịch được. Và bước này cũng chiếm nhiều thời gian nhất trong 3 bước cài đặt, qua được bước này 2 bước kia coi như là hoàn tất.
Nhìn chung biên dịch phần mềm có phần giống với tiện ích RPM là không thể tự động tìm các gói phụ thuốc để cài đặt trước như tiện ích Yum, và 1 đặc điểm chung nữa là cả Yum và RPM điều cài đặt những gói nhị phân. Nói một cách dễ hiểu, cài đặt gói nhị phân như RPM hay Yum thì nhượt điểm đó là bạn không thể tự mình điều khiển được những gì muốn cài vào hệ thống mà gần như mặc định là cài tất cả. Nhưng 1 trong 3 nguyên tắc trong bảo mật hệ thống “những gì không dùng nên xóa hoặc tắt bỏ”, mục đích của nguyên tắc này là giảm thiểu rủi ro một cách tối ưu nhất có thể cho hệ thống phát sinh từ những thành phần hay module trong phần mềm. Với yêu cầu này thì phương pháp biên dịch phần mềm có thể giúp bạn giải quyết được, bạn có thể tùy chỉnh cài đặt những thành phần nào vào hệ thống ở bước đầu tiên.
Bên cạnh đó, việc sử dụng phương pháp biên dịch bạn có thể tối ưu hóa tài nguyên hệ thống, Mặt khác, đối với kiến thức trong tương lai, biên dịch có thể cho bạn những kiến thức cơ bản đầu tiên về biên dịch kernel trên Linux và đích cuối cùng chính là tự mình biên dịch một distro linux cho riêng mình.
Biên dịch phần mềm httpd:
Bước 1: Tải httpd-2.4.10.tar.bz2
Bước 2: Giải nén tập tin
#unzip để giải nén name_package.zip
#tar -xvzf đẻ giải nén name_package.tar.gz
#tar -jvxf để giải nén name_package.tar.bz2
#tar -x để giải nén name_package.tgz
Bước 3: Tạo thư mục để cài phần mềm
Tạo thư mục httpd trong thư mục /usr/local/
Sử dụng lệnh #ll để kiểm tra thư mục vừa tạo
Bước 4: Vào thư mục vừa giải nén để chuẩn bị biên dịch
[[email protected] ~]# cd httpd-2.4.10
Các bạn đọc file README hoặc INSTALL để xem hướng dẫn cài đặt.
[[email protected] httpd-2.4.10]# vi README
[[email protected] httpd-2.4.10]# vi INSTALL
Bước 5: Cấu hình cho gói phần mềm (Bước này xảy ra lỗi nhiều nhất)
[[email protected] httpd-2.4.10]# ./configure –prefix=/usr/local/httpd/ –with-included-apr
#–prefix là nơi sẽ cài phần mềm vào giống như chọn đường dẫn để cài phần mềm trong windows.
#–with-included-apr: trong tập tin INSTALL có hướng dẫn là tải apr và apr-util rồi copy vào /httpd-2.4.10/srclib/
Bước 6: Biên dịch cho gói phần mềm:
#make
[[email protected] httpd-2.4.10]# make
Bước 7: Cài đặt gói phần mềm httpd vừa biên dịch:
#make install
[[email protected] httpd-2.4.10]# make install
Khởi động dịch vụ httpd:
[[email protected] ~]# /usr/local/httpd/bin/apachectl start
Xong các bước trên các bạn cài phần mềm w3m để lướt web trên giao diện dòng lệnh:
[[email protected] ~]# yum install w3m
[[email protected] ~]# w3m localhost
Kết quả như hình dưới là đã thành công:
Tài liệu và link tham khảo