적성을 통해 다양한 상태의 패키지 찾기

적성을 통해 다양한 상태의 패키지 찾기

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

  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는 의미는 아니라는 점에 유의하는 것이 중요합니다 . 는 의 약어이고 , 그 다음은~~i~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 쿼리의 경우.

관련 정보