Перенос пакетов из 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

, Crazy Alex ( ?? ), 18:40, 07/12/2009 [^] [^^] [^^^] [ответить] + / –
Угу. Только в оригинальном посте речь о другой ситуации - в аналогии с FreeBSD это будет "бинарные пакеты не создавали или стерли". Во фре в этом случае вообще получится перенести ТОЧНО то, что есть на первой машине, на вторую? В дебиане это грантируется как раз бинарностью пакетов. А на фре придется второй раз собирать - и не факт, что получишь тот же самый результат.
, Гость ( ? ), 17:12, 08/12/2009 [^] [^^] [^^^] [ответить] + / –
> Для примера, как это делается на FreeBSD:

E: Архивный каталог /home/xen/<имя_пакета>/partial отсутствует.

E: Не удалось открыть файл /var/lib/apt/<пакет> status - open (2: No such file or directory)

E: Списки пакетов или status-файл не могут быть открыты или прочитаны.

Я же русским я зыком написал
> создаем директорию, где будет наш кэш и директорию partial в ней

Эта надпись говорит о том, что apt не нашел указанный тобой файл.

Ну и четвертая ошибка следует из третей.

, Vitto ( ? ), 15:11, 09/12/2009 [^] [^^] [^^^] [ответить] + / –
Если б я сам это знал, то поставил бы Ubuntu на домашней машине на 3 года раньше.

А началось все как раз с желания написать софтину, которая вытягивает все необходимые пакеты для установки софта на машину без инета, а оказалось, что все уже написано до меня.

apt-clone описание

Установка одного и того же набора пакетов на нескольких системах Ubuntu требует много времени и скучной работы.

Вы не хотите тратить свое время на то, чтобы устанавливать одни и те же пакеты снова и снова на нескольких системах.

Когда дело доходит до установки пакетов на аналогичной архитектуре систем Ubuntu, существует множество методов, облегчающих эту задачу.

Вы можете просто перенести свои старые приложения, настройки и данные системы Ubuntu на недавно установленную систему с помощью нескольких щелчков мыши с помощью Aptik.

Или вы можете взять полный список установленных пакетов с помощью диспетчера пакетов (например, APT) и установить их позже в недавно установленной системе.

Сегодня я узнал, что для выполнения этой работы есть еще одна специальная утилита.

Поприветствуйте apt-clone, простой инструмент, который позволяет вам создать список установленных пакетов для систем Debian / Ubuntu, которые можно восстановить в недавно установленных системах или контейнерах или в каталог.

Apt-clone поможет вам в ситуациях, когда вы хотите:

  • Установить совместимые приложения для нескольких систем, работающих с аналогичными ОС Ubuntu (и производными).
  • Часто устанавливать один и тот же набор пакетов на нескольких системах.
  • Резервное копирование всего списка установленных приложений и восстановление их по требованию, где бы и когда это было необходимо.

В этом кратком руководстве мы обсудим, как установить и использовать Apt-clone в системах на базе Debian.

Я тестировал эту утилиту на Ubuntu 18.04 LTS, однако она должна работать на всех системах на базе Debian и Ubuntu.

Резервное копирование установленных пакетов и их восстановление их в недавно установленной системе Ubuntu

Apt-clone доступен в репозиториях по умолчанию.

Чтобы установить его, просто введите в терминале следующую команду:

После установки просто создайте список установленных пакетов и сохраните их в любом месте по вашему выбору.

Вышеупомянутая команда сохранила все установленные пакеты в моей системе Ubuntu в файле с именем apt-clone-state-ubuntuserver.tar.gz в каталоге

Чтобы просмотреть сведения о файле резервной копии, запустите:

Как вы можете видеть, у меня всего 516 пакетов на моем сервере Ubuntu.

Теперь скопируйте этот файл на свой USB-накопитель или внешний диск и перейдите в любую другую систему, на которой необходимо установить один и тот же набор пакетов.

Или вы также можете перенести файл резервной копии в систему в сети и установить пакеты с помощью следующей команды:

Помните, что эта команда перезапишет ваш существующий файл /etc/apt/sources.list и будет устанавливать / удалять пакеты.

Кроме того, просто убедитесь, что система назначения находится на одной и той же ОС.

Например, если исходная система работает с 18.04 LTS 64bit, система назначения также должна иметь то же самое окружение.

В этом случае указанная выше команда будет восстанавливать пакеты в папке с именем

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

Итак приступим
1) Создаём файл со списком установленных файлов из Manjaro репозиториев


2) Создаём файл со списком установленных в системе пакетов из AUR


3) На новой машине, или на той на которой мы желаем установить свой набор приложений делаем сначала обновление системы:


4) После обновления устанавливаем пакеты из файла pkglist-repo.txt, который мы создали в 1-м пункте, следующими командами:

Команда написанная ниже была в оригинале статьи, но у меня она почему то не работала

5) Теперь устанавливаем пакеты из файла pkglist-aur.txt, который мы создали во 2-м пункте, следующей командой:

Если пакетов из AUR много, то будьте готовы каждый раз вводить пароль, иначе процесс установки остановится и будет долго и упорно ждать ввода пароля.

Прошу обратить внимание на то, что при установке пакетов из AUR, часть из них может быть уже не поддерживаемыми мейнтейнерами, устаревшими или просто отсутствовать и потому команда прекратится неудачей, так что будьте внимательны. Если обнаружите это, то просто удалите наименование этих пакетов из списка pkglist-aur.txt.

Так же прошу обратить внимание, что если компиляция одного пакета из AUR прекратится ошибкой, то весь процесс будет остановлен и вы будете вынуждены повторять его, опять же удалив не устанавливаемое приложение.

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

Надеюсь, что это станет полезно еще кому то помимо меня, всем добра и успехов в Manjaro!

Читайте также: