Quản lý gói là một tính năng cốt lõi trong hệ thống Linux. Mặc dù định dạng đóng gói và công cụ quản lý có thể khác nhau giữa các bản phân phối, hầu hết đều dựa vào một trong hai bộ công cụ chủ lực.
Đối với các bản phân phối dựa trên Red Hat Enterprise Linux như RHEL và Rocky Linux, định dạng đóng gói RPM cùng với các công cụ như rpm và yum được sử dụng rộng rãi. Trong khi đó, các hệ thống dựa trên Debian như Ubuntu và các bản phân phối liên quan thường dùng định dạng .deb cùng với apt và dpkg.
Trong những năm gần đây, nhiều công cụ quản lý gói bổ trợ đã xuất hiện, chạy song song với các công cụ cốt lõi apt và dpkg. Ví dụ, snap mang lại tính di động và cách ly (sandboxing) vượt trội, còn Homebrew, vốn xuất phát từ macOS, cho phép cài đặt các công cụ dòng lệnh dành cho người dùng cá nhân, giúp tránh xung đột với các gói hệ thống.
Trong tài liệu này, bạn sẽ được tìm hiểu về một số công cụ quản lý gói phổ biến mà các quản trị viên hệ thống sử dụng trên các hệ thống Debian và Ubuntu. Đây là tài liệu tham khảo nhanh hữu ích giúp bạn thực hiện các nhiệm vụ quản lý gói trên các hệ thống này một cách hiệu quả.
Yêu cầu tiên quyết
- Một máy chủ Ubuntu 20.04 hoặc Debian và một người dùng không phải root có quyền sudo.
(Bạn có thể tham khảo hướng dẫn “Cài đặt ban đầu cần thiết Ubuntu 20.04” để biết cách thiết lập người dùng với quyền sudo.)
Bước 1 – Tổng quan về các công cụ quản lý gói của Debian
Hệ sinh thái Debian/Ubuntu sử dụng khá nhiều công cụ quản lý gói khác nhau để quản lý phần mềm trên hệ thống.
Hầu hết các công cụ này có mối quan hệ với nhau và hoạt động trên cùng một cơ sở dữ liệu gói. Một số công cụ cung cấp giao diện cấp cao cho hệ thống đóng gói, trong khi các tiện ích khác tập trung vào cung cấp các chức năng cấp thấp.
apt
Lệnh apt có lẽ là thành phần được sử dụng nhiều nhất trong bộ công cụ apt. Mục đích chính của nó là giao tiếp với các kho lưu trữ từ xa do đội ngũ đóng gói của bản phân phối duy trì và thực hiện các thao tác trên các gói có sẵn.
Bộ công cụ apt hoạt động bằng cách lấy thông tin từ các kho lưu trữ từ xa về một bộ nhớ đệm được duy trì trên hệ thống cục bộ. Lệnh apt được dùng để làm mới bộ nhớ đệm cục bộ và cũng được dùng để thay đổi trạng thái của gói (tức là cài đặt hoặc gỡ bỏ gói khỏi hệ thống).
Lưu ý: Ở các phiên bản Ubuntu cũ, lệnh apt cốt lõi được gọi là apt-get. Nó đã được tinh giản lại, nhưng bạn vẫn có thể gọi bằng apt-get vì thói quen hoặc để tương thích với các phiên bản trước.
apt-cache
Một thành phần quan trọng khác của bộ công cụ apt là apt-cache. Tiện ích này sử dụng bộ nhớ đệm cục bộ để truy vấn thông tin về các gói có sẵn và các thuộc tính của chúng.
Ví dụ, khi bạn muốn tìm kiếm một gói cụ thể hoặc một công cụ thực hiện một chức năng nhất định, apt-cache là nơi tốt để bắt đầu. Nó cũng hữu ích khi bạn muốn biết chính xác phiên bản của gói nào sẽ được lựa chọn trong một quy trình nào đó. Thông tin về phụ thuộc và phụ thuộc ngược cũng là một lĩnh vực apt-cache hỗ trợ.
dpkg
Trong khi các công cụ trước tập trung vào quản lý các gói có sẵn trong các kho lưu trữ, lệnh dpkg cũng có thể được sử dụng để thao tác trên các gói .deb riêng lẻ. Công cụ dpkg thực hiện phần lớn công việc “hậu trường” của các lệnh trên; apt đảm nhận công việc dọn dẹp và dpkg tương tác trực tiếp với các gói.
Khác với các lệnh apt, dpkg không có khả năng tự động giải quyết các phụ thuộc. Chức năng chính của nó là làm việc trực tiếp với các gói .deb và phân tích cấu trúc của gói. Mặc dù dpkg có thể thu thập một số thông tin về các gói đã được cài đặt trên hệ thống, bạn không nên sử dụng nó như công cụ quản lý gói chính.
Bước 2 – Cập nhật bộ nhớ đệm gói và hệ thống
Các công cụ quản lý gói của Debian và Ubuntu giúp giữ danh sách các gói có sẵn của hệ thống luôn được cập nhật. Chúng cũng cung cấp các phương pháp khác nhau để cập nhật các gói bạn đã cài đặt trên máy chủ.
Cập nhật bộ nhớ đệm gói cục bộ
Các kho lưu trữ từ xa mà công cụ quản lý gói của bạn phụ thuộc vào để lấy thông tin về gói luôn được cập nhật liên tục. Tuy nhiên, hầu hết các công cụ quản lý gói trên Linux được thiết kế để làm việc trực tiếp với một bộ nhớ đệm cục bộ của thông tin này – và bộ nhớ đệm đó cần được làm mới định kỳ.
Thông thường, bạn nên cập nhật bộ nhớ đệm gói cục bộ mỗi phiên làm việc trước khi thực hiện các lệnh khác. Điều này đảm bảo bạn đang làm việc với thông tin mới nhất về phần mềm có sẵn. Một số lệnh cài đặt có thể thất bại nếu bạn đang sử dụng thông tin gói đã lỗi thời.
Để cập nhật bộ nhớ đệm cục bộ, sử dụng lệnh apt với sub-command update:
Cập nhật các gói
Lệnh apt phân biệt giữa hai quy trình cập nhật khác nhau. Quy trình cập nhật đầu tiên (được đề cập ở phần này) có thể được sử dụng để nâng cấp các thành phần không yêu cầu loại bỏ gói. Để biết cách cập nhật cho phép apt loại bỏ và thay thế các thành phần khi cần, hãy xem mục bên dưới.
Quy trình này rất quan trọng khi bạn không muốn loại bỏ bất kỳ gói nào đã được cài đặt theo bất kỳ hoàn cảnh nào. Tuy nhiên, một số bản cập nhật yêu cầu thay thế các thành phần hệ thống hoặc loại bỏ các tệp gây xung đột. Quy trình này sẽ bỏ qua bất kỳ bản cập nhật nào yêu cầu loại bỏ gói:
Quy trình thứ hai sẽ cập nhật tất cả các gói, kể cả những gói yêu cầu phải loại bỏ. Điều này thường cần thiết khi các phụ thuộc thay đổi. Thường thì các gói bị loại bỏ sẽ được thay thế bằng các gói tương đương trong quá trình nâng cấp, do đó quá trình này thường an toàn. Tuy nhiên, bạn nên kiểm tra các gói sẽ bị loại bỏ để đảm bảo không có thành phần quan trọng nào bị đánh dấu loại bỏ.
Để thực hiện điều này, nhập:
Bước 3 – Tải xuống và cài đặt gói
Tìm kiếm gói
Bước đầu tiên khi tải xuống và cài đặt các gói thường là tìm kiếm trong kho lưu trữ của bản phân phối để tìm các gói mà bạn cần.
Tìm kiếm gói là một thao tác nhắm vào bộ nhớ đệm gói để lấy thông tin. Để thực hiện việc này, hãy sử dụng lệnh apt-cache search
. Hãy nhớ rằng bạn nên đảm bảo bộ nhớ đệm cục bộ của mình được cập nhật bằng lệnh sudo apt update
trước khi tìm kiếm gói:
Vì quy trình này chỉ truy vấn thông tin nên không cần quyền sudo. Bất kỳ tìm kiếm nào được thực hiện sẽ kiểm tra cả tên gói và mô tả đầy đủ của gói.
Ví dụ, nếu bạn tìm kiếm htop
, bạn sẽ thấy kết quả như sau:
Output:
aha - ANSI color to HTML converter htop - interactive processes viewer libauthen-oath-perl - Perl module for OATH One Time Passwords
Như bạn có thể thấy, có một gói có tên htop, nhưng cũng có hai chương trình khác, mỗi chương trình đề cập đến htop trong phần mô tả đầy đủ của gói (mô tả hiển thị chỉ là bản tóm tắt ngắn).
Cài đặt gói từ kho lưu trữ
Để cài đặt một gói từ kho lưu trữ cùng với tất cả các phần phụ thuộc cần thiết, bạn có thể sử dụng lệnh apt
với tham số install
.
Cú pháp:
Bạn có thể cài đặt nhiều gói cùng một lúc bằng cách phân tách chúng bằng dấu cách:
Nếu gói bạn yêu cầu cần thêm các phần phụ thuộc, chúng sẽ được hiển thị và bạn sẽ được yêu cầu xác nhận trước khi tiếp tục. Ví dụ:
sudo apt install apache2
Output
Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 236 kB of archives. After this operation, 1,163 kB of additional disk space will be used. Do you want to continue [Y/n]?Bạn có thể tiếp tục bằng cách nhấn Enter hoặc nhập Y, hoặc hủy bỏ bằng cách nhập n.
Cài đặt một phiên bản cụ thể của gói
Nếu bạn cần cài đặt một phiên bản cụ thể của gói, bạn có thể chỉ định phiên bản mong muốn bằng dấu =
:
Bạn có thể kiểm tra các phiên bản khả dụng của gói bằng lệnh sau:
Output:
nginx: Installed: (none) Candidate: 1.18.0-0ubuntu1.2 Version table: 1.18.0-0ubuntu1.2 500 500 http://mirrors.digitalocean.com/ubuntu focal-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages 1.17.10-0ubuntu1 500 500 http://mirrors.digitalocean.com/ubuntu focal/main amd64 Packages
Cấu hình lại gói đã cài đặt
Một số gói yêu cầu thực hiện các bước cấu hình sau khi cài đặt. Nếu bạn cần chạy lại các bước này, hãy sử dụng lệnh:
Thử nghiệm lệnh cài đặt mà không thực hiện thật
Bạn có thể kiểm tra trước các thay đổi mà lệnh cài đặt sẽ thực hiện mà không thực sự cài đặt gì cả bằng cách thêm cờ -s
:
Ví dụ:
Output:
NOTE: This is only a simulation! apt needs root privileges for real execution. Keep also in mind that locking is deactivated, so don't depend on the relevance to the real current situation! Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Inst apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64]) Conf apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Conf apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64])
Điều này giúp bạn xem trước những thay đổi sẽ xảy ra mà không cần quyền sudo
.
Cài đặt gói mà không cần xác nhận
Mặc định, apt
sẽ yêu cầu xác nhận trước khi cài đặt. Nếu bạn muốn bỏ qua bước này, hãy sử dụng cờ -y
:
Bạn cũng có thể áp dụng cách này khi nâng cấp hệ thống:
Sửa lỗi phụ thuộc khi cài đặt gói
Nếu quá trình cài đặt bị lỗi do thiếu phụ thuộc, bạn có thể sử dụng lệnh sau để tự động sửa lỗi:
Lệnh này sẽ tìm và cài đặt các gói bị thiếu để khắc phục vấn đề.
Tải gói từ kho lưu trữ mà không cài đặt
Nếu bạn chỉ muốn tải về một gói mà không cần cài đặt, sử dụng lệnh:
Gói này sẽ được lưu trong thư mục hiện tại.
Cài đặt gói .deb
Một số nhà cung cấp phần mềm cung cấp file .deb
thay vì cài đặt từ kho lưu trữ. Để cài đặt tệp .deb
, bạn có thể sử dụng dpkg
:
Tuy nhiên, dpkg
không tự động xử lý phụ thuộc, vì vậy nếu có lỗi, bạn cần chạy lệnh:
Lệnh này sẽ cài đặt bất kỳ phụ thuộc nào bị thiếu và hoàn tất quá trình cài đặt.
Bước 4 – Gỡ cài đặt gói và dọn dẹp hệ thống
Phần này sẽ trình bày cách gỡ cài đặt các gói và dọn dẹp các tệp có thể bị bỏ lại sau các thao tác quản lý gói.
Gỡ cài đặt một gói
Để loại bỏ một gói đã được cài đặt, bạn sử dụng lệnh apt remove. Lệnh này sẽ xóa hầu hết các tệp mà gói đã cài đặt lên hệ thống, ngoại trừ một điểm quan trọng.
Lệnh này giữ lại các tệp cấu hình, nhằm đảm bảo rằng cấu hình của bạn vẫn có sẵn nếu sau này bạn cần cài đặt lại ứng dụng. Điều này rất hữu ích vì có nghĩa là bất kỳ tệp cấu hình tùy chỉnh nào của bạn sẽ không bị xóa nếu bạn vô tình gỡ bỏ một gói.
Để hoàn thành thao tác này, bạn cần cung cấp tên của gói mà bạn muốn gỡ cài đặt:
Gỡ cài đặt một gói và xóa sạch tất cả tệp cấu hình
Nếu bạn muốn gỡ bỏ một gói và tất cả các tệp liên quan khỏi hệ thống, bao gồm cả các tệp cấu hình, bạn có thể sử dụng lệnh apt purge.
Khác với lệnh remove đã nêu trên, lệnh purge sẽ xóa sạch mọi thứ. Điều này rất hữu ích nếu bạn không muốn lưu giữ các tệp cấu hình hoặc nếu gặp sự cố và muốn khởi đầu lại từ đầu.
Lưu ý rằng, một khi các tệp cấu hình của bạn bị xóa, bạn sẽ không thể khôi phục chúng lại:
Khi các gói được thêm vào và gỡ bỏ khỏi kho lưu trữ bởi các quản trị viên gói của bản phân phối, một số gói sẽ trở nên lỗi thời.
Công cụ apt có thể xóa các tệp gói trên hệ thống cục bộ liên quan đến những gói không còn khả dụng trong kho lưu trữ bằng cách sử dụng lệnh autoclean.
Điều này sẽ giải phóng không gian trên máy chủ của bạn và loại bỏ các gói có thể đã lỗi thời trong bộ nhớ đệm cục bộ.
Lệnh này không xóa các gói đang được cài đặt, mà chỉ xóa các tệp cũ không còn trong kho lưu trữ, giúp tiết kiệm dung lượng ổ đĩa.
Tóm tắt các lệnh quan trọng
Chức năng | Lệnh |
---|---|
Gỡ cài đặt gói nhưng giữ lại tệp cấu hình | sudo apt remove package |
Gỡ cài đặt gói và xóa luôn tệp cấu hình | sudo apt purge package |
Xóa các gói phụ thuộc không còn cần thiết | sudo apt autoremove |
Xóa các gói phụ thuộc không còn cần thiết và cả tệp cấu hình của chúng | sudo apt --purge autoremove |
Xóa các tệp cũ, giải phóng dung lượng | sudo apt autoclean |
Bây giờ, bạn đã biết cách quản lý các gói đã cài đặt và giữ cho hệ thống luôn sạch sẽ!
Bước 5 – Lấy thông tin về gói
Mỗi gói phần mềm chứa một lượng lớn siêu dữ liệu mà bạn có thể truy cập bằng các công cụ quản lý gói. Phần này sẽ trình bày một số cách phổ biến để lấy thông tin về các gói có sẵn và đã được cài đặt.
Hiển thị thông tin chi tiết về một gói trong kho lưu trữ
Để hiển thị thông tin chi tiết về một gói trong kho lưu trữ của bản phân phối, bạn có thể sử dụng lệnh apt-cache show. Đối tượng của lệnh này là tên của gói trong kho lưu trữ. Ví dụ:
Lệnh này sẽ hiển thị thông tin về các ứng viên cài đặt cho gói được chỉ định. Mỗi ứng viên sẽ có các thông tin về các phụ thuộc, phiên bản, kiến trúc, xung đột, tên tệp gói thực tế, dung lượng của gói cũng như cài đặt, và một mô tả chi tiết cùng các thông tin khác.
Output:
Để hiển thị thêm thông tin về từng ứng viên, bao gồm cả danh sách đầy đủ các phụ thuộc ngược (tức là danh sách các gói phụ thuộc vào gói được truy vấn), bạn có thể sử dụng lệnh showpkg:
Hiển thị thông tin của một gói .deb
Để hiển thị chi tiết về một tệp .deb, bạn có thể sử dụng cờ –info với lệnh dpkg. Đối tượng của lệnh này phải là đường dẫn tới tệp .deb:
Lệnh này sẽ hiển thị một số siêu dữ liệu về gói, bao gồm tên gói và phiên bản, kiến trúc mà nó được xây dựng, dung lượng và các phụ thuộc cần thiết, mô tả và các xung đột.
Để liệt kê cụ thể các phụ thuộc (các gói mà gói này phụ thuộc vào) và các phụ thuộc ngược (các gói phụ thuộc vào gói này), bạn có thể sử dụng tiện ích apt-cache.
Đối với thông tin phụ thuộc thông thường, bạn có thể sử dụng sub-command depends:
Output:
Lệnh này sẽ hiển thị thông tin về mọi gói được liệt kê như là phụ thuộc cứng, gợi ý, khuyến nghị, hoặc xung đột.
Nếu bạn cần tìm ra gói nào phụ thuộc vào một gói nhất định, bạn có thể chuyển gói đó cho lệnh apt-cache rdepends:
Hiển thị phiên bản gói đã cài đặt và có sẵn
Thường có nhiều phiên bản của một gói trong kho lưu trữ, với một phiên bản mặc định được chọn. Để xem các phiên bản có sẵn của một gói, bạn có thể sử dụng lệnh:
Lệnh này sẽ hiển thị phiên bản nào đã được cài đặt (nếu có), phiên bản sẽ được cài đặt theo mặc định nếu bạn không chỉ định phiên bản khi cài đặt, và một bảng các phiên bản gói kèm theo trọng số chỉ ra mức ưu tiên của từng phiên bản.
Thông tin này có thể giúp bạn xác định phiên bản nào sẽ được cài đặt và các lựa chọn thay thế có sẵn. Vì lệnh này cũng liệt kê các kho lưu trữ chứa từng phiên bản, nên nó hữu ích để xác định xem có kho lưu trữ bổ sung nào đang ghi đè lên các gói từ kho lưu trữ mặc định hay không.
Hiển thị các gói đã cài đặt với dpkg -l
Để hiển thị các gói đã được cài đặt trên hệ thống, bạn có một vài phương pháp khác nhau với định dạng và mức độ chi tiết khác nhau.
Phương pháp đầu tiên là sử dụng lệnh dpkg hoặc dpkg-query với cờ -l. Đầu ra của cả hai lệnh này là giống nhau. Nếu không truyền đối số nào, nó sẽ liệt kê tất cả các gói đã được cài đặt hoặc cài đặt một phần trên hệ thống. Ví dụ:
Output:
Đầu ra sẽ tiếp tục liệt kê tất cả các gói trên hệ thống. Phía trên đầu ra, bạn có thể thấy ý nghĩa của ba ký tự đầu tiên trên mỗi dòng:
-
Ký tự đầu tiên chỉ trạng thái mong muốn của gói:
- u: Unknown (không xác định)
- i: Installed (đã cài đặt)
- r: Removed (đã gỡ bỏ)
- p: Purged (đã loại bỏ hoàn toàn)
- h: Version held (phiên bản bị giữ lại)
-
Ký tự thứ hai chỉ trạng thái thực tế của gói theo hệ thống quản lý gói:
- n: Not installed (chưa cài đặt)
- i: Installed (đã cài đặt)
- c: Configuration files are present, but the application is uninstalled (các tệp cấu hình vẫn còn, nhưng ứng dụng đã bị gỡ bỏ)
- u: Unpacked (đã giải nén, nhưng chưa được cấu hình)
- f: The package is half installed (gói được cài đặt một nửa, nghĩa là quá trình cài đặt bị gián đoạn)
- w: The package is waiting for a trigger from a separate package (gói đang chờ kích hoạt từ một gói khác)
- p: The package has been triggered by another package (gói đã được kích hoạt bởi gói khác)
-
Ký tự thứ ba, thường là khoảng trắng, chỉ có một lựa chọn khác:
- r: Chỉ ra rằng gói cần được cài đặt lại, thường có nghĩa là gói đang bị hỏng và không hoạt động.
Phần còn lại của các cột bao gồm tên gói, phiên bản, kiến trúc và mô tả.
Hiển thị trạng thái cài đặt của các gói theo bộ lọc
Nếu bạn thêm một mẫu tìm kiếm sau cờ -l, lệnh dpkg sẽ liệt kê tất cả các gói (dù đã cài đặt hay chưa) chứa mẫu đó. Ví dụ, để tìm kiếm các thư viện xử lý YAML:
Output:
Như bạn thấy từ cột đầu tiên, kết quả thứ ba và thứ tư không được cài đặt. Điều này cung cấp cho bạn danh sách tất cả các gói khớp với mẫu, cùng trạng thái hiện tại và trạng thái mong muốn của chúng.
Một cách khác để hiển thị các gói đã cài đặt trên hệ thống là dùng lệnh dpkg –get-selections. Lệnh này liệt kê tất cả các gói đã được cài đặt hoặc đã bị gỡ bỏ nhưng chưa bị loại bỏ hoàn toàn:
Để phân biệt giữa các trạng thái, bạn có thể chuyển đầu ra của dpkg qua lệnh awk để lọc theo trạng thái. Ví dụ, để chỉ hiển thị các gói đã được cài đặt:
Để lấy danh sách các gói bị gỡ bỏ mà chưa xóa tệp cấu hình, bạn có thể sử dụng:
Bạn cũng có thể muốn tìm hiểu thêm về cách chuyển hướng đầu ra của lệnh thông qua awk.
Tìm kiếm các gói đã cài đặt
Để tìm kiếm trong cơ sở dữ liệu các gói đã cài đặt cho một gói cụ thể, bạn có thể thêm một chuỗi lọc sau tùy chọn –get-selections. Phương pháp này hỗ trợ tìm kiếm với ký tự đại diện (wildcards) và sẽ hiển thị tất cả các gói đã cài đặt hoặc vẫn giữ các tệp cấu hình trên hệ thống:
Bạn có thể lọc lại kết quả bằng cách sử dụng biểu thức của awk như ở phần trước.
Liệt kê các tệp được cài đặt bởi một gói
Để tìm ra các tệp mà một gói chịu trách nhiệm cài đặt, sử dụng cờ -L với lệnh dpkg:
Lệnh này sẽ in ra đường dẫn tuyệt đối của từng tệp được kiểm soát bởi gói. Lưu ý rằng các tệp cấu hình được tạo ra bởi các tiến trình của gói sẽ không được bao gồm.
Để tìm ra gói nào chịu trách nhiệm cài đặt một tệp cụ thể trong hệ thống của bạn, bạn có thể chuyển đường dẫn tuyệt đối đó cho lệnh dpkg -S:
Hãy nhớ rằng các tệp được di chuyển bởi các script sau cài đặt có thể không được liên kết lại với gói qua kỹ thuật này.
Tìm gói cung cấp một tệp mà không cần cài đặt nó
Sử dụng dpkg -S, bạn có thể xác định gói nào sở hữu một tệp. Tuy nhiên, đôi khi bạn cần biết gói nào cung cấp một tệp hoặc lệnh, ngay cả khi gói đó chưa được cài đặt.
Để làm được điều này, bạn cần cài đặt tiện ích apt-file. Công cụ này duy trì cơ sở dữ liệu riêng của nó, bao gồm đường dẫn cài đặt của mọi tệp do gói kiểm soát trong kho dữ liệu.
Cài đặt gói apt-file như bình thường:
Sau đó, cập nhật cơ sở dữ liệu của công cụ và tìm kiếm một tệp bằng cách nhập:
Lưu ý rằng phương pháp này chỉ hoạt động đối với các vị trí tệp được cài đặt trực tiếp bởi gói. Bất kỳ tệp nào được tạo ra thông qua các script sau cài đặt sẽ không thể truy vấn được.
Trong bước tiếp theo, bạn sẽ học cách nhập và xuất danh sách các gói đã cài đặt.
Bước 6 – Chuyển đổi danh sách gói giữa các hệ thống
Nhiều lúc, bạn có thể cần sao lưu danh sách các gói đã cài đặt từ một hệ thống và sử dụng nó để cài đặt cùng bộ gói trên một hệ thống khác. Điều này cũng hữu ích cho mục đích sao lưu. Phần này sẽ trình bày cách xuất và nhập danh sách các gói.
Nếu bạn cần nhân rộng bộ gói đã cài đặt trên một hệ thống sang hệ thống khác, trước tiên bạn cần phải xuất danh sách gói của mình.
Bạn có thể xuất danh sách các gói đã cài đặt ra một tệp bằng cách chuyển hướng đầu ra của lệnh dpkg --get-selections
vào một tệp văn bản:
Bạn cũng có thể muốn tìm hiểu thêm về cách chuyển hướng đầu vào và đầu ra.
Danh sách này sau đó có thể được sao chép sang máy tính thứ hai và nhập vào.
Ngoài ra, bạn có thể cần sao lưu danh sách nguồn (sources list) và danh sách khóa tin cậy của mình. Bạn có thể sao lưu các nguồn bằng cách tạo một thư mục mới và sao chép chúng từ cấu hình hệ thống ở /etc/apt/
:
Bất kỳ khóa nào mà bạn đã thêm để cài đặt các gói từ các kho lưu trữ bên thứ ba cũng có thể được xuất ra bằng lệnh:
Bây giờ, bạn có thể chuyển tệp packagelist.txt
, thư mục sources
và tệp trusted_keys.txt
sang máy tính khác để nhập.
Nhập danh sách gói
Nếu bạn đã tạo danh sách gói bằng cách sử dụng dpkg --get-selections
như đã trình bày ở trên, bạn có thể nhập các gói trên máy tính khác bằng lệnh dpkg
nữa.
Đầu tiên, bạn cần thêm các khóa tin cậy và cài đặt danh sách nguồn mà bạn đã sao chép từ môi trường đầu tiên. Giả sử rằng tất cả dữ liệu sao lưu đã được chuyển sang thư mục home của máy tính mới, bạn có thể nhập:
Tiếp theo, xóa trạng thái của tất cả các gói không cần thiết trên máy tính mới. Điều này đảm bảo rằng bạn đang áp dụng các thay đổi trên một môi trường sạch. Việc này phải được thực hiện bằng tài khoản root hoặc với quyền sudo:
Lệnh này sẽ đánh dấu tất cả các gói không cần thiết để gỡ cài đặt. Bạn nên cập nhật danh sách gói cục bộ để quá trình cài đặt có thông tin về tất cả phần mềm bạn dự định cài đặt. Quá trình cài đặt và nâng cấp thực tế sẽ được thực hiện bởi một công cụ có tên là dselect.
Bạn cần đảm bảo rằng công cụ dselect đã được cài đặt. Công cụ này duy trì cơ sở dữ liệu riêng, vì vậy bạn cũng cần cập nhật nó trước khi tiếp tục:
Tiếp theo, bạn có thể áp dụng danh sách gói lên danh sách hiện tại để cấu hình xem gói nào nên được giữ lại hoặc tải về:
Lệnh này thiết lập trạng thái đúng cho các gói. Để áp dụng các thay đổi, chạy:
Lệnh này sẽ tải xuống và cài đặt bất kỳ gói cần thiết nào, đồng thời gỡ bỏ các gói được đánh dấu loại bỏ. Cuối cùng, danh sách gói của bạn sẽ khớp với danh sách của máy tính trước đó, mặc dù các tệp cấu hình vẫn cần được sao chép hoặc chỉnh sửa. Bạn có thể sử dụng một công cụ như etckeeper để di chuyển các tệp cấu hình từ thư mục /etc
.
Trong bước tiếp theo và cuối cùng, bạn sẽ tìm hiểu cách làm việc với các kho lưu trữ gói của bên thứ ba.
Bước 7 – Thêm kho lưu trữ và PPAs
Mặc dù tập hợp các kho lưu trữ mặc định do hầu hết các bản phân phối cung cấp thường là dễ bảo trì nhất, nhưng có những lúc các nguồn bổ sung lại rất hữu ích. Phần này sẽ trình bày cách cấu hình công cụ đóng gói của bạn để tham khảo thêm các nguồn bên ngoài.
Một lựa chọn thay thế cho các kho lưu trữ truyền thống trên Ubuntu là PPAs, hay “personal package archives”. Các phiên bản Linux khác thường sử dụng khái niệm khác nhưng tương tự cho các kho lưu trữ bên thứ ba. Thông thường, PPAs có phạm vi nhỏ hơn so với kho lưu trữ chính và chứa các bộ ứng dụng tập trung được duy trì bởi chủ sở hữu PPA.
Việc thêm PPAs vào hệ thống cho phép bạn quản lý các gói chứa trong đó bằng công cụ quản lý gói thông thường, giúp cung cấp các gói cập nhật hơn mà không có trong kho lưu trữ mặc định. Hãy chú ý chỉ thêm những PPAs mà bạn tin cậy, vì bạn đang cho phép một người duy trì không tiêu chuẩn xây dựng các gói cho hệ thống của mình.
Để thêm một PPA, bạn có thể sử dụng lệnh add-apt-repository. Đối tượng của lệnh này cần bao gồm nhãn “ppa:” theo sau là tên chủ sở hữu PPA trên Launchpad, dấu gạch chéo và tên PPA, ví dụ:
Có thể bạn sẽ được yêu cầu chấp nhận khóa của người đóng gói. Sau đó, PPA sẽ được thêm vào hệ thống của bạn, cho phép bạn cài đặt các gói bằng các lệnh apt thông thường. Trước khi tìm kiếm hoặc cài đặt gói, hãy đảm bảo cập nhật bộ nhớ đệm cục bộ với thông tin về PPA mới:
Bạn cũng có thể chỉnh sửa cấu hình kho lưu trữ trực tiếp. Bạn có thể sửa tệp /etc/apt/sources.list
hoặc tạo một tệp danh sách mới trong thư mục /etc/apt/sources.list.d
. Nếu chọn cách thứ hai, tên tệp bạn tạo phải kết thúc bằng .list
:
Bên trong tệp, bạn có thể thêm vị trí của kho lưu trữ mới theo định dạng sau:
Các thành phần của định nghĩa kho lưu trữ bao gồm:
- deb hoặc deb-src: Xác định loại kho lưu trữ. Các kho lưu trữ thông thường được đánh dấu với deb, trong khi kho lưu trữ nguồn bắt đầu bằng deb-src.
- url: Địa chỉ URL chính của kho lưu trữ, là nơi kho lưu trữ được tìm thấy.
- release code name hoặc suite: Thông thường là tên mã của bản phát hành của bạn, nhưng cũng có thể là bất kỳ tên nào được sử dụng để xác định một bộ gói cụ thể cho phiên bản của bản phân phối.
- component names: Các nhãn cho bộ gói mà bạn muốn có sẵn. Đây thường là sự phân biệt do người duy trì kho lưu trữ cung cấp để thể hiện độ tin cậy hoặc các hạn chế về bản quyền của phần mềm chứa trong kho.
Bạn có thể thêm các dòng này vào trong tệp. Hầu hết các kho lưu trữ sẽ có thông tin chi tiết về định dạng chính xác cần sử dụng. Trên một số bản phân phối Linux khác, bạn cũng có thể thêm các nguồn kho lưu trữ bổ sung bằng cách cài đặt các gói chỉ chứa tệp cấu hình cho kho lưu trữ đó – phù hợp với cách thức hoạt động của các trình quản lý gói.
Kết luận
Quản lý gói được xem là một trong những yếu tố then chốt trong quản trị hệ thống Linux. Mặc dù có rất nhiều thao tác quản lý gói khác nhau mà bạn có thể thực hiện, bài viết này đã cung cấp những kiến thức cơ bản về Ubuntu – những nội dung dễ dàng áp dụng cho các bản phân phối Linux khác chỉ với vài điều chỉnh nhỏ.
Tiếp theo, bạn có thể khám phá sâu hơn về cách quản lý gói trên các nền tảng Linux khác để mở rộng kiến thức và kỹ năng quản trị của mình.