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