私はサーバーをあるUbuntuボックスから別のものに移動するつもりです。私は古い箱を新しい箱にクローンしていません。新しいシステムを作成しており、必要に応じてデータを移動します。古いボックスにあるすべてのソフトウェアを新しいボックスにインストールしたい。
時間の経過とともに与えたすべての「Sudo apt-get install」コマンドの履歴を見つける簡単な方法はありますか?つまり、dpkg -lは、インストールされているすべてのパッケージを表示しますが、それらをインストールしたトップレベルのパッケージは表示しません。 dpkgがインストールパッケージを提供する方法がある場合、そこにユニークなパッケージを見つけることができます。それ以外の場合は、「これらの24個のパッケージをインストールした」と別の言い方をしたいと思います。
上記のコメントで述べたように、apt
の履歴は/var/log/apt/history.log
にあります。つまり、dpkg
やgdebi
などのGUIを使用して手動でインストールされたパッケージは表示されません。 dpkg
を通過したすべてのパッケージを確認するには、/var/log/dpkg.log
を参照してください。
http://www.debianadmin.com/clone-your-ubuntu-installation.html
および/var/adm/apt/history.log
apt-mark
を使用して、インストールが明示的に要求されているパッケージを一覧表示できます。
apt-mark showmanual
Debianの古いリリースを実行している場合のために、ここに手動の方法があります。
次のコマンドは、手動または自動にかかわらず、インストールが要求されたパッケージのリストを提供します。パッケージのインストール(削除)の途中でない限り、これはインストール済みパッケージのリストです。
dpkg --get-selections | sed -n 's/\t\+install$//p'
次のコマンドは、自動的にインストールされるパッケージのスーパーセットを提供します。
</var/lib/apt/extended_states awk -v RS= '/\nAuto-Installed: *1/{print$2}'
すべてをまとめると、次のコマンドは手動でインストールされたパッケージを一覧表示します。
comm -23 <(dpkg --get-selections | sed -n 's/\t\+install$//p') \
<(</var/lib/apt/extended_states \
awk -v RS= '/\nAuto-Installed: *1/{print$2}' |sort)
grep -i "Commandline" /var/log/apt/history.log
インストールしたすべてのパッケージを表示:Sudo apt-get install xxxxx
Tac/headの組み合わせの代わりに、tailを使用することをお勧めします(最後の25行):
tail -n 25 /var/log/apt/history.log
他の回答は役に立ちましたが、出力が多すぎました。出力を削減するために、apt-mark showmanual
この答え のように、最初にインストールされたパッケージをフィルターで除外します(最初にインストールされたパッケージのリストを取得する方法については この答え を参照してください。ubuntu18.04を使用しています。 2したがって、以下のリンク)。
BASE_PACKAGES_MANIFEST=http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-AMD64.manifest
REMOVE_VERSIONS_REGEX='[0-9][.-][0-9][.-][0-9]|[0-9][.-][0-9]|[0-9]'
paste <( apt-mark showmanual ) <( apt-mark showmanual | sed -r "s/$REMOVE_VERSIONS_REGEX//g" ) |
grep -vf <( curl $BASE_PACKAGES_MANIFEST | cut -f1 | sed -r "s/$REMOVE_VERSIONS_REGEX|:AMD//g" ) |
cut -f1 |
sort |
uniq
このスクリプトは、バージョンに依存しない比較を行うことにより、元のマニフェストにあったパッケージを除外し、アップグレードされたパッケージがリストに表示されないようにします。最終的には約60個のパッケージのリストができました。
私が好むもう1つの方法は すべてのaptログを検索するこの回答 です。
私はこの方法でtar.gz-ed履歴ファイルも手探りしています:
zgrep -E "Commandline: apt(|-get) install" /var/log/apt/history.log*
タイムスタンプも必要な場合は、パラメータ-B1
を追加してください。