Я использую и обновляю Ubuntu начиная с версии 9. Конечно, у меня сейчас 13.04, и после установки чистой 13.04 на другой компьютер я заметил довольно много различий (plymouth, lightdm, некоторые программы ведут себя по-разному , так далее.). Я сделал довольно много настроек за этот период, так что, вероятно, из-за этого.
Так что мне интересно, есть ли способ увидеть, что отличается между моей и чистой версией. Не полная разница в списке файлов, но, возможно, различия программного пакета (синаптические?) Или что-то, что будет легче читать и сравнивать. Есть ли способ?
Вы могли сравнить список установленного пакета с ".manifest" файлом Вашего распределения,
Например, декларация 13.04/i386 может быть найдена здесь:
http://mirrors.mit.edu/ubuntu-releases/13.04/ubuntu-13.04-desktop-i386.manifest
Получить Ваши установленные пакеты:
#aptitude search ~i \!~M
Относительно настройки Вы, возможно, сделали существует инструмент, который может помогать Вам сравнить измененные конфигурационные файлы с информацией о контрольной сумме пакета: debsums
#debsums -ce
(-e для проверки только конфигурационных файлов,-c только измененные файлы)
Редактирование:
пакеты, установленные в течение года, зарегистрированы /var/log/apt
. Более старые журналы истории удалены logrotate. Я сделал тот сценарий для получения, установленный пакет (заботьтесь для не изменения awk шаблонов при копировании).
# cd /var/opt/log
#(zcat $(ls -rt history*gz); cat history.log ) | awk '
/^Commandline: (apt-get install|synaptic|aptitude)/{
cmdl=$0
getline
if(/^Install|^Remove/) {
print cmdl
print
}
}' | less
По какой-то причине шаблон «! ~ M» отозвал шаблон «~ i», поэтому я получил все пакеты (включая никогда не установленные).
Если вы выполните
# aptitude search ~ i
, все будет работать.
Следующий скрипт можно использовать для сравнения списка установленных пакетов с файлом «.manifest» для распространения. Я разработал его с помощью «ubuntu-16.04.1-desktop-amd64.manifest» для экземпляра Ubuntu 16.04.1 LTS, в который было добавлено и удалено несколько пакетов.
#!/bin/bash
# The first parameter to this script is the manifest file name.
# Take the first column of the manifest. This is the name of the
# package without version information.
cut --fields=1 $1 | \
sort > \
manifestpkglist.tmp
# Get the list of packages installed on this sysem. Packages with
# deinstalled status are ignored. Only the first column of the output
# having the package names is considered.
dpkg --get-selections | \
grep --invert-match deinstall | \
cut --fields=1 | \
sort > \
installedpkglist.tmp
# Report the differences.
diff --side-by-side \
--suppress-common-lines \
manifestpkglist.tmp \
installedpkglist.tmp
# Remove the intermediate files.
rm --force \
manifestpkglist.tmp \
installedpkglist.tmp
Сценарий принимает файл манифеста в качестве входных данных. Чтобы запустить его, сделайте сценарий исполняемым $ chmod u+x manifest-diff.sh
и выполните, передав в качестве первого параметра имя файла манифеста: $ ./manifest-diff.sh ubuntu-16.04.1-desktop-amd64.manifest
Ограничение этого сценария состоит в том, что он не делает различий между пакетами, которые были явно установлены и те, которые были добавлены для выполнения зависимостей. Предположительно, такая информация доступна в системе, так как она должна быть необходима для функции автоматического удаления менеджера пакетов. Лучший сценарий будет включать эту информацию.