Перенос пакетов из linux
Обновлено: 05.07.2024
Многие устанавливают GNU/Linux систему всего один раза. Или дважды. Затем, при помощи великолепных систем управления пакетами, обновляют дистрибутив по мере появления новых релизов. Пользователи Debian и подобных систем (таких как Ubuntu) вполне свыклись с мыслью, что система устанавливается только раз. Но как быть, если нужно перенести систему на другую машину? Клонировать? Это возможно только если оба компьютера имеют одинаковый набор "железа". А если один имеет процессор Intel Pentium, а другой ≈ AMD64? Тогда придется каким-то образом скопировать набор пакетов, но с поправкой на новую архитектуру.
Тут нам поможет программа dpkg.
Программа dpkg
Программа dpkg является одним из базовых приложений Debian и необходима для управления пакетами. Неважно какую программу управления пакетами вы используете для установки, удаления, обновления и управления послеустановочными процессами, она опирается на dpkg. Так что, применяете ли вы apt, aptitude, synaptic или любой другой менеджер пакетов, dpkg обязательно участвует в работе.Сама по себе программа dpkg умеет многое, но, по правде сказать, пользоваться ей каждый раз довольно утомительно. Вот почему для нее создано столько надстроек. Дело в том, что dpkg не работает с зависимостями, оставляя это дело для apt и остальных. Программа dpkg чисто консольная, так что если вы не привыкли к работе в командной строке, вам придется размять свои пальцы на клавиатуре.
План работы
Прежде всего сделайте резервную копию своей системы. Я не отвечаю, если вы снесете свою систему, или лишитесь ценных данных. |
Коротко предстоящий нам процесс можно разделить на четыре шага:
-
Установить и настроить систему Debian по своему вкусу
Я буду описывать процесс переноса с точки зрения Debian. Не сомневаюсь, что метод будет работать на Дебианоподобных системах, вроде Ubuntu, но у меня нет опыта установки таких систем. Прежде всего имеется ввиду установка минимальной базовой системы и тому подобное.
Шаг 1 ≈ Установка и настройка первой системы Debian
Полагаю, что первый шаг у вас давно уже сделан. Иногда стоит удалить некоторые пакеты, входящие в базовую инсталляцию, но не являющиеся ключевыми. Например, я часто удаляю множество пакетов xserver-xorg-video, которые суть графические драйверы для "железа", которого в моем компьютере просто нет. Это облегчит последующую работу.Шаг 2 ≈ Создание списка установленных пакетов
На этом этапе dpkg вступает в действие. Откройте терминал и получите права root при помощи команды su. Затем введите команду:Теперь список пакетов будет в файле /tmp/package_list. Обратите внимание, что в списке только названия пакетов, безо всяких версий, то есть пользовательская конфигурация не сохранена. Новой системе придется устанавливать версии пакетов, нужные именно ей. Этот файл следует сохранить на флешку, так как он нам понадобиться позднее и на другой машине.
Шаг 3 ≈ Установка базовой системы Debian на новой машине
Я не стану описывать процесс инсталляции Debian, на этот счет есть масса руководств. Наша задача установить минимально возможную систему. На практике это означает не выбирать ни одну из предложенных установщиком задач. На одном из этапов установки Debian вам предлагается список задач, для выполнения которых требуется установить те или иные пакеты. В числе прочих, там будут задачи Desktop Environment, Mail Server, Print Server и так далее. Этот список ≈ одна из замечательных особенностей инсталлятора Debian, позволяющий устанавливать группы пакетов, нужные для вашей системы.
В нашем же конкретном случае, он позволяет нам не выбрать ни одной задачи, не исключая и Standard System. То есть мы не ставим ни одной галочки ни в одном квадратике. В результате будет установлен только "костяк" Debian.
Когда я делаю подобные инсталляции, то стараюсь пользоваться так называемыми "business-card" .iso файлами. Это минималистические (35Mb) iso файлы, которые впоследствии докачивают нужные пакеты из Сети.
Шаг 4 ≈ Установка пакетов при помощи готового списка
Когда вы установили новую систему и перезагрузились, то увидите приглашение командной строки. Залогиньтесь как root и обновитесь:Теперь нужно сообщить системе, какие пакеты мы хотим установить. В дело снова вступает dpkg. Вставьте вашу флешку и примонтируйте ее. У нас ведь минимальная система и никакого автомонтирования. Не стану рассказывать, как монтировать флешку. Когда вы найдете файл packages_list, то запускайте по очереди две команды:
Первая команда осуществляет выборку пакетов из файла packages_list. Вторая команда обновляет систему пакетами, предоставленными dpkg. Процесс может занять изрядно времени, зато по окончании его у вас будет новая система с теми же пакетами, что и в старой системе. А главное, все эти пакеты будут обновлены до новейшей версии, все зависимости будут учтены и установлены.
Предлагаемый метод довольно гибок. Можно получить список пакетов из нестабильной ветви Sid и использовать его при установке новейшей тестовой версии Debian. Хотя я бы не рекомендовал заходить столь далеко.
Переход от тестовой к стабильной версии вряд ли получится, так как часть Testing пакетов может отсутствовать в Stable.
Можно также прописать команду
в планировщике cron, или запустить ее непосредственно перед апгрейдом
и тем обезопасить себя в случае неудачного обновления. Если все ваши пакеты снесет, вы спокойно делаете резервную копию своих данных, и переустанавливаете дистрибутив, уверенные в том, что установите те же пакеты.
Я не стал бы применять этот метод для установки дистрибутива на множество одинаковых машин ≈ для этого удобнее создание специального образа или клонирование.
Но рекомендую и сам применяю этот метод для создания машин-двойников, или для переустановки Debian, скажем после замены жесткого диска, особенно если я хочу иметь прежний набор пакетов, только обновленных до последней версии.
В течение нескольких месяцев я изучал изучение системы Linux через VirtualBox и решил, что хочу сделать ее своей основной ОС и установить ее на свой жесткий диск. У меня есть несколько файлов, пакетов и настроек (таких как изменения в .bashrc), которые я хотел бы перенести, когда я установил их непосредственно на мой жесткий диск, так как я могу это сделать? Кроме того, прямо сейчас я использую Ubuntu, если я решу перейти на аналогичный дистрибутив Debian или RPM, основанный на RHEL, будет ли это тот же процесс? Какие соображения я должен принять во внимание, если таковые имеются?
Ubuntu - это производная от Debian. Все производные Debian очень похожи, так как все пакеты имеют одинаковое имя, управление пакетами, конфигурацию и т. Д. И все они очень похожи. Однако дистрибутивы Red Hat, такие как Fedora, CentOS и т. Д., Не так схожи в вопросах управления пакетами, хотя в основном это одно и то же программное обеспечение. Вы по большей части сможете копировать настройки / конфигурации и т. Д. Из операционных систем семейства Debian в операционные системы семейства RH.Управление пакетами является одним из главных различий между дистрибутивами. Между несвязанными дистрибутивами вы не сможете ничего делать автоматически. Разные дистрибутивы разбивают программное обеспечение на разные наборы пакетов и используют разные имена.
Между компьютерами, на которых установлена одна и та же версия одного и того же дистрибутива, вы можете выполнить аналогичную установку, воспроизведя список установленных пакетов. В системах apt , таких как Debian и производные (Ubuntu, Mint,…), используйте apt-clone . См. Как мне реплицировать выбранные пакеты из одной системы Debian в другую? (Debian Wheezy) для точных команд. В двух словах, на старой машине:
Скопируйте foo.apt-clone.tar.gz на новую машину и запустите
apt-clone может работать между связанными дистрибутивами, например, Debian и Ubuntu. Используйте restore-new-distro вместо restore этого. Если это не помогло, используйте ручной метод с dpkg --get-selections и apt-mark и возитесь со списком пакетов, пока apt не будет удовлетворен.
Для ваших собственных настроек это проще: просто скопируйте точечные файлы из вашего домашнего каталога. Как правило, настраивайте вещи, которые не относятся к оборудованию в вашей учетной записи, а не для всей системы; это позволит легко скопировать их на другую машину.
1. Устанавливаем ПО и попутно создаём бинарные пакеты в каталоге /usr/ports/packages/All/
portupgrade -p port_name
2. Копируем каталог с бинарными пакетами /usr/ports/packages/All/ на флэшку или делаем доступным в сети по NFS.
3. Устанавливаем новые пакеты на целевой машине:
pkg_add -r /mnt/packages/All/port_name-version.tbz
4. Обновляем уже установленные пакеты на новые версии (локальное дерево портов должно быть синхронным с той машиной, откуда скопировали пакеты):
env PKG_PATH=/mnt/packages/All/ portupgrade -aiPP
|