Làm cách nào tôi có thể nhận được mã thoát apt-get 'verbose'?


12

Làm cách nào tôi có thể nhận được mã thoát 'dài dòng' apt-getđể các lỗi như thế này

Package google-chrome is a virtual package provided by:
  google-chrome-stable 29.0.1547.76-r223446
  google-chrome-beta 30.0.1599.47-1
You should explicitly select one to install.

E: Package 'google-chrome' has no installation candidate

có mã thoát khác với lỗi tải xuống như thế này

Err http://dl.google.com/linux/chrome/deb/ stable/main google-chrome-stable amd64 29.0.1547.76-r223446
  Something wicked happened resolving 'dl.google.com:http' (-11 - System error)

Hiện tại, cả hai lỗi thoát với 100

Về cơ bản, tôi muốn thoát lỗi tải xuống với một mã khác với các lỗi như lần đầu tiên. Nếu có thể, tôi muốn mỗi lỗi cụ thể có mã thoát khác nhau, nhưng ví dụ trên là mức tối thiểu tôi cần. Làm cách nào tôi có thể thực hiện việc này trong bản cài đặt Ubuntu vani mà không cần phần mềm bổ sung (ngoại trừ aptitude)?


Bạn có thể gói lệnh apt-get trong một tập lệnh phân tích cú pháp đầu ra. Hay đó được tính là "phần mềm bổ sung"? Ngoài ra, để phát hiện lỗi tải xuống, hãy xem xét thực hiện apt-get --download-onlytrước.
Jos

Ah, điều đó có ý nghĩa. Có lẽ bạn có thể xác minh sự tồn tại của gói X trước bằng cách thực hiện apt-cache policy X?
Jos

Một lần nữa, bạn sẽ cần phải grep đầu ra. Tôi cho rằng việc làm apt-cache policy google-chromeđó không cung cấp cho bạn một dòng với từ "Ứng cử viên", trong khi đó apt-cache policy google-chrome-stablesẽ.
Jos

ĐỒNG Ý. Tôi đang chuyển cuộc thảo luận này để trò chuyện và nhập đề xuất này dưới dạng câu trả lời (một phần).
Jos

Câu trả lời:


1

Không phải là một câu trả lời hoàn chỉnh, nhưng trước tiên bạn có thể kiểm tra sự tồn tại của các gói bằng cách thực hiện apt-cache policy Xvà lấy đầu ra cho "Ứng viên (không có)" hoặc "Không thể tìm thấy gói X", v.v.


Được nâng cấp ngay bây giờ, nhưng như bạn đã nói, đó là một phần. Hãy thoải mái xóa tất cả các bình luận của bạn mà bây giờ nó đang trả lời. Cảm ơn sự giúp đỡ của bạn
kiri

15

Tôi tin rằng đây không phải là trường hợp của XY và bạn chỉ muốn có thể gỡ lỗi apt-get nói chung. Theo giả định như vậy ở đây là câu trả lời của tôi.

Từ man apt.conf:

LỰA CHỌN DEBUG

Việc bật các tùy chọn trong phần Debug :: sẽ khiến thông tin gỡ lỗi được gửi đến luồng lỗi tiêu chuẩn của chương trình sử dụng các thư viện apt hoặc cho phép các chế độ chương trình đặc biệt chủ yếu hữu ích để gỡ lỗi hành vi của apt.

Do đó, bạn chỉ cần kích hoạt các quy tắc cho từng hành vi gỡ lỗi của apt-get:

  • Debug :: pkgPro HiệuResolver : cho phép xuất ra các quyết định được đưa ra bằng cách nâng cấp, nâng cấp, cài đặt, gỡ bỏ, thanh lọc.
  • Gỡ lỗi :: NoLocking : vô hiệu hóa tất cả các khóa tệp. Điều này có thể được sử dụng để chạy một số hoạt động (ví dụ, cài đặt apt-get -s) với tư cách là người dùng không root.
  • Debug :: pkgDPkgPM : in ra dòng lệnh thực tế mỗi khi apt gọi dpkg (1).

3 cái đó là cái đầu tiên mà trang man giới thiệu, và cái đầu tiên sẽ giúp bạn gỡ lỗi lỗi đầu tiên bạn hiển thị. Lần thứ hai bạn có thể cần:

  • Gỡ lỗi :: Mua lại :: http : In thông tin liên quan đến tải xuống các gói bằng HTTP. Ngoài ra còn có https, ftp, cdrom.

Trang man có nhiều hơn nữa, bạn có thể liệt kê chúng dễ dàng sử dụng man apt.conf | grep -A5 -i debug.

Tất cả điều này nên được viết bằng cú pháp đúng và chúng được chấp nhận giá trị boolean:

Debug::*::*  "true";

hoặc nếu bạn muốn sử dụng nhiều dòng:

Debug {
  Acquire {
    http "true";
    ftp "true";
  };
  NoLocking "true";
};

Nếu bạn chỉ muốn chạy cho một phiên bản apt-get, bạn có thể sử dụng -o/ --optionswitch:

sudo apt-get -o Debug::pkgProblemResolver=true -o Debug::Acquire::http=true -f install 

Một phương pháp khác là tạo tệp cấu hình được cá nhân hóa của bạn và tải nó bằng -c/ --config-fileswitch:

sudo apt-get -c debug-apt.conf install hello

Về việc thay đổi mã thoát, tôi tin rằng bạn không thể trừ khi bạn thay đổi mã nguồn. apt-getlà một phần mềm nghệ thuật , vì vậy nó có các phương pháp tiên tiến để gỡ lỗi quá trình mà không cần phải dựa vào mã thoát.


Tôi thực sự đang cố gắng đưa các lệnh này vào một tập lệnh có thể chạy không giám sát. Làm thế nào tôi có thể sử dụng điều này trong một tập lệnh bash để tìm nếu lỗi đầu tiên xảy ra?
kiri

Tôi cũng chỉ muốn làm điều này trong một trường hợp cụ thể apt-getchứ không phải mọi lúc.
kiri

@ minerz029 bạn có thể sử dụng -otùy chọn để chạy các lệnh ad-hoc. Cập nhật câu trả lời của tôi.
Braiam

Về nhận xét đầu tiên, bạn nên làm điều gì đó thông minh với phân tích cú pháp đầu ra. Tôi không có ý tưởng rõ ràng làm thế nào bạn có thể làm điều đó.
Braiam

Tôi thực sự đã làm cho nó hoạt động với việc thu được đầu ra apt-cache policy PACKAGE, như Jos nói. Tôi đã cố kiểm tra xem một gói có thể cài đặt được không, tôi có thể không hỏi đúng câu hỏi của mình nhưng đây là một câu trả lời hay
kiri
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.