web-dev-qa-db-ja.com

apt-getインストールの履歴を表示する方法は?

手動で実行したapt-get installコマンドの履歴を表示するにはどうすればよいですか?

利用可能なすべての方法は、Ubuntuのインストールの開始からインストールされたすべてを表示するように思えます。

システムのインストールプロセスが完了してからapt-get installの履歴を表示するにはどうすればよいですか?

17
TellMeWhy

ここkos で与えられた答えが、これまで見た中で最良の方法だと思います。 Software Centerはaptを使用するため、インストールされているものもすべてリストされます。

コマンドは次のとおりです。

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
20
Arronical

ターミナルで次のコマンドを入力して、すべてのインストールログを表示します。

grep " install " /var/log/dpkg.log
9
Vikas Chaudhary

@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.
3
jjcf89

現在インストールされているもののみを印刷するスクリプトを次に示します。 トップレベルのパッケージここで、「トップレベルパッケージ」は、他の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の将来のバージョンで変更される可能性があります。
  • / var/lib/dpkg/info /の下にファイル名を収集する部分のコードは、 this unix.stackexchange post から来ました。そのポスター 'mikel'が指摘したように、dpgk履歴ログファイルは、特定のボリュームに達した後にローテーションされるため、信頼できません。
  • apt-chache のマニュアルページ
  • apt-cache rdepends ...の呼び出しは、各呼び出しがすべての依存関係を反復処理することで計算されるため、おそらく非常に遅いです。したがって、上記のスクリプトは最新のインストールから開始され、ユーザーに可能な限り即時の満足を提供します。
  • --installedの後のapt-cacheフラグは、dpkgでインストールされたパッケージもapt-installされていることを確認します。ユーザーまたは別のインストールソフトウェアがaptをバイパスし、dpkgを直接使用した場合、可能です。このケースはテストされていませんが、顕著な出力が標準出力またはエラー出力のいずれかに出力されると思います
  • 出力には、後で上位のパッケージに依存するようになった手動で選択されたパッケージは含まれません。出力には、他のサードパーティのインストールソフトウェアによってaptを介してインストールされたパッケージが含まれている可能性があるため、実際には手動でインストールされません。ただし、出力の目的が、サードパーティ製ソフトウェアを含むバックアップ/homeディレクトリから復元されたLinuxをセットアップするための基礎となる場合は、この出力が適しています。
  • パッケージ名にはバージョン番号が含まれているものと含まれていないものがあります。事実に認識をもたらすためだけに言及しました。
2
Craig Hicks

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

1
Ravan

以下を実行して、インストールしたすべてのものを表示したい場合:

Sudo apt-get install [package]

また、bashの履歴を台無しにしたり、別のユーザー(またはすべてのユーザー)のこの種類のインストールの履歴を表示したくない場合は、次のコマンドを実行するだけです。

history | grep "apt-get install"

そして、それはあなたにほとんど関連する結果を得るはずです。

1
user364819

インストール中にvirtualminスクリプトが行うように、いくつかの引数はインストールの前に設定できることに注意してください:apt-get -y install packagename。

したがって、すべてのインストールコマンドをキャプチャする場合は、正規表現クエリを変更する必要があります。

zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get.*install (?!.*--reinstall)\K.*'
0
Yann Papouin

インストール、削除、再インストールなどを確認するため。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"'
0
Mike