적성을 통해 각 상태의 패키지 찾기

적성을 통해 각 상태의 패키지 찾기

다음과 같은 상황의 패키지를 찾고 있습니다.

  1. 삭제되었으나 지워지지 않음
  2. 설치되었지만 구성되지 않음

나는 다음과 같은 것을 시도했습니다

aptitude search '~id'

그리고

aptitude search "~iuA"

그러나 그들 중 누구도 작동하지 않습니다.

어떤 아이디어가 있나요?

업데이트 - 명령 중 하나가 작동하지 않습니다 -

[$] dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^i[^i]

zsh: no matches found: ^i[^i]

그것이 zsh 버그인지 아니면 다른 것인지 어떤 아이디어가 있습니까?

답변1

시도 에 대해 aptitude주목해야 할 점 은 이것이 ~"패키지 상태에서 다음 플래그를 찾는다"는 의미가 아니라는 것입니다. ~iyes의 약어는 ~installed다음과 같습니다.문자 그대로 해석됨, 즉 이름에 문자가 포함된 패키지. 귀하의 문제를 만족시킬 수 있는 검색 패턴을 찾기 위해 aptitude내 시스템의 문서를 살펴보았지만 /usr/share/doc/aptitude/html/en/index.html이것이 가능한지 확실하지 않습니다. ~action중간쯤에 도착할 수도 있지만, 그것이 당신에게 지위를 가져다 줄지는 잘 모르겠습니다.


사용의 대안은 와 함께 aptitude사용하는 것입니다 .dpkg-querygrep

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^r

그러면 위치가 검색됩니다.삭제됨상태이지만 삭제되지 않았습니다.

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^i[^i]

태그가 지정된 패키지를 검색합니다.설치됨, 아직 완전히 설치되지 않았습니다. 트리거에 보류 중인 패키지를 포함하지 않으려는 경우 사용할 수 있습니다 ^i[ncHUF].


출력의 두 번째 열(패키지 이름)만 얻으려면 다음을 사용할 수 있습니다 sed.

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | sed -n 's/^r.R\?\s*//p'

삭제된 패키지 찾기 및

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | sed -n 's/^i[^i]R\?\s*//p'

설치하고 싶지만 완전히 설치되지 않은 패키지를 찾으십시오.


이를 확장하면 데비안 패키지의 "상태"는 두 부분으로 구성됩니다:

  • 이것행동패키지에서 실행되도록 설계되었습니다. 이것은 될 수있다설치하다패키지가 도착했습니다제거하다패키지가 도착했습니다잡다패키지 또는분명한소포.

  • 이것패키지 상태, 시스템에 있는 패키지의 실제 상태를 설명합니다.

위의 호출은 dpkg-query각 줄의 시작 부분에 패키지 이름과 함께 패키지의 작업 및 상태를 문자당 한 문자씩 나열합니다.

제거되었지만 제거되지 않은 패키지를 찾으려면 "remove" 작업을 사용하여 패키지를 검색하면 됩니다 grep ^r. 설치되었거나 설치될 예정이지만 아직 구성되지 않은 패키지를 찾으려면 해당 패키지를 검색합니다.행동설치하다, 하지만 상태는 그렇지 않습니다.설치됨: grep ^i[^i].

답변2

삭제되었으나 삭제되지 않은 것은 ~c( ?config-files)입니다.

설치되었지만 구성되지 않은 콘텐츠는 apt로 추적되지 않고 dpkg로만 추적됩니다. 패키지에는 실제 상태와 원하는 상태라는 두 가지 상태가 있습니다. Apt는 원하는 상태에만 관심이 있습니다. 설치되었지만 구성되지 않은 패키지는 원하는 상태가 설치됨입니다.

바라보다딜런 프레즈의 답변dpkg 쿼리에 사용됩니다.

관련 정보