Как я могу получить «подробный» код выхода для 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
)?
Не полный ответ, но сначала вы можете проверить наличие пакетов, выполнив apt-cache policy X
и выбрав вывод «Кандидат (нет)» или «Не удалось найти пакет Х» и т. Д.
Я полагаю, что это не случай XY, и вы просто хотите иметь возможность отлаживать apt-get в целом. При таких предположениях вот мой ответ.
Из man apt.conf
:
ОПЦИИ ОТЛАДКИ
Включение опций в разделе Debug :: приведет к отправке отладочной информации в стандартный поток ошибок программы, использующей библиотеки apt или включите специальные программные режимы, которые в первую очередь полезны для отладки поведения apt.
blockquote>Следовательно, вам нужно только активировать правила для каждого из способов отладки
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";
или, если вы хотите использовать несколько строк:
[ 1130] Если вы хотите работать только для экземпляра apt-get, вы можете использовать переключательDebug { Acquire { http "true"; ftp "true"; }; NoLocking "true"; };
-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
представляет собой современное программное обеспечение , так как в нем есть усовершенствованные методы для отладки процесса без необходимости полагаться на коды выхода.