Я использую и обновляю Ubuntu с версии 9. Конечно, у меня теперь 13.04 и после установки чистого 13.04 на другой компьютер, я заметил немало отличий (plymouth, lightdm, некоторое программное обеспечение ведет себя по-разному , и т.д.). Я сделал немало настроек за этот период, поэтому, вероятно, из-за этого.
Так что мне интересно, есть ли способ увидеть, что отличает моя и чистая версия. Не полный список файлов diff, но, возможно, различия в программном пакете (синаптика?) Или что-то, что будет легче читать и сравнивать. Есть ли способ?
Следующий сценарий может использоваться для сравнения списка установленного пакета с файлом .manifest для распространения. Я разработал его с помощью «ubuntu-16.04.1-desktop-amd64.manifest» против экземпляра LTS Ubuntu 16.04.1, имеющего количество добавленных и удаленных пакетов.
#!/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
Ограничение этого скрипта заключается в том, что он не делает различия между пакетами которые были явно установлены, и те, которые были добавлены для выполнения зависимостей. Предположительно, такая информация доступна в системе, поскольку это необходимо для функции autoremove менеджера пакетов. Лучший сценарий будет включать эту информацию.
По какой-то причине шаблон «! ~ M» отозвал шаблон «~ i», поэтому я получил все пакеты (включая никогда не установленные).
, если вы делаете [!d1 ]
# aptitude search ~ i
все работает.