Product SiteDocumentation Site

Chương 6. Bảo trì và Cập nhật: Công cụ APT

6.1. Thêm nội dung vào tệp sources.list
6.1.1. Cú pháp
6.1.2. Kho cho người dùng Ổn định
6.1.3. Các kho cho Người dùng Testing / Unstable
6.1.4. Using Alternate Mirrors
6.1.5. Tài nguyên không chính thức: mentors.debian.net
6.1.6. Bộ nhớ đệm trung gian cho Các Gói Debian (Caching Proxy)
6.2. Các lệnh aptitude, apt-get, và apt
6.2.1. Khởi tạo
6.2.2. Cài đặt và Gỡ bỏ
6.2.3. Nâng cấp hệ thống
6.2.4. Tùy chọn Cấu hình
6.2.5. Các ưu tiên Quản lý Gói
6.2.6. Làm việc với một số bản phân phối
6.2.7. Theo dõi gói cài đặt tự động
6.3. Câu lệnh apt-cache
6.4. Frontends: aptitude, synaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. Kiểm tra Tính xác thực Gói
6.6. Nâng cấp từ bản phân phối ổn định đến kế tiếp
6.6.1. Thủ tục Khuyến cáo
6.6.2. Xử lý sự cố sau khi nâng cấp
6.7. Đảm bảo một hệ thống luôn cập nhật
6.8. Tự động nâng cấp
6.8.1. Cấu hình dpkg
6.8.2. Cấu hình APT
6.8.3. Cấu hình debconf
6.8.4. Xử lý tương tác dòng lệnh
6.8.5. Kết hợp Hoàn hảo
6.9. Tìm gói
Điều làm cho Debian trở nên phổ biến với các quản trị viên bởi vì nó dễ dàng cài đặt phần mềm và dễ dàng cập nhật toàn bộ hệ thống. Lợi thế duy nhất này chủ yếu là nhờ vào chương trình APT mà các nhà quản lý của Falcot Corp đã nhiệt tình nghiên cứu.
APT là viết tắt của Công cụ quản lý Gói Nâng cao - Advanced Package Tool. Điều làm cho chương trình này tiên tiến là cách tiếp cận của nó đối với các gói. Nó không đơn giản đánh giá chúng một cách riêng lẻ, nhưng nó xem xét chúng như là một tổng thể và tạo ra sự kết hợp tốt nhất của các gói phụ thuộc vào những gì có sẵn và tương thích (dựa trên thông tin về các gói phụ thuộc).
APT cần biết “danh sách các kho chứa gói phần mềm”: tệp tin /etc/apt/sources.list sẽ chứa danh sách các kho chứa khác nhau (gọi là “sources”) nơi cung cấp các các gói phần mềm chạy trên Debian. APT sẽ đọc và nhập danh sách các gói sẵn có (đã được xuất bản) trong mỗi một kho chứa (source) đó. Việc này được thực hiện bằng việc tải xuống tệp tin Packages.xz hoặc tệp tin tương tự nén bởi các phương pháp khác nhau ( ví dụ các tệp tin Packages.gz hoặc .bz2) ( trong trường hợp mã nguồn của gói nhị phân) và các tệp tin Sources.xz hoặc các tệp tương tự (trong trường hợp mã nguồn của các gói mã nguồn ) rồi sau đó phân tích nội dung các tệp tin đó. Khi phiên bản cũ của các files đó đã có, APT có thể cập nhật nó bằng cách chỉ tải xuống các file cập nhật khác (xem thêm sidebar MẸO Nâng cấp liên tục).

6.1. Thêm nội dung vào tệp sources.list

6.1.1. Cú pháp

Mỗi dòng hoạt động của tệp /etc/apt/sources.listchứa mô tả của một nguồn, được làm bằng 3 phần cách nhau bằng dấu cách.
Trường đầu tiên cho biết loại nguồn:
  • deb” chỉ ra đây là các gói nhị phân,
  • deb-src” chỉ ra đây là các gói mã nguồn.
