Ubuntuシステムにユーザーがインストールしたすべてのパッケージ、つまりデフォルトでインストールされたパッケージの上にインストールされたパッケージのリストを取得する方法はありますか?
(アイデアは、クリーンなUbuntuインストールに同じパッケージをインストールするために使用できる包括的なリストを取得することです)
これらのファイルを見て、
/var/log/installer/initial-status.gz
'-プライマリインストール/var/log/dpkg.log
'更新タイムライン(これはあなたが望むものです)/var/log/apt/term.log
'-システムで更新されたものapt
/var/cache/apt/archives/'
には、インストール用にダウンロードされたdeb
パッケージが含まれます更新:新しいインストールの正確なリストを表示するには、次の2つの手順を使用します。
grep -w install /var/log/dpkg.log > full-list.log
/var/log/installer/initial-status.gz
タイムスタンプを超える行を確認するこれらのパッケージを使用して別のシステムにクリーンインストールしたいので、 'deb'ファイルを 'cache/apt/archives'パスから新しいインストールのパスにコピーし、それらを一度にインストールできます(ダウンロードせずにそれらを再び)。
にやにや笑うために、最初にインストールされたパッケージと自動的にインストールされたパッケージを除いて、パッケージmanually installedを計算するワンライナー(ここでは明確にするために分割)をまとめました。
comm -13 \
<(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
<(comm -23 \
<(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
<(apt-mark showauto | sort) \
)
これはbash
とzsh
の両方で機能します。
上記の情報に基づいて、手動でインストールされたパッケージを一覧表示する短いPythonスクリプトを記述しました。 このリンク を参照してください。
責任は負いかねますが、お気軽にご利用ください。ただし、フィードバックや提案はいつでも歓迎します。
関連する質問に対する私の回答 ここ を確認してください: Debianシステムにインストールされているすべてのパッケージのリストを表示するにはどうすればよいですか? 。質問の他の回答の一部には、そのようなリストを取得するための素晴らしい提案も含まれています。
前の質問にもこの質問が含まれているため、この質問は重複としてマークする必要がありますが、この質問を単独で立てておくと、見つけやすくなるので便利です。
これはハックジョブですが、完全に機能します。
最初に、 http://releases.ubuntu.com/maverick/ (または使用しているUbuntuのバージョン)にアクセスし、*.manifest file
は、使用しているUbuntuのバージョンに関連付けられています。
次に、次のスクリプトを実行します(<manifest file>
、山かっこなどすべて、ダウンロードしたファイルへのパス。いつでも追加できます> output
を最後に付けて、ファイルをダンプします。
diff --suppress-common-lines <(sed 's/ .*//' <manifest file>) <(dpkg --get-selections | sed 's/[ \t].*//') | grep '>' | sed 's/[>] //'
あなたが一貫した歴史を持ち、適性を使用していると仮定します:
history | grep -e "^..... aptitude install"
aptitude install ... duhでインストールしたパッケージのみをリストします
ニースのコード、ギーコサウルスに感謝します。私はそれを使用しましたが、それを機能させる方法を理解するのにしばらく時間がかかりました。 Ubuntu 11.10でこれを実行した方法は次のとおりです。これはbashターミナルで機能します。
comm -13 \
<(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
<(comm -23 \
<(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
<(apt-mark showauto | sort) \
) > user-installed-packages
次に、タブを追加します—\t
—および各行のinstall
:
sed 's/$/\tinstall/' user-installed-packages >uip
次に、新しいマシンで:
Sudo dpkg --set-selections < uip
そして、パッケージをインストールするには:
Sudo apt-get dselect-upgrade
これを行う別の方法は、最初のニーズに従ってインストールする基本パッケージを決定する「タスク」に基づいて、何がインストールされているかを決定することです。
tasksel --list-tasks
少なくともserver
があります。ただし、それ以上を選択することもできます。インストールしたタスクごとに、インストールされているパッケージのリストを取得できます。次のコマンドを実行すると、インストールで選択したタスクが1行で表示されます(わかりやすくするために分割されています)。
(tasksel --task-packages server ; \
tasksel --task-packages openssh-server ; \
tasksel --task-packages lamp-server) | sort | uniq
上記に対する一般的なアプローチは次のとおりです。
(for a in $( tasksel --list-tasks | grep "^i" | awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | sort | uniq
apt-cache depends --installed -i --recurse <packagename> | grep -v "^ "
タスクで定義されたすべてのパッケージで使用される依存関係のリストを取得します。これは、次のように1行で実行できます。
apt-cache depends --installed -i --recurse \
$(for a in $( tasksel --list-tasks | \
grep "^i" | \
awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | grep -v "^ " | sort | uniq
以下は、システムにインストールされているすべてのパッケージの一覧です(依存関係は含まれません)。
dpkg --get-selections | grep "[[:space:]]install" | awk '{print $1}'
次に、comm
コマンドを使用して、2番目のリストにあるものだけを見つけます(つまり、両方のファイルと最初のファイルだけにあるものは無視します)。
comm -13 <(apt-cache depends --installed -i --recurse \
$(for a in $( tasksel --list-tasks | \
grep "^i" | \
awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | grep -v "^ " | sort ) \
<( dpkg --get-selections | grep "[[:space:]]install" | \
awk '{print $1}' | sort)