데비안에서 특정 대안을 제공하는 모든 소프트웨어 패키지 찾기


12

데비안 배포본에는 데비안 대체 시스템이 있습니다. 위키에서 :

데비안 대체 시스템은 동일하거나 유사한 기능을 수행하는 여러 프로그램이 동시에 설치되지만 하나의 특정 구현이 기본값으로 지정된 대체 구현으로 나열 될 수있는 방법을 만듭니다. 예를 들어 많은 시스템에 여러 개의 텍스트 편집기가 동시에 설치되어 있습니다. vi 프로그램은 nvi, elvis, vim 등과 같은 많은 구현이 있지만 기본값으로 지정해야하는 편집기의 고전적인 예입니다.

일반적으로 데비안에는 특정 대안을 제공하는 여러 패키지가 있습니다. 데비안 저장소에 존재하는 모든 패키지의 전체 목록을 어떻게 얻습니까? vi 대안을 예로 사용하겠습니다.

참고 : 설치된 패키지 목록에 대해 이러한 쿼리를 수행하는 것은 쉽지만이 질문이 요구하는 것은 아닙니다.

답변:


9

나는 이것이 조금 늦다는 것을 알고 있지만,이 게시물은 현재 데비안에서 대안을 찾는 것과 관련된 최고의 검색 히트 중 하나입니다.

여기서 사용하는 문제 update-alternatives는 내가 알 수있는 한 설치된 옵션 만 표시한다는 것입니다 (man 페이지는 매우 드 spa니다).

제목에 제시된 질문에 답변하기 위해 (설치 여부와 상관없이) 대안을 제공하는 모든 사용 가능한 패키지를 찾으 려면 다음을 사용할 수 있습니다.

aptitude search '?provides(pattern)'

다음과 같이 약칭 할 수도 있습니다.

aptitude search '~Ppattern'

pattern찾고있는 대안의 전부 또는 일부가 어디에 있습니까 ? 의 특정 경우 vi에는 실제로 작동하지 않습니다. 당신이 패키지를 검사하는 경우 nvivim함께 aptitude show또는 apt-cache show, 당신은 볼 것이다 자사의 "제공"의 어느 하나 개의 목록 "VI"섹션. 사실, nvi의 설명에는 해당 섹션이 완전히 누락되었습니다.

그러나 editor다음 과 같은 다른 대안에는 합리적으로 잘 작동합니다 .

$ aptitude search '~Peditor'
p   deutex                         - composition tool for doom-style WAD files
p   edbrowse                       - /bin/ed-alike webbrowser written in C    
p   emacs24                        - GNU Emacs editor (with GTK+ GUI support) 
p   emacs24-lucid                  - GNU Emacs editor (with Lucid GUI support)
p   emacs24-nox                    - GNU Emacs editor (without GUI support)   
p   fte-console                    - Text editor for programmers - console edi
p   fte-terminal                   - Text editor for programmers - version for
p   fte-xwindow                    - Text editor for programmers - X Window Sy
p   jed                            - editor for programmers (textmode version)
p   jove                           - Jonathan's Own Version of Emacs - a compa
p   jupp                           - user friendly full screen text editor    
p   le                             - Text editor with block and binary operati
p   ledit                          - line editor for interactive programs     
p   levee                          - very small vi clone                      
p   mg                             - microscopic GNU Emacs-style editor       
p   nano                           - small, friendly text editor inspired by P
p   nano-tiny                      - small, friendly text editor inspired by P
p   ne                             - easy-to-use and powerful text editor     
p   pluma                          - official text editor of the MATE desktop 
p   rlfe                           - Front-end using readline to "cook" input 
p   rlwrap                         - readline feature command line wrapper    
p   scite                          - Lightweight GTK-based Programming Editor 
p   vigor                          - nvi with the evil paperclip              
p   vile                           - VI Like Emacs - vi work-alike            
p   vim                            - Vi IMproved - enhanced vi editor         
p   vim-athena                     - Vi IMproved - enhanced vi editor - with A
p   vim-gnome                      - Vi IMproved - enhanced vi editor - with G
i   vim-gtk                        - Vi IMproved - enhanced vi editor - with G
p   vim-nox                        - Vi IMproved - enhanced vi editor - with s
i   vim-tiny                       - Vi IMproved - enhanced vi editor - compac
p   xjed                           - editor for programmers (x11 version)     
p   xul-ext-password-editor        - edit password manager entries in Mozilla 
p   xvile                          - VI Like Emacs - vi work-alike (X11) 

이 완벽하지 않다하더라도, aptitude믿을 수 없을 정도로 유연한 검색 기능을 자주 그들이 사용하는 예를 들어 provide- 대안 올바르게 나열하지 패키지의 문제를 해결하게됩니다 "~seditors ~dvi\s"그은 "편집자"섹션에있는 모든 패키지를 나열하는 검색 패턴을 description은 문자열 "vi"를 포함합니다.

