Как просмотреть историю установки apt-get?
Как я могу просмотреть историю apt-get install
Команды, которые я выполнил вручную?
Мне кажется, что все доступные методы показывают все, что было установлено с самого начала установки Ubuntu.
Как я могу просмотреть историю apt-get install
со времени, когда мой процесс установки системы завершился?
8 ответов
Я думаю, что ответ, данный здесь 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.*'
Просто введите следующую команду в своем терминале, чтобы просмотреть все журналы установки.
grep " install " /var/log/dpkg.log
Чтобы упростить @Arronical ответ, я выучил изящный трюк: zcat -qf
кошка и TXT и TXT сжатых файлов.
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.*'
От человека 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/
, Время мода файла - время установки. - Этот список отсортирован в обратном порядке.
- Для каждого установленного пакета
$Pkg
вызовapt-cache rdepends $Pkg
запрашивает обратные зависимости$Pkg
, Если нет никаких зависимостей, то это пакет верхнего уровня, и информация о пакете печатается: дата и время имя_пакета
Заметки:
- Сценарий зависит от формата вывода
apt-cache rdepends $Pkg
который был предназначен для человеческих глаз и может измениться в будущих версиях apt. - Код для части, собирающей имена файлов в /var/lib/dpkg/info/, взят из этого поста unix.stackexchange. Как указывал этот плакат "Микель",
dpgk
файлы журнала истории не надежны, потому что они будут повернуты после достижения определенного объема. - Справочная страница для
apt-chache
- Вызов
apt-cache rdepends ...
очень медленно, предположительно, потому что каждый вызов вычисляется путем итерации всех зависимостей. Следовательно, приведенный выше скрипт начинается с самых новых установок, чтобы предложить пользователю как можно больше мгновенного вознаграждения. --installed
флаг послеapt-cache
проверяет, что установленные dpkg пакеты также установлены apt. Если бы пользователь или другая инсталляционная программа обошли apt и использовали dpkg напрямую, это было бы возможно. ЭТОТ СЛУЧАЙ НЕ БЫЛ ПРОВЕРЕН, но я думаю, что что-то заметное будет напечатано в стандартном выводе или выводе ошибки- Вывод не включает выбранные вручную пакеты, которые впоследствии стали зависимыми от более высокого пакета. Вывод также может включать пакеты, которые были установлены через apt другим сторонним программным обеспечением и, следовательно, не установлены вручную. Однако, если целью вывода является основа для настройки восстановленного Linux из резервной копии
/home
каталог, в который входит указанное стороннее программное обеспечение, тогда этот вывод будет подходящим. - Некоторые из имен пакетов включают номера версий, а некоторые нет. Упоминается только для того, чтобы привлечь внимание к факту.
Если вы хотите историю 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.
Ответ может быть изменен на псевдоним:
alias apted='zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | fgrep Commandline: | cut -d " " -f 2- | grep -P "^|install"'