apt-getパッケージに含まれているプログラムを知るにはどうすればよいですか?


17

特定のパッケージが何をインストールするかを知りたいのですが、たとえば、インストール時にncursesTABキーが展開されることがわかりました:

sudo apt-get install ncurses-

表示する:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

たとえば、ncurses-termインストール内容を知るにはどうすればよいですか?主にプログラムに興味がありますが、ライブラリやその他のファイルタイプも有用です。

可能であれば、コマンドライン方式が推奨されます(他の方法も受け入れられます)。


「プログラム」と言うとき、バイナリについて話しているのですか?
Braiam 14年

可能であれば、バイナリとスクリプト、@ Braiamに感謝します。
ソパラホデアリエレス14年

回答:


21

以下にいくつかのオプションを示します。これらはパッケージによってインストールされたすべてのファイルをリストます。

A.パッケージに含まれるすべてのファイルのリスト

  1. インストール済みパッケージの場合

    dpkg -L ncurses-term
    
  2. すべてのパッケージについて、インストールされているかどうか

    apt-file -F list ncurses-term
    

    正確な名前が一致する-Fパッケージのみが返されるように、パターンマッチングの順番。でインストールしてから、データベースを更新する必要がある場合があります。apt-filesudo apt-get install apt-filesudo apt-file update

B.パッケージに含まれる実行可能ファイルのみをリストする

  1. インストール済みパッケージの場合

    dlocatesudo apt-get dlocate)をインストールして実行するだけです:

    dlocate -lsbin ncurses-term 
    

    で説明したようにman dlocate

    -lsbinパッケージ内の実行可能ファイル(存在する場合)のフルパス/ファイル名を一覧表示します

    追加のパッケージをインストールしたくない場合は、手動でインストールできます。ファイルのリストを収集し、実行可能ビットが設定されているファイルを見つけます。

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    上記の小さなスクリプトレットはパスのみを出力し(cut -d ' ' -f 2while、ファイルが実行可能かどうかを確認するループにパスし()、ファイルが-x $file通常のファイルであり、ディレクトリまたはシンボリックリンクが-f $fileない場合()、両方のテストに合格した場合にのみ名前を出力します。

  2. すべてのパッケージについて、インストールされているかどうか

    アンインストールしたパッケージに含まれる実行可能ファイルのみをリストする方法はありません。ただし、ほとんどの実行可能ファイルはbinディレクトリにインストールされるため、出力を解析することでそれらのほとんどを取得できます。

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    この-wオプションは単語全体に一致するため、たとえば何かをインストールしたりすることはありませんtrashbin


:上記のコマンドは出力を生成しませんncurses-termが、これはこのパッケージが実行可能ファイルをインストールしないためです。それでもコマンドは機能します。別のパッケージで試してください。


こんにちは、このコマンドはインストールされていないアプリケーションでも動作するはずです。私が試みるとき、それは単にインストールすることを提供します。.installファイルは(おそらく)アプリケーションと共にダウンロードされるので、どちらがおかしくないのでしょうか?
ジェイコブVlijm 14年

@Jacobはい、インストールされてapt-fileいないことがわかっているパッケージで試してみましたが 、パッケージの内容がリストされています。DebianテストおよびUbuntu 13.10で動作します。
テルドン14年

ああ、ありがとう、依存関係はインストールされていないアプリケーションにも示されているので、私は考えただけです。
ジェイコブVlijm 14年


3

ブラウザを使用する可能性があります(そのため、APTシステムへのアクセスは必要ありません)。たとえば、パッケージ「ncurses-term」のファイルの内容をリストするには、単に入力します

https://packages.debian.org/wheezy/all/ncurses-term/filelist

Debianのブラウザのアドレスバー(必要に応じて「wheezy」を置き換えます)または

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

Ubuntuの場合(必要に応じて「saucy」を置き換えます)。


興味深い方法。このリストはDebianパッケージ用です。UbuntuやKaliなどの他のディストリビューションでも同じになるはずですか?
ソパラホデアリエレス14年

1
@Sopalajo de Arrierez:正確に読んでください:Ubuntuの同じパッケージ(この例ではncurses-term)へのリンクも投稿しました。特定のUbuntuバージョンがDebianセットの1つと同じバージョンのパッケージを持っている場合、ファイルリストは同じかもしれませんが、必ずしもそうではありません。Ubuntu、Kali、Aptosid、CrunchBang、および他のすべてのDebianベースのディストリビューションは、パッケージ(特に「README」などのファイルまたはinitシステムの構成ファイル)を必要に応じて変更できます。
マイケルクレムサー14年

@MichaelKremser、わかりました。したがって、私が見ることができるように、パッケージの内容をウェブで検索することは有用ですが、できれば、特定のディストリビューションの公式パッケージリストで検索する必要があります。
ソパラホデアリエレス14年

1
@Sopalajo de Arrierez:はい、そうです。Debian Wheezyを使用している場合はDebian Wheezyのパッケージリストを使用し、Debianテストを使用している場合はそれを使用し、Ubuntu Preciseを使用している場合はそのリストを使用します。たとえば、Ubuntuは変更されていないDebianから多くのパッケージを取得しますが、常に違いがあります。ただし、これはいつでも変更される可能性があります。
マイケルクレムサー14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.