‘자세한’apt-get 종료 코드를 어떻게 얻을 수 있습니까? google-chrome is a virtual package provided

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

기본적으로 다운로드 오류가 첫 번째 오류와 다른 코드로 종료되도록하고 싶습니다. 가능한 경우 각 특정 오류에 다른 종료 코드가 필요하지만 위의 예가 필요한 최소값입니다. 추가 소프트웨어없이 바닐라 우분투 설치에서 어떻게 할 수 aptitude있습니까?



답변

완전한 대답은 아니지만 apt-cache policy X“Candidate (none)”또는 “Could n’t find package X”등에 대한 출력을 수행 하고 grepping하여 패키지가 있는지 테스트 할 수 있습니다 .


답변

나는 이것이 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)을 실행하는 데 사용할 수 있습니다.
  • Debug :: pkgDPkgPM : apt가 dpkg (1)를 호출 할 때마다 실제 명령 줄을 인쇄합니다.

이 3은 맨 페이지에서 권장하는 첫 번째이며 첫 번째는 표시하는 첫 번째 오류를 디버깅하는 데 도움이됩니다. 두 번째로는 다음이 필요할 수 있습니다.

  • Debug :: Acquire :: http : HTTP를 사용하여 패키지 다운로드와 관련된 정보를 인쇄합니다. 도있다 https, ftp, cdrom.

매뉴얼 페이지에는 더 많은 것이 있으며을 사용하여 쉽게 나열 할 수 있습니다 man apt.conf | grep -A5 -i debug.

이 모든 것은 올바른 구문을 사용하여 작성해야하며 부울 값을 허용합니다.

Debug::*::*  "true";

또는 여러 줄을 사용하려는 경우 :

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

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-getA는 예술의 상태 소프트웨어의 조각, 등이 종료 코드의 의존하지 않고 프로세스를 디버깅하는 고급 방법이있다.