web-dev-qa-db-ja.com

「ローカル」パッケージを一覧表示するコマンドはありますか?シナプスGUIのような

以前はSynapticを使用してローカルパッケージを探していました。ローカルにインストールされているが、現在アクティブなリポジトリと完全に一致しないパッケージ。この投稿で説明されているように、 「ローカルまたは廃止された」とはSynapticで何を意味するか

デバッグに関しては、この機能が非常に役立ちます 満たされていない依存関係 問題。私は 廃止されたパッケージのリスト を取得する方法を知っていますが、ローカルパッケージの方法を見つけることができませんでした。

それで、すべてのローカルパッケージを一覧表示する同等のコマンドラインはありますか?

は、私が使用したイディオムを説明しています。

  • Orphanパッケージ:installed依存関係として自動的にインストールされ、依存関係が削除されました.
  • 廃止パッケージ:installedが、リポジトリに同じ(name、architecture)のパッケージがない。
  • localパッケージ:installedしかし、同じ(name、architecture、version)リポジトリ内。

つまり、すべてのインストール済みパッケージを意味するわけではありません。

テストケース

  1. Synaptic→Menu:Settings→Repositories→Updates:Enable Unsupported Updates(backports)(注:私はこれをPPAの例として使用しています)
  2. パッケージリストを再読み込み
  3. debhelperを検索して選択します。メニュー:パッケージ→バージョンの強制...:バックポートからバージョンを選択してインストールします(通常は最も高いバージョン)
  4. メニュー:設定→リポジトリ→更新:サポートされていない更新を無効にする(バックポート)(注:PPAの例として使用しています)
  5. パッケージリストを再読み込み

これら2つのリストを比較します。

  1. Synaptic→SideBar:Status→Installed(local&obsolete)

    Synaptic - local & obsolete packages

  2. aptitude search '~o'

    user@user-vb:~$ aptitude search '~o'
    i A linux-headers-4.15.0-19                          - Header files related to Linux kernel version 4.15.0        
    i A linux-headers-4.15.0-19-generic                  - Linux kernel headers for version 4.15.0 on 64 bit x86 SMP  
    i A linux-image-4.15.0-19-generic                    - Signed kernel image generic                                
    i A linux-modules-4.15.0-19-generic                  - Linux kernel extra modules for version 4.15.0 on 64 bit x86
    i A linux-modules-extra-4.15.0-19-generic            - Linux kernel extra modules for version 4.15.0 on 64 bit x86
    user@user-vb:~$ 
    
1
user.dz

Source.listに由来しない、またはダウンロードできないインストール済みパッケージを検索します。

$ aptitude search \
  '?narrow(?or(!?origin(), ?obsolete), ?installed)'

または短い形式:

$ aptitude search '~S (!~O|~o)  ~i'
  • ?narrow(フィルター、パターン)
    フィルターとパターンの両方に一致するパッケージを選択します。
  • ?or(パターン、パターン)
    パターンのいずれかまたは両方と一致します。
  • ?origin(パターン)
    指定されたOriginのパッケージを選択します。
  • ?obsolete
    ダウンロードできないインストール済みパッケージと一致します。
  • ?installed
    インストールされたパッケージを選択します。
  • ?not(パターン)または!
    パターンに一致しないパッケージを選択します。
3
bac0n

apt list --installedは、パッケージをlocalとしてラベル付けします。これは、ユーザーの定義と一致しているように見えます(ここで 私の答え を参照)。あなたはask、grepなどでラベル付けされたパッケージのみをフィルタリングできます:

apt list --installed | awk -F/ '/local]/{print $1}'

Python APT API を使用して同様のチェックを行うこともできます。

2
muru

apt-show-versions | grep -e 'No available version' -e 'newer than version'を使用すると、パッケージのリストを取得できます。

  • リポジトリのバージョンなし。
  • またはリポジトリのバージョンよりも高いバージョンを持っています。

おそらく、事前にSudo apt install apt-show-versionsでインストールする必要があります。

1
masantamaria