The second field gives the base URL of the source (combined with the filenames present in the Packages.xz files, it must give a full and valid URL): this can consist in a Debian mirror or in any other package archive set up by a third party. The URL can start with file:// to indicate a local source installed in the system's file hierarchy, with http:// to indicate a source accessible from a web server, or with ftp:// for a source available on an FTP server. The URL can also start with cdrom: for CD-ROM/DVD-ROM/Blu-ray disc based installations, although this is less frequent, since network-based installation methods are more and more common.
Cú pháp của trường cuối cùng phụ thuộc vào cấu trúc của kho lưu trữ. Trong các trường hợp đơn giản nhất, bạn chỉ cần chỉ ra một thư mục con (cần có dấu gạch chéo phía trước ./) của nguồn mong muốn (thường đơn giản là “./” mà đề cập đến sự vắng mặt của một thư mục con - các gói này sau đó được lấy trực tiếp tại URL được chỉ định). Nhưng trong trường hợp phổ biến nhất, các kho sẽ được cấu trúc giống như một máy nhân bản Debian, với các phân phối mà mỗi bản có nhiều thành phần. Trong các trường hợp này, tên của bản phân phối đã chọn ( dựa trên “codename” - tên mã của nó có thể xem tại phần tham chiếu CỘNG ĐỒNG Bruce Perens, một nhà lãnh đạo nhiều tai tiếng — hoặc bằng các bộ hoàn chỉnh tương ứng (“suites”) — stable, testing, unstable), và rổi cả các thành phần (hoặc các phần) để kích hoạt (được chọn giữa main, contrib, v non-free trong các máy nhân bản Debian).
Các mục cdrom mô tả CD / DVD-ROM bạn có. Trái với các mục nhập khác, đĩa CD-ROM không phải lúc nào cũng có sẵn vì nó đã được đưa vào ổ đĩa và chỉ có thể đọc được một đĩa duy nhất một lần. Vì những lý do này, các nguồn này được quản lý theo một cách hơi khác và cần phải được thêm vào với chương trình apt-cdrom, thường được thực hiện với tham số add. Sau đó sẽ yêu cầu đĩa được đưa vào ổ đĩa và sẽ duyệt nội dung tìm kiếm các tập tin Packages. Nó sẽ sử dụng các tệp này để cập nhật cơ sở dữ liệu các gói có sẵn (thao tác này thường được thực hiện bởi lệnh apt update). Từ đó, APT có thể yêu cầu đĩa được lắp nếu nó cần một trong các gói của nó.

6.1.2. Kho cho người dùng Ổn định

Dưới đây là  tệp tin sources.list tiêu chuẩn cho một hệ thống đang chạy phiên bản Stable của Debian:

Ví dụ 6.1. Tệp tin /etc/apt/sources.list cho người dùng bản Debian Stable (ổn định)

# Security updates
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

## Debian mirror

# Base repository
deb http://deb.debian.org/debian stretch main contrib non-free
deb-src http://deb.debian.org/debian stretch main contrib non-free

# Stable updates
deb http://deb.debian.org/debian stretch-updates main contrib non-free
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

# Stable backports
deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
This file lists all sources of packages associated with the Stretch version of Debian (the current Stable as of this writing). We opted to name “stretch” explicitly instead of using the corresponding “stable“ alias (stable, stable-updates, stable-backports) because we don't want to have the underlying distribution changed outside of our control when the next stable release comes out.
Hầu hết các gói sẽ đến từ “kho cơ sở“ có chứa tất cả các gói nhưng ít khi được cập nhật (khoảng một lần mỗi 2 tháng cho một “thời điểm phát hành“). Các kho khác là một phần (chúng không chứa tất cả các gói) và có thể lưu trữ bản cập nhật (các gói với phiên bản mới hơn) mà APT có thể cài đặt. Các phần sau sẽ giải thích mục đích và các quy tắc điều chỉnh từng kho đó.
Lưu ý rằng khi phiên bản mong muốn của gói có sẵn trên một số kho, tệp đầu tiên được liệt kê trong tệp sources.list sẽ được sử dụng. Vì lý do này, các nguồn phi chính thức thường được thêm vào cuối tập tin.
Lưu ý rằng, hầu hết những gì phần này nói Stable đều áp dụng tốt cho Oldstable vì sau này chỉ là một Stable cũ hơn được duy trì song song.

6.1.2.1. Cập nhật Bảo mật

