Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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:

rpm_0 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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

rpm_1 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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:

rpm_2 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

[[email protected] ~]# rpm -ivh samba3-client-3.6.24-45.el6.x86_64.rpm

rpm_3 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

[[email protected] ~]# rpm -ivh samba3-3.6.24-45.el6.x86_64.rpm

rpm_5 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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

rpm_6 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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

rpm_7 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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

rpm_9 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

Liệt kê các thông tin mô tả gói samba3

[[email protected] ~]# rpm -qi samba3

rpm_8 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

Liệt kê tất các tập tin cấu hình của samba3

[[email protected] ~]# rpm -qc samba3

rpm_10 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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

biendich_1 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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

biendich_2 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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/

biendich_3 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

Sử dụng lệnh #ll để kiểm tra thư mục vừa tạo

biendich_4 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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

biendich_5 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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

biendich_6 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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/

biendich_8 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

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:

biendich_7 Tư học LPI 1, 2: Bài 6 Cài đặt phần mềm

Tài liệu và link tham khảo

BÌNH LUẬN

Please enter your comment!
Please enter your name here