apt cung cấp cho Cảnh báo CLI Giao diện CLI không ổn định Cảnh báo


63

Tôi đang viết một tập lệnh cần đọc một tập tin chứa thông tin của gói mà tôi đã viết dòng này

apt show $PACKAGE_NAME > pack_info.txt

Tuy nhiên, điều này không tạo ra pack_info.txttệp và luôn đưa ra Cảnh báo này:

CẢNH BÁO: apt không có giao diện CLI ổn định. Sử dụng thận trọng trong các kịch bản.

Hiện tại tôi đã thử chuyển hướng cả STDOUT& STDERRsử dụng &>và nó đã hoạt động để đưa ra một tệp pack_info.txtmà chúng tôi cần.

Tôi cũng đã thử lấy nội dung từ dpkgđó và nó cũng hoạt động:

dpkg -s $PACKAGE_NAME > pack_info.txt

Điều gì là tốt mà nó không hiển thị một cảnh báo cũng không phải là một lỗi.

Điều tồi tệ là chúng tôi không muốn sử dụng dpkg và chỉ muốn STDOUT của apt chuyển hướng đến tệp.

Vì vậy, tôi có ba câu hỏi để hỏi:

  1. Chúng ta có ý nghĩa chính xác bởi Giao diện CLI ổn định là gì?
  2. Làm thế nào để sử dụng các lệnh như vậy một cách an toàn và không có lỗi trong các tập lệnh? [vui lòng quan tâm để giải thích với ví dụ]
  3. Có cách nào để chỉ và chỉ chuyển hướng STDOUT của apt showtệp không?

Câu trả lời:


80

aptdành cho thiết bị đầu cuối và cho đầu ra đẹp trong khi apt-getapt-cachedành cho các tập lệnh và cho đầu ra ổn định, có thể phân tích cú pháp. Do đó, tập lệnh tương đương với apt showlệnh của bạn là:

apt-cache show $PACKAGE_NAME >pack_info.txt

Bây giờ để trả lời từng câu hỏi của bạn:

Chúng ta có ý nghĩa chính xác bởi Giao diện CLI ổn định là gì?

aptĐầu ra không thể sử dụng tốt trong các tập lệnh. Ví dụ: apt install(so với apt-get install) hiển thị một thanh tiến trình vô dụng đối với các tập lệnh và có thể đưa ra lỗi khi đầu ra được phân tích cú pháp. apt show firefoxhiển thị một gợi ý cho một bản ghi bổ sung, cũng hoàn toàn vô dụng trong một tập lệnh, bạn muốn nó chỉ đơn giản là xuất ra mọi bản ghi ở đó - đó là những gì apt-cache show firefox. Hãy xem những gì man aptphải nói về điều đó:

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.


Làm thế nào để sử dụng các lệnh như vậy một cách an toàn và không có lỗi trong các tập lệnh?

Chỉ cần sử dụng apt-gethoặc apt-cachetương ứng thay vì đơn giản apt. :) Xem câu trả lời này cho một danh sách tương đương.


Có cách nào để chỉ và chỉ chuyển hướng STDOUT của apt show sang một tệp không?

Bạn đã làm điều đó một cách chính xác: >filehoặc 1>filechuyển hướng stdout, 2>filechuyển hướng stderr và &>filechuyển hướng cả hai file.

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.