6.2. Các lệnh aptitude
, apt-get
, và apt
APT là một dự án lớn, ban đầu bao gồm một giao diện đồ họa. Nó dựa trên một thư viện chứa ứng dụng cốt lõi, và apt-get
là giao diện đầu tiên - dòng lệnh - được phát triển trong dự án. apt
là một giao diện dựa trên dòng lệnh cung cấp bởi APT mà khắc phục một số sai lầm trong thiết kế của apt-get
.
Both tools are built on top of the same library and are thus very close but the default behaviour of apt
has been improved for interactive use and to actually do what most users expect. APT's developers reserve the right to change the public interface of this tool to further improve it. On the opposite, the public interface of apt-get
is well defined and will not change in any backwards incompatible way. It is thus the tool that you want to use when you need to script package installation requests.
Nhiều giao diện đồ họa khác sau đó xuất hiện như các dự án thêm vào: synaptic
, aptitude
(bao gồm cả giao diện chế độ văn bản và một dạng đồ hoạ - mặc dù vẫn chưa hoàn thành), wajig
, vv Giao diện được khuyên dùng nhất, apt
, sẽ được sử dụng trong các ví dụ được đưa ra trong phần này. Tuy nhiên lưu ý rằng apt-get
và aptitude
có một cú pháp lệnh rất giống nhau. Khi có sự khác biệt lớn giữa apt
, apt-get
và aptitude
, những khác biệt này sẽ được chỉ ra cụ thể.
Đối với bất kỳ công việc nào sử dụng APT, danh sách các gói cần phải được cập nhật; Điều này có thể được thực hiện đơn giản thông qua apt update
. Tùy thuộc vào tốc độ kết nối, thao tác này có thể mất một khoảng thời gian kể từ khi tải về một số tệp Packages
/ Sources
/ Translation-language-code
tệp này đã trở nên ngày càng lớn hơn trong qúa trình phát triển của Debian (ít nhất 10 MB Dữ liệu cho phần main
). Tất nhiên, cài đặt từ một bộ CD-ROM không yêu cầu phải tải xuống - trong trường hợp này thì sẽ nhanh hơn nhiều.
Với APT, các gói có thể được thêm hoặc xóa khỏi hệ thống, tương ứng với apt installpackage
và apt removepackage
. Trong cả hai trường hợp, APT sẽ tự động cài đặt các gói phụ thuộc cần thiết hoặc xóa các gói phụ thuộc vào gói đang được xóa. Lệnh apt purge package
liên quan đến việc gỡ cài đặt hoàn toàn - các tệp cấu hình cũng bị xóa.
Nếu tệp
sources.list
đề cập đến một số bản phân phối, có thể đưa ra phiên bản của gói để cài đặt. Một số phiên bản cụ thể có thể được yêu cầu với cài đặt
apt package = version
, nhưng chỉ ra xuất xứ bản phân phối của nó (
Stable,
Testing hoặc
Unstable) - với
apt installpackage / distribution
- thường được ưa thích hơn. Với lệnh này, bạn có thể quay trở lại phiên bản cũ của gói (nếu bạn biết rằng nó hoạt động tốt), miễn là nó vẫn còn có sẵn trong một trong các nguồn được tham chiếu bởi tệp tin
sources.list
. Nếu không, kho lưu trữ
snapshot.debian.org
có thể dùng để (xem sidebar
TIẾN THÊM MỘT BƯỚC Các gói cũ: snapshot.debian.org
).
Ví dụ 6.3. Cài đặt phiên bản unstable của spamassassin
#
apt install spamassassin/unstable
If the package to install has been made available to you under the form of a simple .deb
file without any associated package repository, it is still possible to use APT to install it together with its dependencies (provided that the dependencies are available in the configured repositories) with a simple command: apt install ./path-to-the-package.deb
. The leading ./
is important to make it clear that we are referring to a filename and not to the name of a package available in one of the repositories.
Chúng tôi khuyên bạn nên nâng cấp đều đặn, bởi vì chúng bao gồm các cập nhật bảo mật mới nhất. Để nâng cấp, sử dụng apt upgrade
, apt-get upgrade
hoặc aptitude safe-upgrade
(tất nhiên sau khi apt update
). Lệnh này sẽ tìm các gói được cài đặt và có thể được nâng cấp mà không cần phải gỡ bỏ bất kỳ gói nào. Nói cách khác, mục tiêu là đảm bảo nâng cấp ít nhất phòng chống xâm nhập. apt-get
hơi đòi hỏi nhiều hơn aptitude
hoặc apt
bởi vì nó sẽ từ chối cài đặt các gói không được cài đặt trước.
apt
thường sẽ chọn số phiên bản gần đây nhất (ngoại trừ các gói từ Experimental và stable-backports, mặc định mặc định là số phiên bản của chúng). Nếu bạn đã chỉ định Testing hoặc Unstable trong sources.list
của mình, apt upgrade
sẽ chuyển hầu hết hệ thống Stable của bạn sang Testing hoặc Unstable, điều này có thể không phải là điều bạn mong muốn.
Để yêu cầu apt
sử dụng một phân phối cụ thể khi tìm kiếm các gói được nâng cấp, bạn cần sử dụng tùy chọn -t
hoặc - target-release
, theo sau là tên phân phối bạn muốn (ví dụ: apt -t stable upgrade
) . Để tránh chỉ định tùy chọn này mỗi khi bạn sử dụng apt
, bạn có thể thêm APT :: Default-Release "stable ";
trong tệp /etc/apt/apt.conf.d/local
.
Đối với nâng cấp quan trọng hơn, chẳng hạn như sự thay đổi từ một phiên bản Debian lớn sang phiên bản tiếp theo, bạn cần phải sử dụng apt full-upgrade
. Với chỉ dẫn này, apt
sẽ hoàn tất quá trình nâng cấp ngay cả khi nó đã gỡ bỏ một số gói đã lỗi thời hoặc cài đặt các phụ thuộc mới. Đây cũng là lệnh được sử dụng bởi những người dùng làm việc hàng ngày với bản phát hành Unstable của Debian và theo dõi sự phát triển của từng ngày. Nó đơn giản đến nỗi hầu như không cần giải thích: danh tiếng của APT dựa trên tính năng tuyệt vời này.
Không giống như apt
và aptitude
, apt-get
không biết lệnh full-upgrade
. Thay vào đó, bạn nên sử dụng apt-get dist-upgrade
, câu lệnh mạnh mẽ và tuyệt vời mà apt
và aptitude
cũng chấp nhận để tạo sự tiện lợi của người dùng quen với nó.
Bên cạnh các thành phần cấu hình đã đề cập, có thể cấu hình các khía cạnh một vài tham số của APT bằng cách thêm các chỉ thị vào một tệp tin của thư mục /etc/apt/apt.conf.d/
. Hãy nhớ ví dụ rằng APT có thể cho dpkg
bỏ qua các lỗi xung đột tệp bằng cách chỉ định DPkg :: options {"- force-overwrite"; }
.
Nếu Web chỉ có thể được truy cập thông qua proxy, hãy thêm một dòng như
Acquire::http::proxy "http://yourproxy:3128"
. Đối với một FTP proxy, hãy viết
Acquire::ftp::proxy "ftp://yourproxy"
. Để khám phá thêm các tùy chọn cấu hình, hãy đọc trang hướng dẫn sử dụng
apt.conf(5) trang thông tin của câu lệnh với câu lệnh
man apt.conf
(để biết chi tiết về các trang một cách thủ công, xem
Phần 7.1.1, “Manual Pages”).
6.2.5. Các ưu tiên Quản lý Gói
Một trong những khía cạnh quan trọng nhất trong cấu hình của APT là quản lý các ưu tiên liên quan đến từng nguồn gói. Ví dụ: bạn có thể muốn mở rộng một bản phân phối với một hoặc hai gói mới hơn từ Testing, Unstable hoặc Experimental. Có thể gán một mức độ ưu tiên cho mỗi gói có sẵn (cùng một gói có thể có một số ưu tiên tùy thuộc vào phiên bản của nó hoặc bản phân phối cung cấp nó). Những ưu tiên này sẽ ảnh hưởng đến hành vi của APT: cho mỗi gói, nó sẽ luôn chọn phiên bản có mức độ ưu tiên cao nhất (trừ khi phiên bản này cũ hơn phiên bản đã cài đặt và nếu mức độ ưu tiên của nó nhỏ hơn 1000).
APT định nghĩa một số ưu tiên mặc định. Mỗi phiên bản gói được cài đặt có mức ưu tiên là 100. Phiên bản không được cài đặt mặc định có mức ưu tiên là 500, nhưng có thể lên tới 990 nếu nó là một phần của bản phát hành đích (được định nghĩa bằng tùy chọn dòng lệnh -t
hoặc APT :: Default-Release
chỉ thị cấu hình).
Bạn có thể sửa đổi các ưu tiên bằng cách thêm các mục trong tệp tin /etc/apt/preferences
với tên của gói cần tác động, phiên bản, nguồn gốc và mức độ ưu tiên mới của chúng.
APT sẽ không bao giờ cài đặt một phiên bản cũ hơn của một gói (có nghĩa là một gói có số phiên bản thấp hơn một gói hiện đang được cài đặt) ngoại trừ mức ưu tiên của nó cao hơn 1000. APT sẽ luôn cài đặt gói ưu tiên cao nhất theo sau hạn chế. Nếu hai gói có cùng mức độ ưu tiên, APT sẽ cài đặt gói mới nhất (có số phiên bản cao nhất). Nếu hai gói cùng phiên bản có cùng mức độ ưu tiên nhưng khác nhau về nội dung của chúng, APT sẽ cài đặt phiên bản không được cài đặt (quy tắc này đã được tạo để bao gồm trường hợp cập nhật gói mà không cần tăng số phiên bản, thường là bắt buộc ).
Trong các điều khoản cụ thể hơn, một gói ưu tiên ít hơn 0 sẽ không bao giờ được cài đặt. Một gói với mức độ ưu tiên từ 0 đến 100 sẽ chỉ được cài đặt nếu không có phiên bản khác của gói đã được cài đặt. Với mức ưu tiên từ 100 đến 500, gói sẽ chỉ được cài đặt nếu không có phiên bản mới nào được cài đặt hoặc có sẵn trong phân phối khác. Một gói ưu tiên giữa 501 và 990 sẽ chỉ được cài đặt nếu không có phiên bản mới hơn được cài đặt hoặc có sẵn trong phân phối đích. Với mức ưu tiên từ 990 đến 1000, gói sẽ được cài đặt trừ khi phiên bản được cài đặt là phiên bản mới hơn. Ưu tiên lớn hơn 1000 sẽ luôn dẫn đến việc cài đặt gói ngay cả khi nó buộc APT hạ cấp xuống phiên bản cũ hơn.
When APT checks /etc/apt/preferences
, it first takes into account the most specific entries (often those specifying the concerned package), then the more generic ones (including for example all the packages of a distribution). If several generic entries exist, the first match is used. The available selection criteria include the package's name and the source providing it. Every package source is identified by the information contained in a Release
file that APT downloads together with the Packages
files. It specifies the origin (usually “Debian” for the packages of official mirrors, but it can also be a person's or an organization's name for third-party repositories). It also gives the name of the distribution (usually Stable, Testing, Unstable or Experimental for the standard distributions provided by Debian) together with its version (for example 9 for Debian Stretch). Let's have a look at its syntax through some realistic case studies of this mechanism.
Giả sử rằng bạn chỉ muốn sử dụng các gói từ phiên bản ổn định của Debian. Không được cài đặt những phiên bản được cung cấp trong các phiên bản khác ngoại trừ yêu cầu rõ ràng. Bạn có thể viết các mục sau trong file /etc/apt /preferences
:
a=stable
xác định tên của bản phân phối đã chọn. o=Debian
giới hạn phạm vi cho các gói có nguồn gốc là “Debian“.
Let's now assume that you have a server with several local programs depending on the version 5.24 of Perl and that you want to ensure that upgrades will not install another version of it. You could use this entry:
Tài liệu tham khảo cho tệp cấu hình này có sẵn trong trang hướng dẫn apt_preferences(5), bạn có thể xem bằng lệnh man apt_preferences
.
6.2.6. Làm việc với một số bản phân phối
apt
là một công cụ tuyệt vời, việc chọn các gói đến từ các bản phân phối khác khá hấp dẫn. Ví dụ: sau khi đã cài đặt một hệ thống Stable, bạn có thể thử một gói phần mềm có sẵn trong Testing hoặc Unstable mà không bị phân tán quá nhiều từ trạng thái ban đầu của hệ thống.
Thậm chí nếu bạn đôi khi gặp phải các vấn đề trong khi trộn các gói từ các phân phối khác nhau, thì
apt
sẽ quản lý sự tồn tại song song này rất tốt và hạn chế rủi ro rất hiệu quả. Cách tốt nhất để tiến hành là liệt kê tất cả các bản phân phối được sử dụng trong
/etc/apt/sources.list
(một số người luôn đặt ba bản phân phối nhưng hãy nhớ rằng
Unstable dành cho những người dùng có kinh nghiệm) và để xác định phân phối tham chiếu của bạn với
APT::Default-Release
(xem
Phần 6.2.3, “Nâng cấp hệ thống”).
Hãy giả sử Stable là bản phân phối tham khảo của bạn nhưng Testing và Unstable cũng được liệt kê trong tệp sources.list
của bạn. Trong trường hợp này, bạn có thể sử dụng apt installpackage/testing
để cài đặt một gói từ Testing. Nếu cài đặt không thành công do một số gói phụ thuộc không đáng tin cậy, hãy giải quyết các gói phụ thuộc trong Testing bằng cách thêm tham số -t testing
. Điều tương tự cũng áp dụng cho Unstable.
Trong trường hợp này, nâng cấp (
upgrade
và
full-upgrade
) được thực hiện trong
Stable ngoại trừ các gói đã được nâng cấp lên phân phối khác: các gói này sẽ theo các cập nhật có sẵn trong các bản phân phối khác. Chúng ta sẽ giải thích hành vi này với sự trợ giúp của các ưu tiên mặc định được thiết lập bởi APT dưới đây. Đừng ngần ngại sử dụng
apt-cache policy
(xem bên bar
MẸO apt-cache policy
) để xác minh các ưu tiên đã cho.
Tất cả mọi thứ tập trung vào thực tế rằng APT chỉ xem xét các gói có phiên bản cao hơn hoặc bằng với phiên bản đã cài đặt (giả sử rằng /etc/apt/preferences
không được sử dụng để ép buộc các ưu tiên cao hơn 1000 đối với một số gói).
Giả sử bạn đã cài đặt phiên bản 1 của gói đầu tiên từ Stable và phiên bản 2 và 3 có sẵn tương ứng trong Testing và Unstable. Phiên bản đã cài đặt có mức ưu tiên 100 nhưng phiên bản có sẵn trong Stable (giống hệt nhau) có mức độ ưu tiên là 990 (vì đây là một phần của bản phát hành mục tiêu). Gói trong Testing và Unstable có mức ưu tiên là 500 (mức độ ưu tiên mặc định của một phiên bản không được cài đặt). Gói được chọn là phiên bản 1 với mức ưu tiên là 990. Gói “lưu lại ở trong Stable“.
Lấy ví dụ về gói khác có phiên bản 2 đã được cài đặt từ Testing. Phiên bản 1 có trong Stable và phiên bản 3 trong Unstable. Phiên bản 1 (ưu tiên 990 - do đó thấp hơn 1000) bị loại bỏ vì nó thấp hơn phiên bản đã cài đặt. Điều này chỉ để lại phiên bản 2 và 3, cả hai ưu tiên 500. Đối mặt với sự thay thế này, APT chọn phiên bản mới nhất, một từ Unstable.Nếu bạn không muốn một gói được cài đặt từ Testing để di chuyển sang Unstable, bạn phải chỉ định một Ưu tiên thấp hơn 500 (490 ví dụ) cho các gói đến từ Unstable. Bạn có thể sửa đổi /etc/apt/preferences
với thay đổi như sau:
Package: *
Pin: release a=unstable
Pin-Priority: 490
6.2.7. Theo dõi gói cài đặt tự động
Một trong những chức năng thiết yếu của apt
là theo dõi các gói được cài đặt chỉ qua các gói phụ thuộc. Các gói này được gọi là “tự động“, và thường bao gồm các thư viện chẳng hạn.
With this information, when packages are removed, the package managers can compute a list of automatic packages that are no longer needed (because there is no “manually installed” packages depending on them). apt-get autoremove
or apt autoremove
will get rid of those packages. aptitude
does not have this command because it removes them automatically as soon as they are identified. In all cases, the tools display a clear message listing the affected packages.
Thói quen tốt là đánh dấu tự động bất kỳ gói nào mà bạn không cần trực tiếp để chúng được tự động loại bỏ khi không cần thiết nữa.
apt-mark auto package
sẽ đánh dấu gói cho sẵn như tự động trong khi
apt-mark manual package
làm ngược lại.
aptitude markauto
và
aptitude unmarkauto
hoạt động theo cùng một cách mặc dù chúng có nhiều tính năng đánh dấu nhiều gói cùng một lúc (xem
Phần 6.4.1, “aptitude
”). Giao diện tương tác dựa trên consolecủa
aptitude
cũng giúp bạn dễ dàng xem xét “cờ tự động“ trên nhiều gói.
Mọi người có thể muốn biết tại sao một gói cài đặt tự động được hiện diện trên hệ thống. Để nhận thông tin này từ dòng lệnh, bạn có thể sử dụng aptitude whypackage
(apt
và apt-get
không có tính năng tương tự):
$
aptitude why python-debian
i aptitude Recommends apt-xapian-index
i A apt-xapian-index Depends python-debian (>= 0.1.15)