Где софт-центр хранит свою историю?

Центр программного обеспечения Ubuntu может отображать подробную историю установленных / обновленных / удаленных пакетов в соответствии с датой.

  1. Откуда он получает эту информацию? (/var/log/dpkg.log поддерживается только в течение 12 месяцев; я не знаю ни одной команды apt- * или dpkg, чтобы получить дату, когда пакет был впервые установлен.)
  2. Как я могу скопировать [ 115] эти данные в виде таблицы / текста для обработки другой программой?
2
задан 24 September 2013 в 19:13

2 ответа

Вся история установленных / обновленных / удаленных пакетов находится в /var/log/apt: новая история в файле history.log, старая история в архивах, в файлах history.log.x.gz. См. Изображение ниже, чтобы получить эти данные в виде таблицы в Ubuntu Software Center:

USC - history

0
ответ дан 24 September 2013 в 19:13

Думая, что специфика довольно бесполезна, Если вы не хотите узнать, какие именно изменения были внесены в систему в определенный день и время, я чувствовал, что шаги, которые я прошел, чтобы обнаружить эту информацию, стоили документировать: 1111] Я запустил 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) 

для устранения всех файлов не содержал файлов данных.

Среди них я нашел интересный файл: ~/.cache/software-center/apthistory.p Когда я открыл его, он выглядел как файл с огурцами питона. при попытке загрузить файл я получил ошибку, что softwarecenter.db.history_impl.apthistory не был импортирован. Я запустил следующую команду, чтобы найти файлы python, которые были открыты и в их пути был «softwarecenter»

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

и получил целую кучу имен файлов, включая /usr/share/software-center/softwarecenter/db/history_impl/apthistory.so. Я написал следующий скрипт для чтения и обработки file:

#!/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 ред вещи появляются здесь.

|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 Когда я открыл его, он выглядел как файл с огурцами питона. при попытке загрузить файл я получил ошибку, что softwarecenter.db.history_impl.apthistory не был импортирован. Я запустил следующую команду, чтобы найти файлы python, которые были открыты и в их пути был «softwarecenter»

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

и получил целую кучу имен файлов, включая /usr/share/software-center/softwarecenter/db/history_impl/apthistory.so. Я написал следующий скрипт для чтения и обработки file:

#!/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 ред вещи появляются здесь.

0
ответ дан 24 September 2013 в 19:13

Другие вопросы по тегам:

Похожие вопросы: