Là 'apt-get' không được chấp nhận?


54

Gần đây, tôi đã thấy nhiều người sử dụng

sudo apt

thay vì

sudo apt-get

Ngoài ra, Ubuntu cứ bảo tôi cài đặt mọi thứ bằng cách sudo apt

The program 'foo' is currently not installed. You can install it by typing:
sudo apt install foo

(hãy nhớ rằng, foo là giữ chỗ, không phải là một ứng dụng)

Vì vậy, sau khi phổ biến trong cộng đồng về việc sử dụng aptthay vì apt-get, tôi bắt đầu nghĩ rằng apt-get bị phản đối và không còn có thể được sử dụng trong các chương trình bash của tôi.

Trong các chương trình bash của tôi,

  • Tôi có phải thay thế tất cả apt-getcác lệnh bằng aptkhông?
  • apt-getnguy hiểm không
  • chương trình của tôi vẫn hoạt động chứ?

7
Xem bài đăng liên quan này: Askubfox.com/q/445384/295286
Sergiy Kolodyazhnyy

Apt đẹp hơn apt-get
WinEunuuchs2Unix

2
Lý do tại sao một số người dùng (như bản thân tôi) sử dụng aptlà vì nó ngắn hơn apt-get. Tổ hợp phím ít hơn, tốn ít thời gian hơn. Tôi sử dụng apt-getcho những thứ như checkmặc dù.
Gallifreyan

Câu trả lời:


36

apt-getlà mức độ thấp hơn và tương thích ngược. apttốt hơn cho người dùng cuối và không yêu cầu hoặc chứa một số tính năng bổ sung có trong đó apt-get.

Cả hai đều hoàn toàn tốt. apt-getkhông được phản đối, nhưng cài đặt 15.10 của bạn là :)

Chỉnh sửa: Từ trang man của apt (8)

Lệnh apt có nghĩa là dễ chịu cho người dùng cuối và không cần phải tương thích ngược như apt-get (8).

Edit2: aptđược thiết kế để sửa một số lỗi phụ thuộc cơ bản trong apt-get. Vì nó là một trình bao bọc, aptdo đó ở cấp độ cao hơn và cũng mất một số tính năng tương thích và kịch bản ngược.


19
Những tính năng nào không có trong apt-get không có trong apt? Và làm thế nào apt là tốt hơn cho người dùng cuối?
Anwar

4
Một lần nữa, apt-get không phải là cấp thấp hơn apt. Đây là một thông tin sai lệch. apt ở cùng cấp độ với apt-get và apt không là gì ngoài trình bao bọc xung quanh apt-get và apt-cache
Anwar

@ Anwar: Có sự khác biệt. Một ví dụ apt upgrade:, apt-get upgradevì gói trước cài đặt các gói mới, trong khi gói sau thì không.
Gunnar Hjalmarsson

26
@Anwar Nếu aptlà một trình bao bọc apt-getthì nó chắc chắn là cấp cao hơn.
Tavian Barnes

2
@Anwar Đó thực sự là định nghĩa của "cấp cao hơn" hoặc "cấp thấp hơn". apt là cấp độ cao hơn nó kết thúc apt-get. Một loại thử nghiệm là nếu apt của bạn bị hỏng, apt-get vẫn hoạt động - nhưng không phải ngược lại.
Ngài Robert

47

Không, apt-getkhông được phản đối. Trang người đàn ông aptcó điều này để nói về aptvs. apt-get(và apt-cache):

SỬ DỤNG SCRIPT VÀ KHÁC BIỆT TỪ CÁC CÔNG CỤ APT KHÁC

Dòng lệnh apt (8) được thiết kế như một công cụ người dùng cuối và nó có thể thay đổi hành vi giữa các phiên bản. Mặc dù nó cố gắng không phá vỡ tính tương thích ngược nhưng điều này cũng không được đảm bảo nếu một thay đổi có vẻ có lợi cho việc sử dụng tương tác.

