Ubuntu, как настроить новую машину, как существующую
У меня есть одна машина с нужными мне приложениями, и я бы хотел установить ее на новую коробку Ubuntu.
Есть ли скрипт, который будет перечислять все установленные приложения, чтобы я мог различать между полями и добавлять недостающие элементы?
Заранее спасибо Крис
9 ответов
Так же как и уловки dpkg, упомянутые pjz, вы также можете взглянуть на etckeeper ( учебное пособие) - приложение, которое помещает ваш /etc/* под контроль версий, упрощая поиск изменений и их репликацию на другие. сервера.
Кроме того, для более короткого списка, чем тот, который создается методом pjz, вы можете использовать
$ deborphan -a --no-show-section > /tmp/mypackagelist
Это даст вам список пакетов, которые установят все остальные пакеты, которые вам нужны как зависимости. Может быть полезно, если вы действительно хотите просмотреть список. (dpkg --get-selections создаст более длинный список). Кроме того, список достаточно короткий, чтобы вы могли добавлять новые строки и комментировать записи с помощью "#". Тогда при установке дополнительных пакетов вы можете сделать
$ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y
Таким образом, если есть несколько пакетов, которые вы хотите установить только на некоторых компьютерах, вам не нужно удалять их из списка пакетов.
dpkg --get-selections >/tmp/mypackagelist
должен сделать свое дело. Затем, убедившись, что ваш /etc/apt/sources.list на новой машине имеет тот же набор записей, что и на старой, скопируйте mypackagelist на новую машину и выполните:
cat mypackagelist | xargs apt-get -y install
и тебе должно быть хорошо идти.
Обратите внимание, что строка dpkg --get-selections также полезна для размещения в вашем / etc / dir в некоторых случаях - это означает, что вам не нужно беспокоиться о резервном копировании / bin / и / usr / bin / и тому подобное, потому что вы знаете какие пакеты в системе.
Ubuntu Forums имеет хороший ответ
- На старой машине: $ dpkg --get-selection> установленное программное обеспечение
- Это получает ваш список установленных приложений
- На новой машине: $ dpkg --set-selections
- Это устанавливает новый компьютер для установки пакетов, которые в данный момент не установлены на новом компьютере.
- Может быть интересно посмотреть, есть ли на новой машине некоторые пакеты, не установленные на старой машине, поэтому вы можете найти команду dpkg --get-selections> на новой машине, а затем использовать diff для сравнения выходных файлов обоих.
- Наконец, на новом компьютере: $ dselect и пакеты будут установлены.
Некоторые дополнительные ссылки из обсуждения на форумах:
Лучшими командами dpkg могут быть [оригинальная машина]
dpkg --get-selections | grep -v deinstall > packages_list
затем при установке [новая машина; после передачи пакетов
sudo dpkg --set-selections < packages_list
sudo apt-get -u dselect-upgrade
Существует инструмент под названием ReMasterSys, который может сделать это за вас. см. http://geekconnection.org/remastersys/
Я надеюсь, что это будет полезно.
Использование FSArchiver для копирования машин вполне приемлемо. В противном случае, вот полезные пары команд, первую половину которых вы также можете добавить в свой резервный cron:
debconf-get-selections
debconf-set-selections
~
aptitude-create-state-bundle
aptitude-run-state-bundle --unpack
~
dpkg --get-selections
dpkg --clear-selections; dpkg --set-selections
Места, которые вы должны копировать: /etc и / var. Приведенные выше команды управляют несколькими файлами в / var напрямую, а некоторые - в /etc косвенно через debconf. Вы получите тот же эффект, просто скопировав эти поддеревья и запустив aptitude.
Если вы не являетесь поклонником CLI (хотя это действительно так и должно быть), вы можете использовать менеджер пакетов Synaptic, чтобы сохранить образ установленных пакетов, и использовать этот файл (снова через Synaptic) для загрузки нового компьютера. Под опцией файла / сохранения маркировки есть флажок, который называется "сохранить полное состояние".
Я думаю, что Docker был бы способ сделать это сейчас - определить требования в Dockerfile - вы можете запустить его на любом хосте Docker.