Product SiteDocumentation Site

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.
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-getaptitude 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-getaptitude, những khác biệt này sẽ được chỉ ra cụ thể.

6.2.1. Khởi tạo

Đố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.

6.2.2. Cài đặt và Gỡ bỏ

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 installpackageapt 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

6.2.3. Nâng cấp hệ thống

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ừ Experimentalstable-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ư aptaptitude, 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à aptaptitude cũng chấp nhận để tạo sự tiện lợi của người dùng quen với nó.

6.2.4. Tùy chọn Cấu hình

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.
Khi APT kiểm tra /etc/apt/preferences, trước tiên phải tính đến các mục cụ thể nhất (thường là các gói cụ thể), sau đó là các loại chung chung hơn (ví dụ như tất cả các gói của một bản phân phối). Nếu một số mục chung chung tồn tại, mục phù hợp đầu tiên sẽ được sử dụng. Các tiêu chí lựa chọn bao gồm tên của gói và nguồn cung cấp nó. Mỗi nguồn gói được xác định bằng thông tin có trong tệp Release mà APT tải cùng với tệp Packages. Nó chỉ rõ nguồn gốc (thường là “Debian“ cho các gói các mirror chính thức, nhưng nó cũng có thể là tên của một người hoặc một tổ chức cho các kho của bên thứ ba). Nó cũng cho biết tên của bản phân phối (thường là Stable, Testing, Unstable hoặc Experimental cho các bản phân phối chuẩn do Debian cung cấp) cùng với phiên bản của nó (ví dụ 8 cho Debian Jessie). Chúng ta hãy nhìn vào cú pháp của nó thông qua một số nghiên cứu thực tế của cơ chế này.
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:
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10
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“.
Bây giờ chúng ta giả sử rằng bạn có một máy chủ với một vài chương trình cục bộ phụ thuộc vào phiên bản 5.14 của Perl và bạn muốn đảm bảo rằng các nâng cấp sẽ không cài đặt một phiên bản khác của nó. Bạn có thể sử dụng mục này:
Package: perl
Pin: version 5.14*
Pin-Priority: 1001
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 TestingUnstable 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 (upgradefull-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/preferenceskhô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 TestingUnstable. 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 TestingUnstable 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.
Với thông tin này, khi gói bị xóa, người quản lý gói có thể tính toán một danh sách các gói tự động không cần thiết nữa (vì không có gói cài đặt thủ công) tùy thuộc vào chúng. apt-get autoremove sẽ loại bỏ các gói đó. aptitudeapt không có lệnh này: trước đây vì nó loại bỏ chúng tự động ngay khi chúng được xác định, và thứ hai có lẽ vì người dùng không nên tự chạy lệnh như vậy. Trong mọi trường hợp, các công cụ hiển thị một thông báo rõ ràng liệt kê các gói bị ảnh hưởng.
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 markautoaptitude 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 (aptapt-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)