Bản cập nhật bảo mật không được lưu trữ trên mạng thông thường của các bản sao (mirror) Debian, nhưng trên security.debian.org ( một tập hợp nhỏ các máy được duy trì bởi các quản trị viên hệ thống Debian Systems). Bộ lưu trữ này chứa các bản cập nhật bảo mật (do Nhóm an ninh Debian và / hoặc bởi các nhà bảo trì gói tin chuẩn bị) cho bản phân phối Stable.
Máy chủ cũng có thể lưu trữ cập nhật bảo mật cho Testing nhưng điều này không xảy ra rất thường xuyên vì những cập nhật này có xu hướng đạt tới Testing thông qua luồng cập nhật thường xuyên đến từ Unstable.

6.1.2.2. Cập nhật ổn định

Bản cập nhật ổn định không nhạy cảm về phương diện bảo mật nhưng được coi là đủ quan trọng để được phát hành cho người dùng trước khi phát hành phiên bản ổn định tiếp theo.
Kho này thường chứa các bản sửa lỗi cho các lỗi quan trọng mà không thể sửa trước khi phát hành hoặc đã được giới thiệu bởi các bản cập nhật tiếp theo. Tùy thuộc vào mức độ khẩn cấp, nó cũng có thể chứa các bản cập nhật cho các gói đang được phát phải tiến liên tục theo thời gian ... như các quy tắc phát hiện spam của spamassassin, cơ sở dữ liệu virut của clamav, hoặc các quy tắc thời gian tiết kiệm theo thời gian của tất cả các múi giờ (tzdata).
Trong thực tế, kho này là một tập hợp con của kho lưu trữ proposed-updates, đã được lựa chọn cẩn thận bởi “Nhà quản lý phát hành phiên bản ổn định“.

6.1.2.3. Đề xuất cập nhật

Sau khi xuất bản, phiên bản phân phối Stable chỉ được cập nhật khoảng 2 tháng một lần. Kho lưu trữ proposed-updates là nơi cập nhật dự kiến được chuẩn bị (dưới sự giám sát của “Nhà Quản lý phát hành phiên bản ổn định“).
Các bản cập nhật bảo mật và ổn định được ghi lại trong các phần trước đây luôn được bao gồm trong kho này, nhưng có nhiều hơn, bởi vì các nhà bảo trì gói phần mềm cũng có cơ hội sửa lỗi quan trọng mà chưa phát hành được trong bản các phiên bản ổn đinh.
Anyone can use this repository to test those updates before their official publication. The extract below uses the stretch-proposed-updates alias which is both more explicit and more consistent since jessie-proposed-updates also exists (for the Oldstable updates):
deb http://ftp.debian.org/debian stretch-proposed-updates main contrib non-free

6.1.2.4. Backports Ổn định

Kho lưu trữ stable-backports chứa “backports của các gói“. Thuật ngữ dùng để chỉ một gói phần mềm gần đây đã được biên dịch lại cho một phân phối cũ hơn, thường là cho Stable.
Khi phân phối dần trở nên lỗi thời, nhiều dự án phần mềm đã phát hành các phiên bản mới không được tích hợp vào bản Stable hiện tại (chỉ sửa đổi để giải quyết các vấn đề quan trọng nhất, chẳng hạn như các vấn đề về bảo mật). Vì các phân bố TestingUnstable có thể trở nên rủi ro hơn, các nhà bảo trì gói đôi khi cung cấp các bản ghi lại các ứng dụng phần mềm gần đây cho Stable, có lợi thế để hạn chế sự không ổn định tiềm ẩn trong một số lượng nhỏ các gói đã chọn.
Backports từ stable-backports luôn được tạo từ các gói có sẵn trong Testing. Điều này đảm bảo rằng tất cả backports được cài đặt sẽ được nâng cấp lên phiên bản ổn định tương ứng sau khi phiên bản ổn định tiếp theo của Debian sẵn sàng được phát hành.
Mặc dù kho này cung cấp phiên bản mới hơn của gói, APT sẽ không cài đặt chúng trừ khi bạn đưa ra hướng dẫn rõ ràng để làm như vậy (hoặc trừ khi bạn đã làm như vậy với một phiên bản cũ của backport nào đó):
$ sudo apt-get install package/stretch-backports
$ sudo apt-get install -t stretch-backports package

