이 질문과 비슷한 것을 찾고 있습니다. Zypper : 특정 저장소의 모든 패키지를 어떻게 표시합니까?
우분투를 사용하고 있기 때문에 적성 기반 솔루션이 필요합니다 . 특정 저장소에서 설치된 패키지 목록을 어떻게 얻을 수 있습니까?
이 질문과 비슷한 것을 찾고 있습니다. Zypper : 특정 저장소의 모든 패키지를 어떻게 표시합니까?
우분투를 사용하고 있기 때문에 적성 기반 솔루션이 필요합니다 . 특정 저장소에서 설치된 패키지 목록을 어떻게 얻을 수 있습니까?
답변:
aptitude를 사용하여 안정적인 브랜치 외부에 설치된 패키지를 찾으려면 다음을 사용할 수 있습니다.
aptitude search "?narrow(?installed,?not(?archive(stable)))"
패키지 이름 (설명 대신)과 버전을 보려면 -F
다음과 같이 format 옵션과 함께이 명령을 사용할 수 있습니다 .
aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"
자세한 형식은 맨 페이지를 참조하십시오 ( 제공되는 옵션이 포함 된 설명서 ).
예를 들어, Squeeze 외부에 패키지를 설치 한 경우 (예 : apt-get install -t sid package-name
.
를 통해 설치된 패키지의 출처를 확인할 수 apt-cache policy
있으며 사용법은 다음과 같습니다.
apt-cache policy <package-name>
예를 들어, python-numpy 패키지는 다음 출력을 렌더링합니다.
$ LANG=C apt-cache policy python-numpy
python-numpy:
Installed: 1:1.6.2-1
Candidate: 1:1.6.2-1.2
Version table:
1:1.7.0-1 0
1 http://ftp.es.debian.org/debian/ experimental/main amd64 Packages
1:1.6.2-1.2 0
500 http://ftp.es.debian.org/debian/ sid/main amd64 Packages
*** 1:1.6.2-1 0
100 /var/lib/dpkg/status
1:1.4.1-5 0
990 http://ftp.es.debian.org/debian/ squeeze/main amd64 Packages
990 http://ftp.de.debian.org/debian/ squeeze/main amd64 Packages
즉, 현재 sid / main 지점보다 한 버전이므로 구 버전이 설치되어 있습니다. 나는 아직 안정되어 있지 않고 1.4.1-5
현재에 1.6.2-1
있습니다.
제출시이 패키지는 이미 업데이트되었습니다 :)
적성과 수십 번의 정보 페이지를 읽은 후 마침내 이것을 얻었습니다.
aptitude search '?narrow(?installed,?not(?archive(testing)) ?archive(unstable))'
또는 (동등한) :
aptitude search '~S ~i (!~Atesting ~Aunstable)'
그것은 불안정 아카이브에서 설치 패키지를 검색합니다 모든 저장소를. 기본 아카이브에서 패키지를 필터링해야합니다 (위 예제에서 테스트).
www.debian-multimedia.org/unstable에서 설치된 패키지를 필터링하려면 다음을 수행하십시오.
aptitude search '~S ~i (!~Atesting ~Aunstable ?origin("Unofficial Multimedia Packages"))
편집 : “아카이브”,“원산지”등이 Release
리포지토리 파일 에서 공제됩니다 . 불행히도 모든 도구가 모든 행을 볼 수있는 것은 아니며 다른 구문을 사용합니다. 해당 파일을로 찾을 수 있습니다 /var/lib/apt/lists/*Release
. 또는 입력 apt-cache policy
하여 개요를 얻으십시오. apt-cache는 출력 형식을 변경했습니다. 이후 버전은 apt_preferences 스타일을 사용합니다.
Suite:
또는 Archive:
(이전 이름!)
?archive(___)
또는~A___
%t
release a=___
natty-backports
, trusty-security
,stable
Origin:
?origin(___)
또는~O___
release o=___
Canonical
, Google, Inc.
, LP-PPA-dockbar-main
,Ubuntu
현재 리포지토리 각각에 대해 오리진 태그 (예 : o = Debian )를 검사하십시오 .
apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniq
그런 다음 특정 출처에서 패키지를 검색하십시오.
aptitude search "?installed?origin(Debian)"
aptitude search "?installed?not(?origin(Debian))"
입니다 하지 그것이 자신의 원산지 정보를 제공하기 위해 각 저장소에 의존하기 때문에 보안 감사에 적합하지만, 여러 저장소에 존재하는 패키지의 기원 문제를 해결하는 데 도움이 될 수 있습니다.
aptitude search
패턴이 잘되지 않습니다. – 이들은“하나의 버전이 설치되어 있고 다른 버전은 데비안에있는 패키지 목록”또는“일부 버전이 설치되어 있으며, 해당 패키지의 버전 중 적어도 하나는 데비안에서 사용할 수 있습니다”와 같이 선택합니다. – 우리가 찾는 것은“설치된 버전은 데비안 (또는 그렇지 않은)”입니다. ?narrow()
또는 로 수행해야합니다 ?any-version()
.
nemo-fileroller
에서 설치 linuxmint
했지만 Debian
에 있습니다. 설치되어 있고 데비안 어딘가에 있기 때문에 목록에 나타납니다 .
완전성 : Ubuntu 시스템에서이 작업에도 Synaptic을 사용할 수 있습니다. 왼쪽 열에서 출처별로 패키지를 필터링 할 수 있습니다.
나는 이것을 발견했다 :
aptitude search "?origin (<repository>) ?installed"
"적성 검색" 에서 지원되는 검색어 목록도 여기에서 찾을 수 있습니다 .
sudo
합니까? 루트로 실행하지 않고도 작동하는 것 같습니다.
먼저 / var / lib / apt / lists에서 관심있는 저장소에 적합한 파일을 찾으십시오. 프로그래밍 방식 으로이 작업을 수행 할 수 있어야하지만 그렇게 할 필요는 없습니다.
예를 들어 Google 크롬을 사용하여 다음을 시도하십시오.
SEARCH_PATTERN=dl.google.com_linux_chrome # adjust to suit your needs
for PKG in $( grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages | sed 's/^Package: //' )
do
if dpkg -s "${PKG}" 2> /dev/null 1> /dev/null
then
echo ${PKG}
fi
done
그리고 나는 출력을 얻는다 :
google-chrome-stable
패키지가 설치되면 dpkg -s는 0을, 그렇지 않으면 0이 아닌 값을 반환합니다. 향후 참조 목적으로
grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages
였다
Package: google-chrome-beta
Package: google-chrome-stable
Package: google-chrome-unstable
to 매개 변수 ?archive()
는 정규식 이므로 다른 답변은 실제로 잘못되었습니다 . 그래서 ?archive(stable)
모두 일치 stable
하고 unstable
. 제외 시키려면 stable
정규식 패턴을 고정해야합니다.
aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^stable$")))'
여러 저장소를 제외하려면 다음을 수행하십시오.
aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^(xenial|xenial-updates)$")))'
또한 일부 패키지는 여러 리포지토리에 속합니다 (예 :) xenial-security,xenial-updates
. ?archive()
는 각 리포지토리에 대해 정규식 패턴을 개별적으로 평가하므로 다른 리포지토리에도 속하는 경우에도에 ?archive("^xenial-updates$")
속하는 모든 패키지와 일치합니다 xenial-updates
.
?any-version()
하기 때문에,~narrow(pat1, pat2)
과 동일?any-version(pat1 pat2)
하며 지원?any-version(pat1 pat2 pat3)
바보 보지 않고.