Как перенести установленные пакеты и настройки из одного дистрибутива в другой?

15

В течение нескольких месяцев я изучал изучение системы Linux через VirtualBox и решил, что хочу сделать ее своей основной ОС и установить ее на свой жесткий диск. У меня есть несколько файлов, пакетов и настроек (таких как изменения в .bashrc), которые я хотел бы перенести, когда я установил их непосредственно на мой жесткий диск, так как я могу это сделать? Кроме того, прямо сейчас я использую Ubuntu, если я решу перейти на аналогичный дистрибутив Debian или RPM, основанный на RHEL, будет ли это тот же процесс? Какие соображения я должен принять во внимание, если таковые имеются?

Тони
источник
Ubuntu - это производная от Debian. Все производные Debian очень похожи, так как все пакеты имеют одинаковое имя, управление пакетами, конфигурацию и т. Д. И все они очень похожи. Однако дистрибутивы Red Hat, такие как Fedora, CentOS и т. Д., Не так схожи в вопросах управления пакетами, хотя в основном это одно и то же программное обеспечение. Вы по большей части сможете копировать настройки / конфигурации и т. Д. Из операционных систем семейства Debian в операционные системы семейства RH.
Фахим Митха

Ответы:

31

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

Между компьютерами, на которых установлена ​​одна и та же версия одного и того же дистрибутива, вы можете выполнить аналогичную установку, воспроизведя список установленных пакетов. В системах apt, таких как Debian и производные (Ubuntu, Mint,…), используйте apt-clone. См. Как мне реплицировать выбранные пакеты из одной системы Debian в другую? (Debian Wheezy) для точных команд. В двух словах, на старой машине:

sudo apt-get install apt-clone
apt-clone clone foo

Скопируйте foo.apt-clone.tar.gzна новую машину и запустите

sudo apt-get install apt-clone
sudo apt-clone restore foo.apt-clone.tar.gz

apt-cloneможет работать между связанными дистрибутивами, например, Debian и Ubuntu. Используйте restore-new-distroвместо restoreэтого. Если это не помогло, используйте ручной метод с dpkg --get-selectionsи apt-markи возитесь со списком пакетов, пока apt не будет удовлетворен.

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

Жиль "ТАК - прекрати быть злым"
источник
Преимущество перед вторым ответом ниже заключается в том, что этот метод быстрее, потому что пропускается медленный интернет и может использоваться более быстрый USB 3. Могут быть и другие преимущества ???
WinEunuuchs2Unix
@ WinEunuuchs2Unix Список пакетов составляет всего несколько килобайт. Передача через Интернет занимает меньше времени, чем поиск USB-ключа, не говоря уже о его монтировании, выборе копируемых файлов и так далее.
Жиль "ТАК - перестань быть злым"
@ Жиль глупый я. Я думал, что foo.apt-clone.tar.gzбыл сжатый tar-шар всех установленных двоичных файлов. Не понял, что это был просто список установленных пакетов. Включает ли он также номера версий?
WinEunuuchs2Unix
Много ошибок.... version mismatch: libgl1-mesa-dri, libmirprotobuf3, xserver-xorg-legacy, libgbm1, libmirclient9, xserver-common, libxatracker2, gnome-software, libmircommon7, libwayland-client0, mesa-vdpau-drivers, adobe-flash-properties-gtk, libwayland-server0, xserver-xorg-core, conky-all, libgles2-mesa, libmircore1, libosmesa6, x11proto-core-dev, dkms, libgl1-mesa-glx, adobe-flashplugin, libegl1-mesa, gnome-software-common, libglapi-mesa, libwayland-cursor0, ubuntu-software, libwayland-egl1-mesa Note that you can use --with-dpkg-repack to include those packges in the clone file.
WinEunuuchs2Unix
@ WinEunuuchs2Unix Я думаю, что apt-clone включает все состояния dpkg, включая удерживаемые пакеты. Обратите внимание, что если вы хотите клонировать полную установку, это совершенно другой вопрос: смысл apt-clone заключается в том, что у вас больше пропускная способность между машиной 2 и зеркалом пакета, чем между машиной 1 и машиной 2 (или менее дорогая пропускная способность, в что вы не хотите, чтобы машина 1 была слишком занята, пока вы настраиваете машину 2). Apt-clone работает лучше всего, когда устанавливаются все версии пакета на исходном компьютере.
Жиль "ТАК - перестань быть злым"
10

Если вы живете в семье Debian, вы можете очень легко перенести их. Просто перечислите установленные в данный момент пакеты, сохраните их в файл и затем прочитайте этот файл, чтобы переустановить их:

  1. Сохраните установленные пакеты в файл installed:

    dpkg -l | grep ^ii | awk '{print $2}' > installed
    
  2. В вашем только что установленном дистрибутиве на основе Debian установите сохраненные пакеты:

    sudo apt-get install $(cat installed)
    

В качестве альтернативы, вы можете использовать инструмент GUI для этого. У мяты есть очень хороший, названный mintbackup:

скриншот mintbackup

Тогда из новой установки:

еще один скриншот mintbackup

Тердон
источник
Будет dpkg --get-selections | awk '$2 == "install" {print $1}' > instlpkgли эквивалент? А как насчет использования yum install alien на RHEL / Fedora / CentOS?
Сергей Колодяжный
1
Не просто воспроизводите выборки, а воспроизводите список автоматически установленных пакетов, иначе это станет грязным. Там apt-cloneсейчас, который автоматизирует это. См. Unix.stackexchange.com/questions/191662/…
Жиль "
Было бы полезно также скопировать удерживаемые пакеты. т.е. Conky 1.9 удерживается так, что Conky 1.10 не портит вещи. Часть ответа будет в ветке AskUbuntu .
WinEunuuchs2Unix
1
Этот ответ быстрее, чем ответ с наибольшим количеством голосов, и не имеет множества сообщений об ошибках, как apt-cloneуказано выше. 1/3 из этих ошибок размещена в комментарии выше.
WinEunuuchs2Unix
Выглядит отлично, но возможно ли использовать mintbackup в Ubuntu 18.04?
WebComer
1

Настройки обычно хранятся в /etc/. etckeeper может быть полезен . Его основная цель - превратиться /etc/в git-репозиторий, но он также отфильтровывает некоторые части, которые вы не хотите копировать, если я хорошо понимаю. Так что, если вы знакомы git, вам может быть лучше использовать etckeeperдля объединения ваших изменений в новую установку.

Рольф
источник