特定の代替手段を提供するDebianのすべてのソフトウェアパッケージを見つける


12

Debianディストリビューションには、Debian Alternatives Systemがあります。Wikiから:

Debian代替システムは、同じまたは類似の機能を実行するいくつかのプログラムが、同時にインストールされるが、デフォルトとして指定された特定の実装を使用する代替実装としてリストされる方法を作成します。たとえば、多くのシステムには複数のテキストエディタが同時にインストールされています。viプログラムは、nvi、elvis、vimなどの多くの実装を持つエディターの古典的な例ですが、どれをデフォルトとして指定する必要がありますか?

一般に、Debianには特定の代替手段を提供する複数のパッケージがあります。Debianリポジトリに存在するそのようなすべてのパッケージの完全なリストを取得するにはどうすればよいですか?例としてviの代替を使用してみましょう。

注:インストールされているパッケージのリストに対してこのようなクエリを実行するのは簡単ですが、それはこの質問ではありません。

回答:


9

私はこれが少し遅れていることを知っていますが、この投稿は現在Debianで代替を見つけることに関連する検索ヒットのトップの1つです。

update-alternativesここでの使用に関する問題は、私が知る限り、インストールされているオプションのみを表示することです(そのmanページはかなりまばらです)。

タイトルにある質問に答えるには、つまり、(インストールされているかどうかに関係なく)代替を提供するすべての利用可能なパッケージを見つけるには、次のコマンドを使用できます。

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はありませんが、非常に柔軟な検索機能備えているため、パッケージが提供する選択肢が正しくリストされないという問題を回避できます。たとえば"~seditors ~dvi\s"、検索パターンとして使用すると、「editors」セクションにすべてのパッケージがリストされます。説明には文字列「vi」が含まれています。

別のオプションは、DebianのパッケージWebサイトを使用することです。この場合、同様のパッケージが右側のセクションにリストされています。


1
答えてくれてありがとう。しかし、何aps ~Peditorですか?aps適性のショートカットを意図している場合は問題ありませんが、それを回答で使用しないでください。また、不足している提供があると思われる場合は、対応するパッケージに対してバグレポートを提出できます。
Faheem Mitha、2015

文脈から、私はapsを支持しなければならないと思うaptitude search。ただし、明示的に使用する必要があります。しかし、私はそれがうまくいく答えだとは思わない-おそらくそれはいくつかの改良でうまくいくでしょう。aptitude search -Pvi無関係なものの負荷を与えます。パッケージの説明全体を検索すると思います。
Faheem Mitha

aptitude search ~P(チルダに注意)はでのみ検索しますがProvidesvi他のProvidesエントリと一致します。との完全一致を指定する必要がありますaptitude search '~P^vi$'。ただし、この例では、このアプローチの基本的な制限を強調しています。vi別の方法はありますが、vi仮想パッケージはありません...
Stephen Kitt

5

これによります。x-www-browserのようないくつかの代替手段があり、パッケージを使用せず、メンテナースクリプトを介してupdate-alternativesに追加されます。

/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他のすべてのために、私は提供物を使います。


vimの例?
Faheem Mitha、2014

1
@FaheemMitha vimが提供しますeditor
Braiam 2014

します。したがって、vimとは何の関係もないパッケージを含め、他の多くのパッケージを実行します。では、この場合の例はどのようになるでしょうか?
Faheem Mitha、2014

4

仮想パッケージDebian代替システム(バイナリーが機能する場所)は関連していますが、同じではありません。仮想パッケージの場合、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-alternatives、Braiamの回答が示すように、メンテナスクリプトでの呼び出しによって処理されます。パッケージシステムの残りの部分は、これらのことに気付かずに気づいています。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 14

1
正しい。しかし、私は最初の投稿更新を確認する前にこれを投稿します...「Debianリポジトリに存在する」を追加する部分
Andy

まあ、私は「そのようなすべてのパッケージ」を持っていました。ごめんなさい とにかく、unix.sxへようこそ。今日参加しましたね。
Faheem Mitha 14

1

Ubuntuの、パッケージは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についても同様です。)

Debian、このツールは何の選択肢が知られていないので、データベースを作成するだけのapt-ファイルを使用しています(テストしていません)。そこはと同じことを伝えapt-file search ...ます。

Ubuntuのソース:https : //launchpad.net/command-not-found


私はあなたが提案していることをフォローしません。もっと明確にできますか?特に/usr/lib/command-not-found /usr/bin/mailある種のレシピのように見えますが、それが何をすることになっているのか分かりません。説明が参考になります。
Faheem Mitha 2017

明確にするためにいくつかの単語を追加し/usr/bin/、これが機能しないためコマンドから削除しました。
simohe

まあ、私の質問はDebianではなくUbuntuについてです。DebianとUbuntuがここで異なる理由がわかりませんが。実際、ここでリストするコマンドは、ここでは何も役に立ちません。# /usr/lib/command-not-found mail Command 'mail' is available in '/usr/bin/mail' mail: command not found
Faheem Mitha 2017

答えは、mailすでにインストールされていることを示しています。このチェックはオプションでスキップできます--ignore-installed。しかし、この後も、からより多くの情報(debian)を取得することはありませんapt-file search mail
simohe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.