Я просто добавляю некоторые проблемы с моими виртуальными серверами Debian и добавляю, чтобы переустановить их все с нуля. Однако у меня все еще был доступ к старой версии, и я мог получить список установленных пакетов.
Чтобы облегчить процесс восстановления виртуального сервера в будущем, я хотел бы создать список определенных пакетов для каждого из моих серверов.
Чтобы лучше объяснить, чего я хочу достичь. У меня уже есть автоматизированный процесс создания нового виртуального сервера с некоторыми базовыми пакетами и конфигурациями, которые используются повсеместно. Теперь я хочу сохранить дельту с этим «скелетом», чтобы упростить переустановку конкретного сервера.
Настоящим плюсом будет также сохранение измененных файлов конфигурации из настроек по умолчанию, но я могу жить только со списком пакетов.
Короче говоря, я хочу создать список пакетов, установленных на хосте, но не на другом.
Будет действительно здорово, если список содержит только установленные вручную пакеты, а не список всех зависимостей.
Если у вас есть некоторые инструменты, предназначенные для решения этой конкретной задачи, не стесняйтесь предлагать их, но я хочу сохранить зависимость как можно меньше. Для информации - это не виртуальные серверы, а контейнеры LXC.
источник
Ответы:
На эталонной установке (только один раз):
(Предполагается следующее
bash
)Чтобы получить пакеты, добавленные из эталонной установки (это не показывает, что было удалено):
Еще лучше, избегая копии
baselist.txt
:источник
на старом сервере запустите:
скопируйте вышеуказанный файл на новый сервер и запустите его на новом сервере:
Кроме того, не забудьте добавить все дополнительные репозитории со
/etc/apt/sources.list
старого сервера на новый, а также перед миграцией пакетов, как если бы вы этого не сделали, большинство пакетов останутся неустановленными.источник
cut -f1
Вероятно, будет быстрее, чем awk, и, как прокомментировал ответ Халед, diff не всегда возвращает правильный результат. Решение сcomm
действительно пожалуйста пока что ... Однако мне не хватает версии, которая перечисляет только установленные вручную пакеты.Вы можете использовать следующую команду, чтобы получить полный список пакетов на обоих серверах:
Затем вы можете получить различия, используя:
Вы можете отфильтровать необходимые изменения, используя grep. Кроме того, diff может использоваться для получения изменений в конфигурационных файлах и создания патчей для применения при необходимости. Кстати, diff может сравнивать две папки, а не только два файла.
источник
План разработан именно для ваших нужд. Он выплевывает описание установленных пакетов и конфигурационных файлов, которые были изменены. Он может преобразовать эти описания в сценарии Puppet или Chef, чтобы применить их к чистым коробкам.
источник
Также найден этот полезный пакет, описание которого выглядит следующим образом:
Скрипт Bash, который сравнивает дерево файловой системы пакета Debian с текущим деревом файловой системы, печатая унифицированные различия для файлов, которые отличаются.
https://code.google.com/p/dpkg-diffs/
Просто один файл bash, который вы можете вставить в свой PATH где-нибудь и запустить - кажется, работает для меня, и он не слишком старый.
Надеюсь, это кому-нибудь поможет.
источник