web-dev-qa-db-ja.com

ソフトウェアセンターはその履歴をどこに保存しますか?

Ubuntuソフトウェアセンターは、日付に従ってインストール/更新/削除されたパッケージの詳細な履歴を表示できます。

  1. この情報はどこから取得しますか? (/var/log/dpkg.logは12か月間のみ維持されます。パッケージが最初にインストールされた日付を取得するためのapt- *またはdpkgコマンドは知りません。
  2. どうすればコピー別のプログラムで処理されるテーブル/テキストの形式のこのデータ?
2
staticd

特定の日時にシステムにどのような変更が加えられたかを正確に知りたくない限り、この情報を発見するために行った手順は文書化する価値があると感じました。

_strace -e trace=open -f -o usc software-center_を実行して、ソフトウェアセンターで開かれたすべてのファイルのリストを取得しました。次に、このようにフィルタリングしました。

_cat usc| grep -oP '(?<=open\(").*(?=",)' |egrep -v '\.(so\.([0-9]|cache)|so|pyc|mo|py|png|svg)$'|egrep -v '/usr/lib/(python2.7|x86|girepo)'| egrep -v '/usr/share/(icons|themes)' |egrep -v '/etc/fonts'|egrep -v '(screenshots|reviews)\.ubuntu\.com' |egrep -v fontconfig |sort -u
_

すべてのファイルにデータファイルが含まれていないことを排除するため。

これらの中から、おもしろそうな見た目のファイルを見つけました:_~/.cache/software-center/apthistory.p_開いたとき、python pickleファイルのように見えました。ファイルをロードしようとすると、_softwarecenter.db.history_impl.apthistory_がインポートされなかったというエラーが発生しました。次のコマンドを実行して、開いたパスに「softwarecenter」があるpythonファイルを探しました

_$cat usc| grep -oP '(?<=open\(").*(?=",)' |grep softwarecenter
_

_/usr/share/software-center/softwarecenter/db/history_impl/apthistory.so_を含む多くのファイル名を取得しました。ファイルの読み取りと処理を行う次のスクリプトを作成しました。

_#!/usr/bin/python
import sys
import os
import pickle

sys.path.append('/usr/share/software-center')
import softwarecenter.db.history_impl.apthistory

with open(os.path.expanduser('~/.cache/software-center/apthistory.p')) as IFile:
    hist=pickle.load(IFile)

print type(hist[0])
print "earliest apt transaction started on:",hist[-1].start_date
print "installed:"
for PackageStr in hist[-1].install:
    print PackageStr
print "upgraded:"
for PackageStr in hist[-1].upgrade:
    print PackageStr
_

Hist [0]がhelp(softwarecenter.db.history_impl.apthistory.AptTransaction)のインスタンスであるクラスを検索することにより、必要な属性を見つけました。これにより、親クラスhelp( softwarecenter.db.history.Transaction)に導かれ、そこから使用方法を見つけました。

ところで、_Sudo apt-get install_ edのものもここに表示されます。

1
staticd

インストール/更新/削除されたパッケージのすべての履歴は/var/log/aptにあります:history.logファイルの新しい履歴、アーカイブの古い履歴、history.log.x.gzファイルにあります。 Ubuntu Software Centerの表形式でこのデータを取得するには、以下の画像を参照してください。

USC - history

2
Radu Rădeanu