더 이상 사용되지 않는 패키지 목록을 얻으려면 어떻게합니까? 이상 사용할 수없는 패키지 목록을

활성화 한 리포지토리에서 더 이상 사용할 수없는 패키지 목록을 얻는 방법을 찾으려고합니다. 이 워크 스테이션은 꽤 많은 버전의 우분투를 거치며 많은 타사 저장소를 추가하고 제거했습니다. 제거 된 리포지토리에서 가지고있는 소프트웨어 목록을 가져 와서 정리하거나 적절한 리포지토리를 다시 추가 할 수 있습니다.



답변

aptitude search '~o'

적성에는 매우 강력한 검색 기능이 있습니다. 불행히도 구문은 다루기 쉽지 않으며 설명서를 찾으려면 맨 페이지를 지나야하지만 그만한 가치가 있습니다.

apt-show-versions도 도움이 될 수 있습니다.

apt-show-versions | grep 'No available version'


답변

등록 된 리포지토리 또는 PPA에없는 앱 목록을 얻으려면 다음과 같이하십시오.

sudo apt-get install apt-show-versions
apt-show-versions | grep 'No available version'

다음과 같은 텍스트가 출력되어야합니다.

app1 1.0.0.14 installed: No available version in archive
app23 0.3.6 installed: No available version in archive
app332 7.0.9377 installed: No available version in archive

나에게 이것은 효과가 있었고 DEB 패키지를 사용하여 설치하고 Repo 또는 PPA에서 사용할 수없는 세 가지 앱을 보여주었습니다.

모든 프로그램을 확인하는 것은 불가능하다는 것을 기억하십시오 dpkg. 예를 들어 일부 응용 프로그램은 올바른 폴더로 추출하여 설치하거나 다른 응용 프로그램은 독립 실행 형 설치 관리자 저장소 또는 스크립트를 사용합니다. 따라서 가장 좋은 방법은 APT 이외의 방법으로 설치 한 앱 목록을 유지하는 것입니다.


답변

당신이있는 경우 적성 설치된 사용,

aptitude search '?obsolete'

또는 짧은 형식

aptitude search '~o'

여기 샘플 출력입니다

i A gcc-4.7-base - GCC, the GNU Compiler Collection (base package)
id  libdb4.7     - Berkeley v4.7 Database Libraries [runtime]
i   libudev0     - libudev shared library

각 줄 의 첫 번째 문자 는 패키지의 현재 상태를 나타냅니다. 가장 일반적인 상태는 다음과 같습니다.

  • p는 시스템에 패키지의 흔적이 없음을 의미합니다.
  • c, 패키지가 삭제되었지만 구성 파일이 시스템에 남아 있음을 의미합니다.
  • i는 패키지가 설치되었음을 의미하며
  • v, 패키지가 가상임을 의미합니다.

두 번째 문자 는 패키지에 대해 수행 할 저장된 조치 (있는 경우)를 나타내며, 그렇지 않으면 공백이 표시됩니다. 가장 일반적인 조치는 다음과 같습니다.

  • i, 패키지가 설치됨을 의미합니다.
  • d, 패키지가 삭제됨을 의미
  • p는 패키지 및 해당 구성 파일이 제거됨을 의미합니다.

세 번째 문자 가 A이면 패키지가 자동으로 설치된 것입니다.

가능한 상태 및 동작 플래그의 전체 목록은 적성 참조 안내서의 패키지 정보 액세스 섹션을 참조하십시오 .


답변

Ubuntu 19.10부터는 실행할 수 있습니다

apt list ?obsolete

더 이상 사용되지 않는 패키지 목록을 가져옵니다.

모든 릴리스에 대해 다음 Bash one-liner를 사용할 수 있습니다.

comm -23 <(dpkg-query -W -f '${db:Status-Abbrev}\t${Package}\n' | grep '^.[^nc]' | cut -f2 | sort) <(apt-cache dumpavail | sed -rn 's/^Package: (.*)/\1/p' | sort -u)

이를 위해 추가 패키지를 설치할 필요가 없으며 비교적 빠릅니다. 또한 부분적으로 설치된 패키지를 찾을 수 있지만 구성 파일 만 남아있는 패키지는 찾지 못하지만 쉽게 변경할 수 있습니다. 참고 : 이것은 패키지가 어떤 아키텍처인지 상관하지 않습니다.

리포지토리에서 사용 가능한 것과 다른 버전으로 설치된 패키지를 포함하려는 경우 다음 중 하나를 수행 할 수 있습니다.

현대적 아파트 사용 :

 apt list --installed | awk -F/ '/\[installed,local\]/{print $1}'

또 다른 옵션은 실행하는 것입니다

ubuntu-support-status --show-unsupported

“더 이상 다운로드 할 수 없음 :”섹션에서 패키지 이름을 읽으십시오.


답변

조사 할 추가 정보.

우분투 지원 상태
echo " '수동으로 설치됨'으로 표시된 $ (sudo apt-mark showmanual | wc -l) 패키지."

… ubuntu-support-status 및 apt-mark는 설치가 필요할 수 있습니다.


답변

더 깨끗한 방법이있을 수 있지만 내 머리 꼭대기에서 할 수 있습니다.

dpkg -l | cut -f 3 -d ' ' > installed
xargs -n 1 --replace=X apt-cache search ^X$ < installed | cut -f 1 -d ' ' > available
diff installed available

installed파일 의 처음 몇 줄을 정리하십시오 . 헤더가 있습니다.

누군가 내 구문 강조를 고칠 수 있다면 보너스 …


답변

언급했듯이 apt-get 검색은 패키지가 여전히 사용 가능한지 확인하는 좋은 방법이 아닙니다. 추가 한 줄에 모든 것을 추가했습니다.

for i in `dpkg -l | grep '^i' | awk '{ print $2 }'`; do apt-cache show $i > /dev/null || echo $i; done