6.1.3. Các kho cho Người dùng Testing / Unstable

Dưới đây là một sources.list chuẩn cho một hệ thống đang chạy phiên bản Testing hoặc Unstable của Debian:

Ví dụ 6.2. /etc/apt/sources.list file for users of Debian Testing/Unstable

# Unstable
deb http://deb.debian.org/debian unstable main contrib non-free
deb-src http://deb.debian.org/debian unstable main contrib non-free

# Testing
deb http://deb.debian.org/debian testing main contrib non-free
deb-src http://deb.debian.org/debian testing main contrib non-free

# Stable
deb http://deb.debian.org/debian stable main contrib non-free
deb-src http://deb.debian.org/debian stable main contrib non-free

# Security updates
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
Với tệp tin sources.list này APT sẽ cài đặt các gói từ Unstable. Nếu không muốn, sử dụng cài đặt APT :: Default-Release (hướng dẫn để APT chọn gói từ phân phối khác) (có thể là Testing trong trường hợp này).
Có nhiều lý do để bao gồm tất cả các kho đó, mặc dù thường chỉ cần một kho là đủ. Testing người dùng sẽ đánh giá cao việc chọn lựa cẩn thận một gói cố định từ Unstable khi phiên bản trong Testing bị ảnh hưởng bởi một lỗi khó chịu. Ngược lại, người dùng Unstable cũng có thể bị ức chế bởi các hồi quy không mong về downgrade gói xuống phiên bản Testing (được cho là làm việc) của họ.
Việc bao gồm phiên bản Stable được tranh luận nhiều hơn nhưng nó thường cho phép truy cập vào một số gói đã bị xoá khỏi các phiên bản phát triển. Nó cũng đảm bảo rằng bạn nhận được các bản cập nhật mới nhất cho các gói đã không được sửa đổi kể từ lần phát hành ổn định cuối cùng.

6.1.3.1. Kho lưu trữ Experimental

Lưu trữ các gói Experimental có mặt trên tất cả các mirror của Debian và chứa các gói không có trong phiên bản Unstable vì chất lượng kém hơn - thường là các phiên bản phát triển phần mềm hoặc các phiên bản trước (alpha, beta, release candidate ...). Một gói cũng có thể được gửi đến đó sau khi trải qua các thay đổi tiếp theo có thể gây ra vấn đề. Người bảo trì sau đó cố gắng xử lý chúng với sự trợ giúp của những người dùng tiên tiến có thể xử lý các vấn đề quan trọng. Sau giai đoạn đầu tiên này, gói phần mềm được chuyển vào Unstable, nơi nó đạt đến một lượng người quan tâm lớn hơn và sẽ được thử nghiệm chi tiết hơn.
Experimental thường được sử dụng bởi những người dùng không ngại phá vỡ hệ thống của họ và sau đó sửa chữa nó. Sự phân phối này cho phép nhập một gói mà người dùng muốn thử hoặc sử dụng khi nhu cầu phát sinh. Đó chính xác là cách mà Debian tiếp cận, kể từ khi bổ sung nó vào file sources.list của APT không dẫn tới việc sử dụng các gói của nó một cách có hệ thống. Dòng được thêm vào là:
deb http://deb.debian.org/debian experimental main contrib non-free

6.1.4. Using Alternate Mirrors

The sources.list examples in this chapter refer to package repositories hosted on deb.debian.og. Those URLs will redirect you to servers which are close to you and which are managed by Content Delivery Networks (CDN) whose main role is to store multiple copies of the files across the world to deliver them as fast as possible to users. The CDN companies that Debian is working with are Debian partners who are offering their services freely to Debian. While none of those servers are under direct control of Debian, the fact that the whole archive is sealed by GPG signatures makes it a non-issue.
Picky users who are not satisfied with the performance of deb.debian.org can try to find a better mirror in the official mirror list:
But when you don't know which mirror is best for you, this list is of not much use. Fortunately for you, Debian maintains DNS entries of the form ftp.country-code.debian.org (e.g. ftp.us.debian.org for the USA, ftp.fr.debian.org for France, etc.) which are covering many countries and which are pointing to one (or more) of the best mirrors available within that country.
As an alternative to deb.debian.org, there used to be httpredir.debian.org. This service would identify a mirror close to you (among the list of official mirrors, using GeoIP mainly) and would redirect APT's requests to that mirror. This service has been deprecated due to reliability concerns and now httpredir.debian.org provides the same CDN-based service as deb.debian.org.

