dpkg를 사용하여“무엇을 제공”하는 패키지 목록을 얻으려면 어떻게합니까?


9

dpkg에는 패키지에 대한 "제공"필드가 있습니다.

$ apt-cache show vim-tiny | grep Provides
Provides: editor
$

"편집기"를 제공하는 패키지를 어떻게 알 수 있습니까?

답변:


4

의 목록이 포함 aptitude된을 사용하여 (요즘 apt-cache showpkg에는 권장 하지 않는 것으로 보임) 없이 원하는 효과를 얻을 수 있습니다 Reverse Provides. 작은 sed스크립트를 통해 파이핑 하면 다른 것들이 제거됩니다.

apt-cache showpkg <package> | sed '/Reverse Provides/,$!d'

약간 더 예쁘지 만 유형이 더 긴 예제 (버전이 아닌 패키지 이름 만 나열하고 알파벳순으로 정렬)는 다음과 awk같이 얻을 수 있습니다 .

apt-cache showpkg httpd | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}'

...이를 통해 uniq중복을 제거 할 수 있습니다 (여러 버전의 패키지가 역 제공되어있을 수 있음). 주 사용하는 것이 uniq, 첫 번째 버전에 도움이되지 않습니다는 uniq그들 만이 인접한 라인 인 경우 중복을 제거하고 sed버전 종류의 출력을하지 않습니다.

마지막으로 다음과 같이보다 사용하기 쉬운 기능을 정의 할 수 있습니다.

provides () { apt-cache showpkg $1 | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}' | uniq;}

이것을 (예를 들어) .bashrc에 넣으면 쉘이로드 할 때로 드되고 provides <package>패키지의 역 제공을 얻을 수 있습니다.


sort -u중복을 제거하므로 호출 할 uniq필요가 없습니다. 그러나 어떤 좋은 해결책이라도 훨씬 빠릅니다. aptitude일치 doom-wad-editor하므로 완전히 동일하지 않습니다.
야누스 트롤 슨

잘 지내 sort -u. 그거 몰랐어 왜 픽업하지 않는지 궁금합니다 doom-wad-editor...? 그것은 apt-cache showpkg전혀 흥미롭지 않기 때문에 특히 흥미 롭습니다 .
Darael

아 추가 검사에 따르면 aptitude검색시 Provides:필드의 하위 문자열과 일치 하므로 (따라서 픽업 deutex) apt-cache showpkg메소드가 정확한 패키지 이름을 사용합니다. 그러므로 둘 다 아마도 그 자리를 차지할 것입니다.
Darael

<package>가상 패키지 라는 것이 분명해야한다고 생각합니다 . 처럼 editor.
x-yuri

@ x-yuri는 결과가 있기 때문에 가상 패키지는 Provides:저장소 에 최소한 한 줄 이 존재하는 이름이기 때문 입니다. 다음과 같은 방식으로 apt-cache search출력이없는 경우 올바른 결과가 출력 옵션이 제공됩니다. 동일한 패키지의 구체적인 버전과 가상 버전이있을 수 있으며 구체적인 버전이있는 곳을 보여주기 위해이 버전을 향상시킬 수 있다고 생각합니다.
Darael

7

적성도이 기능을 제공합니다. 따라서 이와 같은 명령은 편집기를 제공하는 모든 패키지를 표시합니다.

aptitude search '~Peditor'

다른 구속 조건을 추가 할 수도 있습니다. 설치된 편집자 만 표시합니다.

aptitude search '~i~Peditor'

다른 솔루션보다 더 많은 패키지가 포함되어 있기 때문에 이것을 선호합니다. 내 솔루션은 줄의 시작 부분에 "i"로 표시된 패키지 만 표시했습니다. 이 솔루션은 또한 "p"가있는 행을 보여줍니다 (시스템에 패키지의 흔적이 없음을 의미).
야누스 트로 슨

6
$ dpkg-query -W -f='Package: ${Package}\nProvides: ${Provides}\n' \
  | grep -B 1 -E "^Provides: .*editor"
Package: nano
Provides: editor
--
Package: vim-gnome
Provides: editor, gvim, vim, vim-perl, vim-python, vim-ruby, vim-tcl
--
Package: vim-tiny
Provides: editor
$

1
-1 : 설치된 패키지 만 쿼리합니다.
MoonSweep

@MoonSweep 동의하지만 일부 경우에 유용 할 수 있습니다.
user.dz

0

데이터베이스를 직접 읽기 :

#!/usr/bin/env python3
import sys
import shlex

def whichPkgsProvide(filter,l):
    for pkg in l:
            dic = {}
            pairs = [x.split(": ") for x in pkg.split("\n")]
            for j in pairs:
                    try:
                            dic[j[0]] = j[1]
                    except IndexError:
                            pass

            try:
                    if filter in dic["Provides"]:
                            yield dic["Package"]
            except KeyError:
                    pass


if __name__ == "__main__":
    l = sys.stdin.read().split("\n\n")
    print(list(whichPkgsProvide(sys.argv[1],l)))

용법:

$ python3 whichPkgsProvide.py editor <  /var/lib/dpkg/available
['vim-gnome', 'nano', 'vim-tiny']
$

-1

귀하의 예에 근거하십시오. editor사용에 의해 패키지 제공 을 기재 할 수 있습니다apropos

hvn@lappy: ~ () $ apropos editor
atobm (1)            - bitmap editor and converter utilities for the X W...
bitmap (1)           - bitmap editor and converter utilities for the X W...
bmtoa (1)            - bitmap editor and converter utilities for the X W...
ed (1)               - text editor
editor (1)           - Vi IMproved, a programmers text editor
editres (1)          - a dynamic resource editor for X Toolkit applications
ex (1)               - Vi IMproved, a programmers text editor
gedit (1)            - text editor for the GNOME Desktop
gnome-text-editor (1) - text editor for the GNOME Desktop
gview (1)            - Vi IMproved, a programmers text editor
gvim (1)             - Vi IMproved, a programmers text editor
i3-sensible-editor (1) - launches $EDITOR with fallbacks
nano (1)             - Nano's ANOther editor, an enhanced free Pico clone
notepad (1)          - Wine text editor
pico (1)             - Nano's ANOther editor, an enhanced free Pico clone
psed (1)             - a stream editor
ptked (1p)           - an editor in Perl/Tk
red (1)              - text editor
regedit (1)          - Wine registry editor
rgview (1)           - Vi IMproved, a programmers text editor
rgvim (1)            - Vi IMproved, a programmers text editor
rnano (1)            - Restricted mode for Nano's ANOther editor, an enh...
rview (1)            - Vi IMproved, a programmers text editor
rvim (1)             - Vi IMproved, a programmers text editor
s2p (1)              - a stream editor
sdlBasic (1)         - sdlBasic program editor
sed (1)              - stream editor for filtering and transforming text
select-editor (1)    - select your default sensible-editor from all inst...
sensible-editor (1)  - sensible editing, paging, and web browsing
software-properties-gtk (1) - Software Sources List editor
Tk::ColorEditor (3pm) - a general purpose Tk widget Color Editor
vi (1)               - Vi IMproved, a programmers text editor
view (1)             - Vi IMproved, a programmers text editor
vim (1)              - Vi IMproved, a programmers text editor
winecfg (1)          - Wine Configuration Editor
xedit (1)            - simple text editor for X
zshzle (1)           - zsh command line editor

1
-1 : apropos매뉴얼 페이지를 검색하므로 설치된 명령 만 나열됩니다 . 또한 OP는 패키지 목록을 원합니다 .
MoonSweep
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.