手動で実行したapt-get install
コマンドの履歴を表示するにはどうすればよいですか?
利用可能なすべての方法は、Ubuntuのインストールの開始からインストールされたすべてを表示するように思えます。
システムのインストールプロセスが完了してからapt-get install
の履歴を表示するにはどうすればよいですか?
ターミナルで次のコマンドを入力して、すべてのインストールログを表示します。
grep " install " /var/log/dpkg.log
@Arronicalの答えを単純化するために、最近学んだ素敵なトリックは、zcat -qf
を使用して、txtとtxtの両方のgzip圧縮ファイルをcatできることです。
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
になる
zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
Man zcatから:
-q --quiet
Suppress all warnings.
-f --force
Force compression or decompression even if the file has multiple links or the corre‐
sponding file already exists, or if the compressed data is read from or written to a
terminal. If the input data is not in a format recognized by gzip, and if the option
--stdout is also given, copy the input data without change to the standard output: let
zcat behave as cat. If -f is not given, and when not running in the background, gzip
prompts to verify whether an existing file should be overwritten.
現在インストールされているもののみを印刷するスクリプトを次に示します。 トップレベルのパッケージここで、「トップレベルパッケージ」は、他のatpパッケージが依存しないatpパッケージとして定義されます。そのようなトップレベルのプログラムがatpまたはsynapticなどのパッケージマネージャーによってインストールされた場合、それらはユーザーが手動で選択しました。
#!/bin/sh
NumDaysAgo=18
find /var/lib/dpkg/info -name "*.list" -mtime -$NumDaysAgo \
-exec stat -c $'%y\t%n' {} \; | \
sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list,,' | \
sort -r | \
while read Date Time Xxx Pkg
do
lncnt=$(apt-cache --installed rdepends $Pkg | wc -l)
if [ $lncnt -eq "2" ]
then echo "$Date $Time $Pkg"
fi
done
echo "JOB COMPLETED: $BASH_SOURCE"
パッケージは、ユーザーが新しい情報をより早く望んでいる可能性が高いという仮定の下で、プログラムが遅いために、逆の順序で印刷されます。
プログラムフロー:
/var/lib/dpkg/info/
の下のファイル名を読み取ることにより、インストールされているすべてのパッケージをリストに収集します。ファイルmod時間はインストール時間です。$Pkg
ごとに、apt-cache rdepends $Pkg
の呼び出しは$Pkg
の逆依存関係を要求します。依存関係がない場合は、最上位パッケージであり、パッケージ情報が出力されます:date time packagename注:
apt-cache rdepends $Pkg
の出力形式に依存します。これは、人間の目のためのものであり、aptの将来のバージョンで変更される可能性があります。dpgk
履歴ログファイルは、特定のボリュームに達した後にローテーションされるため、信頼できません。apt-chache
のマニュアルページapt-cache rdepends ...
の呼び出しは、各呼び出しがすべての依存関係を反復処理することで計算されるため、おそらく非常に遅いです。したがって、上記のスクリプトは最新のインストールから開始され、ユーザーに可能な限り即時の満足を提供します。--installed
の後のapt-cache
フラグは、dpkgでインストールされたパッケージもapt-installされていることを確認します。ユーザーまたは別のインストールソフトウェアがaptをバイパスし、dpkgを直接使用した場合、可能です。このケースはテストされていませんが、顕著な出力が標準出力またはエラー出力のいずれかに出力されると思います/home
ディレクトリから復元されたLinuxをセットアップするための基礎となる場合は、この出力が適しています。apt-get install
コマンドの履歴が必要な場合は、次のコマンドを使用します。
grep "apt-get install" .bash_history
出力:
ravan@ravan:~$ grep "apt-get install" .bash_history
Sudo apt-get install --no-install-recommends ubuntu-mate-core ubuntu-mate-desktop
Sudo apt-get install xfce4
Sudo apt-get install xfce4.12
Sudo apt-get install pgadmin
Sudo apt-get install touchegg
Sudo apt-get install aptitude
Sudo apt-get install aptitude
Sudo gedit .bash_history | grep "apt-get install"
Sudo apt-get installvim
grep "apt-get install" .bash_history
cat .bash_history | grep "apt-get install"
その他の情報については、 追加情報 を参照してください。
/var/log/apt/
およびhistory.log
ファイルとhistory.log.X.gz
およびterm.log
ファイルのterm.log.X.gz
には、より詳細なインストール情報もあります。
apt-get
に含まれるコマンドのみの履歴が必要な場合は、
history | grep apt-get
以下を実行して、インストールしたすべてのものを表示したい場合:
Sudo apt-get install [package]
また、bashの履歴を台無しにしたり、別のユーザー(またはすべてのユーザー)のこの種類のインストールの履歴を表示したくない場合は、次のコマンドを実行するだけです。
history | grep "apt-get install"
そして、それはあなたにほとんど関連する結果を得るはずです。
インストール中にvirtualminスクリプトが行うように、いくつかの引数はインストールの前に設定できることに注意してください:apt-get -y install packagename。
したがって、すべてのインストールコマンドをキャプチャする場合は、正規表現クエリを変更する必要があります。
zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get.*install (?!.*--reinstall)\K.*'
インストール、削除、再インストールなどを確認するため。apt-getインストールのjourneyに関する詳細情報。
答えはエイリアスに変更できます:
alias apted='zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | fgrep Commandline: | cut -d " " -f 2- | grep -P "^|install"'