web-dev-qa-db-ja.com

非LTSパッケージのリストを効率的にインストールするにはどうすればよいですか?

5年間サポートされているパッケージとサポートされていないパッケージを使用して、システムがLTSでどの程度サポートされているかを確認したいと思います。 5年間サポートされていないパッケージはほとんど使用されないか、(セキュリティ)の問題が発生する可能性が非常に低いため、無視できます。

これは、レポートを取得して結論を​​出すことができるので便利だと思います。 "私のシステムは100%LTSです" "パッケージX、Y、Zのため、私のシステムはちょうど99%LTSです" "KDEを使用しているため、私のシステムは50%LTSになりました"

私の答え 質問 12.04 LXDEにはLTSがありますか? に関連して、Ubuntuのどのパッケージが5年間のサポートを備えているかを確認する方法を投稿しました。例えば。:

$ apt-cache show unity | grep ^Supported
Supported: 5y

$ apt-cache show lxde-core | grep ^Supported
<no output>

すべてのパッケージのすべての情報を取得するスクリプトを作成することはできますが、apt-cacheコマンドはひどく遅い:

real    0m1.535s
user    0m1.484s
sys     0m0.036s

2700以上のパッケージがインストールされている場合、これには約70分かかります(!)。

システム上で5年間サポートされていないすべてのパッケージの処理を高速化し、レポートを取得するにはどうすればよいですか?

シンプルなapt-*単純なシェルスクリプトで使用するためのシェルコマンド。 Pythonに移行するなど、より高度なスクリプトが必要な場合は、これでも問題ありません。最終的には、システムに関するレポートを簡単かつ迅速に作成するための(小さな)スクリプトをリリースしたいと思います。

注:Ubuntuの特定のフレーバーがLTSを提供するかどうかについての議論には興味がありません-これは実際には単なるパッケージです。システム上でLTSパッケージと非LTSパッケージを混在させることができます。

5
gertvdijk

私はあなたのシステムについて知りませんが、これは私がしたことです:

time dpkg -l | grep 'ii' |  awk ' {print $2}' | xargs apt-cache show | grep '^Supported:' | grep -v '5y' | wc -l
158

real        0m27.549s
user        0m5.580s
sys         0m21.701s

そんなに悪くないようですね。

パッケージの総数:

dpkg -l | grep 'ii' | wc -l
2602

私はAMDE-350を実行していますが、これは非常に高速なCPUではありません...

編集:xargsへの引数の最大数:

xargs --show-limits

...
POSIX upper limit on argument length (this system): 2091826
...
6
Gerhard Burger

grep-dctrl(1)を使用して、5年間の完全なLTS期間よりも少ない期間維持されるパッケージのリストを取得するための簡単なワンライナーを次に示します。

Sudo apt-get install dctrl-tools
dpkg -l | grep '^ii' |  awk ' {print $2}' | xargs apt-cache show | grep-dctrl -v -FSupported --exact-match -nsPackage 5y | sort | uniq

簡単に変更して、さまざまなサポート期間を探すことができます。

4
Matt Zimmerman