또 다른 옵션은 Debian 's packages website 를 사용하는 것입니다 . 여기서 비슷한 패키지가 오른쪽 섹션에 나열되어 있습니다.


1
답변 주셔서 감사합니다. 그러나 무엇 aps ~Peditor입니까? 경우 aps적성, 미세위한 지름길로하지만, 대답이 사용하지 마십시오 것입니다, 그냥 혼동 모두는 것이다. 또한 누락 된 오퍼가 있다고 생각되면 해당 패키지에 대해 버그 보고서를 제출할 수 있습니다.
Faheem Mitha

맥락에서 나는을 의미한다고 생각 aps합니다 aptitude search. 하지만 명시 적으로 사용해야합니다. 그러나 나는 관계없이 실행 가능한 대답이라고 생각하지 않습니다. 어쩌면 약간의 개선과 함께 작동 할 것입니다. aptitude search -Pvi관련이없는 물건을로드합니다. 전체 패키지 설명을 검색한다고 생각합니다.
Faheem Mitha

aptitude search ~P(물결표 참고)는에서만 검색 Provides하지만 vi다른 Provides항목 과 일치 합니다. 와 정확히 일치하는 것을 지정해야합니다 aptitude search '~P^vi$'. 이 예는이 접근 방식의 근본적인 한계를 강조합니다. vi대안이 있지만 vi가상 패키지 는 없습니다 ...
Stephen Kitt

5

이것은 다릅니다. x-www-browser와 같은 몇 가지 대안이 패키지를 사용하지 않고 유지 관리자 스크립트를 통해 업데이트 대안에 추가됩니다.

/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --install /usr/bin/x-www-browser \
/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --remove mozilla /usr/bin/iceweasel
/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --install /usr/bin/gnome-www-browser \
/var/lib/dpkg/info/iceweasel.prerm:    update-alternatives --remove x-www-browser /usr/bin/iceweasel
/var/lib/dpkg/info/iceweasel.prerm:    update-alternatives --remove gnome-www-browser /usr/bin/iceweasel
/var/lib/dpkg/info/chromium.postinst:    update-alternatives --install /usr/bin/x-www-browser \
/var/lib/dpkg/info/chromium.postinst:    update-alternatives --install /usr/bin/gnome-www-browser \
/var/lib/dpkg/info/chromium.prerm:    update-alternatives --remove x-www-browser /usr/bin/chromium
/var/lib/dpkg/info/chromium.prerm:    update-alternatives --remove gnome-www-browser /usr/bin/chromium

동일한 바이너리의 모든 버전을 설치하기 위해 단일 메타 패키지를 사용하는 다른 사람들도 있습니다 (Java / OpenJRE 패키지도 염두에 두십시오 init). 다른 사람들은 " 프로 바이더 " (일반적으로 DPKG 데이터베이스에 대한 업데이트와 함께 제공됨)를 채워 가상 패키지를 사용 합니다. 이 경우 해당 패키지 중 하나가 동일한 바이너리를 제공해야합니다.

그렇다면 특정 파일을 제공하는 모든 패키지를 찾는 방법은 무엇입니까? 나는 당신이하는 패키지와 apt-file search file다른 모든 것을 알고 있다면 Provides를 사용할 것입니다.


vim의 예?
Faheem Mitha

1
@FaheemMitha vim이 제공합니다 editor.
Braiam

그렇습니다. vim과 관련이없는 패키지를 포함하여 다른 많은 패키지도 마찬가지입니다. 그렇다면이 예는 어떤 모습입니까?
Faheem Mitha

4

가상 패키지데비안 대체 시스템 (바이너리가 사용되는 곳)은 서로 관련이 있지만 동일하지는 않습니다. 가상 패키지의 경우 apt-cache"실제로"제공되는 패키지를 찾는 데 사용할 수 있습니다 .

$ apt-cache showpkg awk
Package: awk
Versions: 

Reverse Depends: 
  base-files,awk
  base-files,awk
Dependencies: 
Provides: 
Reverse Provides: 
mawk:i386 1.3.3-17ubuntu2
gawk:i386 1:4.0.1+dfsg-2.1ubuntu2
original-awk 2012-12-20-1
mawk 1.3.3-17ubuntu2
gawk 1:4.0.1+dfsg-2.1ubuntu2

디스플레이 관리자의 경우 가상 패키지는 x-display-manager다음과 같습니다.

$ apt-cache showpkg x-display-manager
Package: x-display-manager
Versions: 

Reverse Depends: 
  utf8-migration-tool,x-display-manager
  razorqt,x-display-manager
  lxde,x-display-manager
  numlockx,x-display-manager
  ltsp-client-core,x-display-manager
Dependencies: 
Provides: 
Reverse Provides: 
gdm 3.10.0.1-0ubuntu3.1
lightdm 1.10.6-0ubuntu1
kdm 4:4.11.11-0ubuntu0.2
xdm 1:1.1.11-1ubuntu1
wdm 1.28-16
slim 1.3.4-2.1
lxdm 0.4.1-0ubuntu6
kdm 4:4.11.8-0ubuntu6
gdm 3.10.0.1-0ubuntu3
lightdm 1.10.0-0ubuntu3

대안 시스템은 update-alternativesBraiam의 답변에서 알 수 있듯이 관리자 스크립트에서 호출을 통해 처리되며 나머지 패키징 시스템은이를 알지 못합니다. Provides패키지가 단순히 바이너리를 통해 제공되는 서비스 또는 라이브러리의 측면에서 서로를 제공 할 수 있기 때문에 필드, 또한 대안보다 더 일반적이다.

패키지 관리자가 Provides필드 에 대안에 대한 정보를 추가하지 않고 (그리고 대안의 모든 엔드 포인트에 대한 가상 패키지를 작성 vi하는 등) 패키지 자체를 검사하지 않으면 현재 어떤 패키지가 대안을 제공 할 때까지 일반적인 방법은 없습니다.


2

vi 대안 을 찾기 위해 질문과 엄격히 관련이 있습니다 .

 update-alternatives --list editor

산출:

/bin/ed
/bin/nano
/usr/bin/mcedit
/usr/bin/vim.basic
/usr/bin/vim.tiny

또는:

update-alternatives --config vi

산출:

There are 2 choices for the alternative vi (providing /usr/bin/vi).



Selection    Path                Priority   Status

------------------------------------------------------------

* 0            /usr/bin/vim.basic   30        auto mode

  1            /usr/bin/vim.basic   30        manual mode

  2            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number:

3
맞지만 설치된 패키지에서만 작동합니다. 질문은 모든 패키지에 대해 수행하는 방법을 묻습니다 . 아마도 나는 그 질문에 더 분명했을 것입니다.
Faheem Mitha

1
옳은. 그러나 초기 포스트 업데이트를 확인하기 전에 이것을 게시합니다. "Debian 저장소에 존재하는"부분을 추가하는 부분
Andy

글쎄, 나는 "이러한 모든 패키지"를 가지고 있었지만 분명하다고 생각했다. 미안합니다. 어쨌든, unix.sx에 오신 것을 환영합니다. 오늘 당신이 합류 한 것을 봅니다.
Faheem Mitha

1

에서 우분투 패키지는 command-not-found또한 많은 대안을 포함하는 데이터베이스가 포함되어 있습니다. 설치 후 /usr/lib/command-not-found --no-failure-msg --ignore-installed mail(에 대한 대안을 나열하기 위해 mail) 를 조회 할 수 있습니다 .
bash에서 누락 된 명령에 대한 자동 제안을 원하지 않는 경우 unset -f command_not_found_handle~ / .bashrc에 쓰거나 전역에서 정의를 제거하십시오 /etc/bash.bashrc. (zsh와 유사하게 수행하십시오.)

에서 데비안 ,이 도구는 어떤 대안이 알려져 있지 않다 있도록 데이터베이스를 만들 단지 APT-파일을 사용 (테스트하지). 그것은와 동일하게 알려줍니다 apt-file search ....

우분투 소스 : https://launchpad.net/command-not-found


나는 당신이 제안하는 것을 따르지 않습니다. 좀 더 명확하게 할 수 있습니까? 특히 /usr/lib/command-not-found /usr/bin/mail어떤 종류의 레시피처럼 보이지만 어떻게해야하는지 이해할 수 없습니다. 설명이 도움이 될 것입니다.
Faheem Mitha

명확하게하기 위해 단어를 추가하고 /usr/bin/작동하지 않으므로 명령에서 제거 했습니다.
simohe

글쎄, 내 질문은 우분투가 아니라 데비안에 관한 것입니다. 데비안과 우분투가 왜 다른지 이해할 수는 없습니다. 그리고 실제로 당신이 나열한 명령은 여기서 아무 것도 유용하지 않습니다. # /usr/lib/command-not-found mail Command 'mail' is available in '/usr/bin/mail' mail: command not found.
Faheem Mitha

대답 mail은 이미 설치 되었음을 나타 냅니다. 이 검사는 옵션으로 건너 뛸 수 있습니다 --ignore-installed. 그러나이 후에는에서보다 더 많은 정보 (데비안으로)를 얻지 못할 것입니다 apt-file search mail.
simohe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.