Tất cả các tính năng của apt (8) đều có sẵn trong các công cụ APT chuyên dụng như apt-get (8) và apt-cache (8). apt (8) chỉ thay đổi giá trị mặc định của một số tùy chọn (xem apt.conf (5) và cụ thể là phạm vi nhị phân). Vì vậy, bạn nên sử dụng các lệnh này (có khả năng với một số tùy chọn bổ sung được bật) trong tập lệnh của bạn vì chúng giữ khả năng tương thích ngược càng nhiều càng tốt.

apt cũng đưa ra một cảnh báo nói rằng

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

nếu nó phát hiện có một đường ống. Ví dụ:

$ apt show python | grep Package

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Package: python
APT-Sources: http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

Đối với câu hỏi của bạn,

Tôi có phải thay thế tất cả các lệnh apt-get bằng aptkhông?

Không, bạn không phải thay thế apt-getbằng apt. Thay vào đó nếu bạn đang sử dụng nó trong các tập lệnh, bạn nên tuân theo apt-getvì nó có API CLI ổn định và đảm bảo khả năng tương thích ngược.

apt-getnguy hiểm không

aptcũng nguy hiểm như apt-get: bạn chỉ nên cài đặt phần mềm từ các nguồn mà bạn tin tưởng.

Tôi có thể sử dụng apttrong Ubuntu 15.10 không?

Yup, bạn có thể. Vấn đề ở đây là bạn vẫn đang sử dụng Ubuntu 15.10, hiện không được hỗ trợ! Vui lòng nâng cấp lên 16.04, đây là phiên bản LTS.

chương trình của tôi vẫn hoạt động chứ?

Theo chương trình, tôi giả sử bạn có nghĩa là kịch bản. Có, họ vẫn sẽ làm việc vì apt-getkhông bị phản đối. Trong thực tế, bạn nên sử dụng apt-gettrong các tập lệnh để tương thích ngược như được đề xuất bởi apttrang man của.


7

aptapt-getvề cơ bản là cùng một trình quản lý gói, những gì họ làm là như nhau.

Một sự khác biệt là aptcũng chứa các tính năng từ ví dụ apt-cachevà có đầu ra đẹp hơn.

Tuy nhiên, aptchưa nên được sử dụng trong các tập lệnh, ít nhất là nếu bạn muốn phân tích đầu ra của nó, bởi vì nó vẫn đang được phát triển và định dạng đầu ra của nó vẫn có thể thay đổi. Tab-autocomplete của Bash cũng chưa hoạt động với nhiều aptlệnh.

Bạn có thể sử dụng cả hai, bất cứ điều gì bạn thích.


apt cung cấp các tính năng apt-cache với độ trễ được thêm vào! hãy thử sử dụng gói tìm kiếm apt và gói tìm kiếm apt-cache. Chính sách sử dụng tương tự
Anwar

@Anwar Tôi không thấy bất kỳ sự khác biệt nào cả apt(-cache) policy. Với apt(-cache) search, có một sự khác biệt về tốc độ, vâng, nhưng đầu ra của aptđược sắp xếp và được định dạng độc đáo để đáp lại.
Chỉ huy Byte

-1

Như bạn có thể thấy từ các câu trả lời khác, bạn có thể sử dụng apthoặc apt-get. Điều tôi muốn nói thêm là khi tôi thử aptvài năm trước, tôi nhận thấy rằng nó đã giải quyết xung đột theo một cách khác so với apt-gettrước đây. Khi tình huống khó khăn (phải gỡ bỏ một số thứ, một số gói đã được ghim vào một phiên bản cụ thể, tôi đã hạ cấp gói hoặc tôi đã sử dụng hỗn hợp các gói từ các bản phát hành khác nhau), aptthường muốn xóa hàng tấn gói hoặc không thể giải quyết cuộc xung đột.

apt-getnhững tình huống này tốt hơn nhiều và nó không có nhược điểm nào, tôi đã từ bỏ aptvà tiếp tục sử dụng apt-getthay thế. Điều này đã được vài năm trước, vì vậy điều này có thể đã thay đổi, nhưng nếu bạn gặp phải một tình huống tương tự, bạn có thể muốn thử cả hai và xem cái nào có thể giải quyết xung đột tốt hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.