Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Приемы работы в Ubuntu.
Глава 8: Администрирование

Оригинал: "Ubuntu Hacks: Chapter 8 - Administration"
Авторы: Кайл Ранкин, Джонатан Оксер, Билл Чайлдерс (Kyle Rankin, Jonathan Oxer, Bill Childers)
Дата публикации: June 2006
Перевод: Н.Ромоданов
Дата перевода: октябрь 2010 г.

Совет # 80: Клонирование инсталляции

Экспортируем список пакетов, установленных в одну из систем Ubuntu, и импортируем их на другую систему для создания дубликата системы.

На протяжении многих лет мы устанавливали много различных дистрибутивов на базе Debian и обнаружили, что очень удобно иметь полный список установленных пакетов. Если вы хотите создать систему, похожую на другую уже настроенную систему, то, возможно, будет трудно вспомнить каждый пакет, который был установлен. В этом совете мы расскажем, как экспортировать текущий список ваших пакетов и импортировать его в новую систему.

Подсказка

Этот метод будет работать лучше, если вы выполняете экспорт и импорт для одинаковых дистрибутивов и, в особенности, для одинаковых релизов, например, экспортируете из Ubuntu Dapper и в Ubuntu Dapper. Поскольку в различных релизах и, в особенности, разных дистрибутивах, есть различия в версиях пакетов и зависимостях, у вас будет гораздо больше головной боли с конфликтующими пакетами, если вы попытаетесь экспортировать, скажем, из Ubuntu Breezy в Ubuntu Dapper или, что еще хуже, наоборот.

Экспортируем список установленных пакетов

Первым шагом клонирования инсталляции является получение полного списка пакетов, установленных в настроенной системе. Чтобы это сделать, вы, в сущности, должны с помощью dpkg выдать дамп списка всех пакетов, отфильтровать пакеты, которые в настоящее время не установлены, а затем перенаправить результат в файл:

$ sudo dpkg --get-selections | grep '[[:space:]]install$' | \\
                 awk '{print $1}' > package_list

Затем по сети, через USB флешку или любым другим способом, который вы предпочитаете, скопируйте этот текстовый файл в целевую систему. Вы, возможно, также захотите скопировать из исходной системы файл /etc/apt/sources.list, так как в новой системе может отсутствовать доступ к некоторым репозитария (если доступ к репозитарию отсутствует, целевая система не сможет найти некоторые пакеты, указанные в списке).

Подготовка целевой системы

Теперь нужно подготовить целевую систему. Если на обеих системах работает один и тот же релиз Ubuntu, то это сделать будет просто с помощью простого копирования из исходной системы файла /etc/apt/sources.list в целевую систему на место уже существующего файла. В противном случае, если системы являются разными релизами, вам нужно будет сравнить файл sources.list исходной системы с файлом /etc/apt/sources.list целевой системы и посмотреть, нужно ли добавить какие-либо дополнительные репозитарии от сторонних разработчиков или подкатегории уже имеющихся реползитариев. Дополнительную информацию о репозитариях и о том, как редактировать файл sources.list, смотрите в разделе "Изменение списка репозитариев пакетов" [Совет # 60].

После того, как файл sources.list будет откорректирован, обновите список пакетов, чтобы быть уверенным, что вы получили самую последнюю версию пакета:

$ sudo apt-get update

Импорт списка пакетов

Чтобы импортировать список пакетов, перенаправьте его с помощью конвейера на утилиту xargs, которая будет выбирать из него отдельные пакеты и подавать в команду apt-get для установки:

$ cat package_list | xargs sudo apt-get install

Если вы переходите на другой релиз Ubuntu, то может потребоваться несколько попыток из-за того, что вы, вероятно, будете получать сообщения об ошибках, связанные с тем, что некоторые пакеты уже не существуют. Исправьте ошибки — отредактируйте список пакетов и удалите пакеты из списка, сохраните изменения, а затем перезапустите команду. Вам, вероятно, потребуется это сделать несколько раз, но, в конечном итоге, вы получите исправленный список пакетов. Если вы воспользуетесь полученным списком и будете по одному проверять пакеты на наличие возможных обновлений или замен для пакетов, которые больше не существуют, и устанавливать их по одному, то эта работа окажется более сложной, но она будет выполнена более тщательно.

После того, как apt-get завершит свою работу, все будет сделано. Все файлы из списка пакетов будут импортированы в новую систему. Но имейте в виду, что это не означает, что также будут перенесены все настройки. Чтобы сделать это, вам, вероятно, потребуется скопировать настройки из директория /etc и, возможно, из других директориев, что зависит от того, какие вы используете пакеты.

Совет по поводу совета

Иметь полный список установленных пакетов может оказаться довольно удобно для целей резервного копирования и восстановления. Простой способ автоматического создания полного списка состоит в формировании задания для cron обновлять каждую ночь список установленных пакетов. Чтобы сделать это, создайте следующий сценарий и сохраните его в файле /etc/cron.daily/package_list:

$!/bin/sh

dpkg --get-selections | grep '[[:space:]]install$' | \\
  awk '{print $1}' > /etc/package_list

Теперь сделайте скрипт исполняемым:

$ sudo chmod a+x /etc/cron.daily/package_list

Затем для этого файла /etc/package_list можно создавать резервные копии [Совет # 79] одновременно с резервными копиями других настроек вашей системы.


Назад Оглавление Вперед