Quản lý Package
1.Một số khái niệm liên quan đến package
repository
Rất nhiều phầm mềm và tài liệu cho Linux sẵn có ở dạng package ở trong một hay nhiều repository. Các package được lưu trong repository thường được kiểm tra và rất dễ cài đặt với giao diện đồ họa hay câu lệnh.
.deb package
Debian, ubuntu, Mint, và tất cả các bản phân phối linux dựa trên Debian sử dụng .deb package. Để quản lý package trên những hệ thống này, bạn cần sử dụng aptitude hay apt-get, cả hai tool đều là front-end cho dpkg.
.rpm packages
Redhat, Fedora, Centos, OpenSUSE, … sử dụng .rpm package. Công cụ để quản lý ứng dụng trên các hệ thống này là yum và rpm.
Phụ thuộc
Một số package cần có nhứng package khác để hoạt động. Những công cụ như aptitude, apt-get và yum là sẽ cài tất cả những package phụ thuộc mà bạn cần. Nhưng khi sử dụng dpkg hay rpm để cài hoặc build source code thì bạn sẽ cần cài thêm các package phụ thuộc nếu cần.
Opensource
Các repository này chứa rất nhiều phần mềm nguồn mở độc lập. Thông thường mã nguồn được tùy chỉnh để tích hợp tốt hơn với phân phối của bạn. Hầu hết các bản phân phối cũng cung cấp mã nguồn được sửa đổi này dưới dạng một package trong một hoặc nhiều source repository. Bạn có thể tự do truy cập trang web của dự án (samba.org, apache.org, github.com, …) để tải xuống mã nguồn vanilla .
2.deb package management
- dpkg là một công cụ ở tầng thấp tương tác với .deb package. Để hiển thị số lượng các package đã cài đặt trên hệ thống:
lamth@m4700:~$ dpkg -l|wc -l 2503
- dpkg -l $package: là câu lện để xem thông tin về một package nào đó.
lamth@m4700:~$ dpkg -l nmon | tail -1 | tr -s ' ' ii nmon 16g+debian-3 amd64 performance monitoring tool for Linux
- dpkg -S là lệnh tìm xem một file thuộc về package nào.
lamth@m4700:~$ dpkg -S /etc/lvm /var/log/mosquitto/ lvm2: /etc/lvm mosquitto: /var/log/mosquitto
- dpkg -L là lệnh để liệt kê các file được cài đặt bởi một chương trình nào đó. Ví dụ:
dpkg -L grep /. /bin /bin/egrep /bin/fgrep /bin/grep /usr /usr/bin /usr/bin/rgrep /usr/share /usr/share/doc /usr/share/doc/grep ....
- install và remove: có thể cài hoặc xóa package với lệnh
dpkg -i
vàdpkg -r
nhưng bạn phải theo dõi cả những package phụ thuộc. Sử dụngapt-get
hoặcaptitude
sẽ dễ hơn.
3.apt-get
apt-get update
Lệnh apt-get update
là lệnh giúp tải xuống tên, phiên bản và mô tả ngắn về các gói có sắn trên tất cả các repository được cấu hình trên máy của bạn.
apt-get upgrade
Lệnh apt-get upgrade
là lệnh giúp cập nhật tất cả những phần mềm đang được cài đặt trên máy.
apt-get clean
apt-get giữ lại một bản copy của những package đã tải xuống ở trong /var/cache/apt/archives:
lamth@m4700:~$ ls /var/cache/apt/archives/|head
apt_1.6.11_amd64.deb
apt-transport-https_1.6.11_all.deb
apt-utils_1.6.11_amd64.deb
augeas-lenses_1.10.1-2_all.deb
bash_4.4.18-2ubuntu1.1_amd64.deb
binutils_2.30-21ubuntu1~18.04.2_amd64.deb
binutils-common_2.30-21ubuntu1~18.04.2_amd64.deb
binutils-x86-64-linux-gnu_2.30-21ubuntu1~18.04.2_amd64.deb
bridge-utils_1.5-15ubuntu1_amd64.deb
cabextract_1.6-1.1_amd64.deb
Dùng lệnh apt-get clean
để xóa các file .deb từ thư mục này.
apt-cache search
Là lệnh dùng để tìm kiếm package với có sẵn.
apt-get install
Là lệnh dùng để cài đặt một hay nhiều úng dụng bằng cách thêm tên đằng sau lệnh này.
apt-get remove
Là lệnh dùng để gỡ cài đặt một hay nhiều ứng dụng bằng cách thêm tên vào sau lệnh. Sau khi xóa ứng dụng có thể sẽ vẫn còn lưu cấu hình của ứng dụng đó trên hệ thông khi dùng apt-get remove
apt-get purge
apt-get purge
là lệnh giúp xóa ứng dụng và xóa tất cả những file cấu hình liên quan đến ứng dụng.
/etc/apt
Các file cấu hình của apt
, apt-get
, aptitude
đều nằm ở /etc/apt, nếu thay đổi cấu hình ở đây sẽ thay đổi cấu hình cho tất cả ứng dụng đó.
/etc/apt/source.list
File /etc/apt/resource.list là file chứa danh sách địa chỉ http hay ftp của các kho lưu trữ các package có thể cài đặt, được sử dụng bởi apt
hay apt-get
.
Ví dụ:
lamth@m4700:~$ cat /etc/apt/sources.list |grep -v ^# | grep -v ^$
deb http://vn.archive.ubuntu.com/ubuntu/ bionic main restricted
deb http://vn.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
deb http://vn.archive.ubuntu.com/ubuntu/ bionic universe
deb http://vn.archive.ubuntu.com/ubuntu/ bionic-updates universe
deb http://vn.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://vn.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
deb http://vn.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main
4.rpm
Red Hat package managerment có thể được sử dụng với lệnh rpm
.
rpm -qa
Là lệnh dùng để liệt kê các package đã được cài đặt trên hệ thống.
rpm -q
Là lệnh dùng để kiểm tra xem một package đã được cài hay chưa.
rpm -Uvh
Là lệnh dùng để cài đặt hay cập nhật một package.
rpm -e
Là lệnh dùng để xóa một package.
/var/lib/rpm
Thư mục /var/lib/rpm là database lưu trữ các thông tin về những package mà đã được cài đặt (qua rpm). Nó theo dõi tất cả các file nên sẽ cho phép gỡ cài đặt hoàn toàn một phần mềm.
5.yum
yum
là Yellowdog Update, Modified là một công cụ giúp làm việc với những package .rpm dễ hơn . Nó được cài mặc định trên Fedora và Redhat từ bản 5.2.
yum list
Lệnh yum list
là lệnh giúp liệt kê các package có sẵn trên các repository của hệ thống.
yum search
Để tìm kiếm package sử dụng một chuỗi có trong tên hay mô tả của package đó sử dụng yum search $string
.
[root@cen3 ~]# yum search docker
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.vhost.vn
* extras: mirrors.vhost.vn
* updates: mirrors.vhost.vn
============================= N/S matched: docker ==============================
cockpit-docker.x86_64 : Cockpit user interface for Docker containers
docker-client.x86_64 : Client side files for Docker
docker-client-latest.x86_64 : Client side files for Docker
docker-common.x86_64 : Common files for docker and docker-latest
docker-distribution.x86_64 : Docker toolset to pack, ship, store, and deliver
: content
docker-latest-logrotate.x86_64 : cron job to run logrotate on Docker containers
yum provides
Là lệnh dùng để tìm kiếm package mà chứa một file nào đó. ví dụ
[root@cen3 ~]# yum provides /bin/top
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.vhost.vn
* extras: mirrors.vhost.vn
* updates: mirrors.vhost.vn
procps-ng-3.3.10-17.el7.x86_64 : System and process monitoring utilities
Repo : @anaconda
Matched from:
Filename : /bin/top
yum install
yum install $package
là lệnh dùng để cài đặt một hay nhiều package và các package phụ thuộc nếu có.
yum update
Lệnh yum update
là lệnh giúp tại và cập nhật tất cả các package đã được cài đặt. Nếu muốn cập nhật chỉ một package thì thêm tên package vào sau câu lệnh. Lệnh này tương đương lệnh apt upgrade
.
yum check-update
Là lệnh sẽ đọc và làm mới danh sách các package có sẵn trên các repo, tương đương với lệnh apt update
.
yum group
Các package có thể được tập hợp trong một nhóm nào đó. Để liệt kê các nhóm có trên repo được cài đặt, dùng lệnh yum grouplist
Ví dụ
[root@cen3 ~]# yum grouplist
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.vhost.vn
* extras: mirrors.vhost.vn
* updates: mirrors.vhost.vn
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
Basic Web Server
Virtualization Host
Server with GUI
GNOME Desktop
KDE Plasma Workspaces
Development and Creative Workstation
Available Groups:
Compatibility Libraries
Console Internet Tools
Development Tools
Graphical Administration Tools
Legacy UNIX Compatibility
Scientific Support
Security Tools
Smart Card Support
System Administration Tools
System Management
Done
Để cài đặt một nhóm các package sử dụng lệnh yum groupinstall
Các file cấu hình
- Thư mục chứa các repo của yum là /etc/yum.repos.d/
- File cấu hình cho yum nằm ở /etc/yum.conf , chứa vị trí của log file, thư mục cache cho yum và cả một danh sách các repository.
alien
alien là một phần mềm thử nghiệm dùng để chuyển đổi giữa dạng .rpm sang .deb, ngược lại( và những dạng khác)
ví dụ
paul@barry:~$ ls -l netcat*
-rw-r--r-- 1 paul paul 123912 2009-06-04 14:58 netcat-0.7.1-1.i386.rpm
paul@barry:~$ alien --to-deb netcat-0.7.1-1.i386.rpm
netcat_0.7.1-2_i386.deb generated
paul@barry:~$ ls -l netcat*
-rw-r--r-- 1 paul paul 123912 2009-06-04 14:58 netcat-0.7.1-1.i386.rpm
-rw-r--r-- 1 root root 125236 2009-06-04 14:59 netcat_0.7.1-2_i386.deb
6.YUM vs RPM
| rpm | yum |
|—–|—–|
| Nếu muốn cài một package thì cần cài tất cả những package phụ thuộc trước | Khi cài một package tự tìm kiếm và cài đặt các package phụ thuộc|
|Không thể tự động cập nhật các phần mềm| Có thể cập nhật phiên bản mới của ứng dụng với lệnh yum install upgrade
|
|Không thể kết nối đến repo online| Có thể kết nối đến các repo online và tải các package từ đó|