6.1.5. Tài nguyên không chính thức: mentors.debian.net

Có rất nhiều nguồn phi chính thức của các gói Debian do người dùng tiên tiến thiết lập để biên dịch lại một số phần mềm (Ubuntu làm cho nó trở nên phổ biến với dịch vụ Lưu trữ Trọn gói Cá nhân - Personal Package Archive service), bởi các lập trình viên tạo ra chúng cho tất cả mọi người, thậm chí cả các nhà phát triển các gói đó ở Phiên bản Debian trước.
Trang mentors.debian.net rất thú vị (mặc dù nó chỉ cung cấp các gói nguồn) vì nó tập hợp các gói do các ứng cử viên tạo ra cho trạng thái của nhà phát triển chính thức của Debian; hay bởi các tình nguyện viên muốn tạo các gói Debian mà không cần phải đi qua quá trình hội nhập đó. Những gói này được cung cấp mà không có sự đảm bảo về chất lượng; Bạn nên kiểm tra nguồn gốc và tính toàn vẹn của chúng trước khi sử dụng chúng trong hệ thống vận hành.
Cài đặt gói có nghĩa là trao quyền cho người tạo của nó vì họ quyết định về nội dung của các tập lệnh khởi tạo được chạy dưới dạng nhận dạng đó. Các gói Debian chính thức được tạo ra bởi các tình nguyện viên đã được đồng chọn và xem lại và ai có thể đóng gói các gói của mình sao cho có thể kiểm tra nguồn gốc và tính toàn vẹn của chúng.
Nói chung, hãy thận trọng với một gói mà bạn không biết nguồn gốc và không được lưu trữ trên một trong các máy chủ Debian chính thức: đánh giá mức độ mà bạn có thể tin cậy người tạo và kiểm tra tính toàn vẹn của gói.

6.1.6. Bộ nhớ đệm trung gian cho Các Gói Debian (Caching Proxy)

Khi toàn bộ mạng máy tính được cấu hình để sử dụng cùng một máy chủ từ xa để tải các gói cập nhật giống nhau, bất kỳ quản trị viên nào cũng biết rằng sẽ có lợi nếu có một proxy trung gian hoạt động như một bộ nhớ cache mạng cục bộ (xem sidebar VOCABULARY Bộ đệm - Cache).
Bạn có thể cấu hình APT sử dụng một "chuẩn" proxy (xem Phần 6.2.4, “Tùy chọn Cấu hình” cho phía APT, và Phần 11.6, “HTTP/FTP Proxy” cho phía proxy), nhưng hệ sinh thái Debian cung cấp các giải pháp tốt hơn để giải quyết vấn đề này. Phần mềm chuyên dụng được trình bày trong phần này thông minh hơn một bộ nhớ cache proxy đơn giản bởi vì chúng có thể dựa vào cấu trúc cụ thể của kho APT (ví dụ như nó biết khi nào các tệp tin đã lỗi thời hoặc không, và do đó điều chỉnh thời gian lưu trữ).
apt-cacherapt-cacher-ng hoạt động như những máy chủ proxy proxy thông thường. Tệp tin sources.list của APT không được thay đổi, nhưng APT được định cấu hình để sử dụng nó làm proxy cho các yêu cầu đi ra ngoài.
approx, mặt khác, hoạt động giống như một máy chủ HTTP “sao chép“ bất kỳ số kho lưu trữ từ xa nào trong URL cấp cao nhất của nó. Sự đối chiếu giữa các thư mục cấp cao nhất và các URL từ xa của các kho lưu trữ được lưu trữ trong /etc/approx/approx.conf:
# <name> <repository-base-url>
debian   http://deb.debian.org/debian
security http://security.debian.org
approx runs by default on port 9999 via a systemd socket and requires the users to adjust their sources.list file to point to the approx server:
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security stretch/updates main contrib non-free
deb http://apt.falcot.com:9999/debian stretch main contrib non-free