Как я могу получить «подробный» код выхода apt-get?

Как я могу получить «подробный» код выхода для apt-get, чтобы ошибки, подобные этой

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

, имели код выхода, отличный от ошибок загрузки, подобных этой

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)

В настоящее время обе ошибки завершаются с помощью 100

По сути, я хотел бы, чтобы при загрузке выходил с кодом, отличным от ошибок, подобных первой. Если возможно, я бы хотел, чтобы у каждой конкретной ошибки был свой код выхода, но приведенный выше пример - это минимум, который мне нужен. Как я могу сделать это в стандартной установке Ubuntu без дополнительного программного обеспечения (за исключением aptitude)?

12
задан 20 September 2013 в 12:08

2 ответа

Не полный ответ, но сначала вы можете проверить наличие пакетов, выполнив apt-cache policy X и выбрав вывод «Кандидат (нет)» или «Не удалось найти пакет Х» и т. Д.

0
ответ дан 20 September 2013 в 12:08

Я полагаю, что это не случай XY, и вы просто хотите иметь возможность отлаживать apt-get в целом. При таких предположениях вот мой ответ.

Из man apt.conf:

ОПЦИИ ОТЛАДКИ

Включение опций в разделе Debug :: приведет к отправке отладочной информации в стандартный поток ошибок программы, использующей библиотеки apt или включите специальные программные режимы, которые в первую очередь полезны для отладки поведения apt.

Следовательно, вам нужно только активировать правила для каждого из способов отладки apt-get:

  • Debug :: pkgProblemResolver : включает вывод о решения, принятые dist-upgrade, upgrade, install, remove, purge.
  • Debug :: NoLocking : отключает блокировку всех файлов. Это может использоваться для запуска некоторых операций (например, apt-get -s install) от имени пользователя без полномочий root.
  • Debug :: pkgDPkgPM : печатает фактическую командную строку каждый раз, когда apt вызывает dpkg (1).

Эти 3 являются первыми, которые рекомендуется man-страницей, и первая поможет вам отладить первую отображаемую ошибку. Для второго вам может понадобиться:

  • Debug :: Acquire :: http : вывести информацию о загрузке пакетов с использованием HTTP. Существует также https, ftp, cdrom.

В справочной странице есть еще много, вы можете легко перечислить их, используя man apt.conf | grep -A5 -i debug.

Все это должно быть написано с использованием правильного синтаксиса , и они допускают логические значения:

Debug::*::*  "true";

или, если вы хотите использовать несколько строк:

Debug {
  Acquire {
    http "true";
    ftp "true";
  };
  NoLocking "true";
};
[ 1130] Если вы хотите работать только для экземпляра apt-get, вы можете использовать переключатель -o / --option:

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

Другой метод - создать ваш персонализированный файл конфигурации и загрузить его с помощью переключатель -c / --config-file:

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

Об изменении кодов выхода я думаю, что вы не сможете этого сделать, если не измените исходный код. apt-get представляет собой современное программное обеспечение , так как в нем есть усовершенствованные методы для отладки процесса без необходимости полагаться на коды выхода.

0
ответ дан 20 September 2013 в 12:08

Другие вопросы по тегам:

Похожие вопросы: