데비안에서 특정 대안을 제공하는 모든 소프트웨어 패키지 찾기 배포본에는 데비안 대체 시스템이 있습니다.

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

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

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

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



답변

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

여기서 사용하는 문제 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 를 사용하는 것입니다 . 여기서 비슷한 패키지가 오른쪽 섹션에 나열되어 있습니다.


답변

이것은 다릅니다. 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를 사용할 것입니다.


답변

가상 패키지데비안 대체 시스템 (바이너리가 사용되는 곳)은 서로 관련이 있지만 동일하지는 않습니다. 가상 패키지의 경우 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하는 등) 패키지 자체를 검사하지 않으면 현재 어떤 패키지가 대안을 제공 할 때까지 일반적인 방법은 없습니다.


답변

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:


답변

에서 우분투 패키지는 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


답변