Синхронизация установки apt-get между несколькими компьютерами

11

Есть ли способ синхронизировать мои установки (и удаления) между несколькими ПК?

Желательно с dropbox - так как я уже использую это для синхронизации моих файлов.

Я подумал о псевдониме для apt-get installи apt-get removeкоманд , которые сохраняют параметры в файл ( по одному для установки, один для удаление) и другой команду , которая считывает все записи в файл и выполняет соответствующую команду. Это реалистичный подход?

Крис
источник

Ответы:

7

Вы можете использовать puppet для создания файлов конфигурации, определяющих, какие пакеты должны быть установлены, и вы можете использовать Dropbox вместо сервера puppetmaster для синхронизации конфигурации puppet между машинами, а также задание cron для периодического запуска puppet и внесения любых изменений в конфигурацию.

Майк Скотт
источник
Это отличная идея для небольшого количества машин. В более широком окружении у вас обязательно должен быть хозяин кукол. Там, где я работаю, мы управляем марионеткой тысячами машин.
Эд Мане
9

Я не знаю, есть ли лучший способ (возможно, есть), но в зависимости от масштаба, который вам нужен, вы можете использовать функцию поиска aptitude для части механизма. Это позволяет вам искать пакеты, соответствующие шаблону. Итак, aptitude search '~i'дает вам все установленные пакеты

Нам нужно сделать шаг вперед, хотя. Менеджеру пакетов нравится знать, какие пакеты были запрошены вами напрямую, а какие были добавлены из-за других пакетов. Без этой информации могут произойти неприятные вещи. Итак, мы можем расширить этот шаблон поиска, чтобы выбрать пакеты, которые не устанавливаются автоматически:aptitude search '!~M ~i'

Функция поиска подробно описана в справочном руководстве Aptitude .

Теперь у вас есть список пакетов для установки. При необходимости вы можете отформатировать вывод , передав флаг -F этой команде, например -F '% p', чтобы получить список только с именами пакетов.


Например , вы можете запустить это на машине 1 :

aptitude -F "%c %p" --disable-columns search '!~M ~i' | awk -F " " '{ print "apt-get -y install " $2 }' > aptshell.sh

Затем скопируйте вновь созданный aptshell.shфайл на компьютер 2 и используйте эту команду на компьютере 2, чтобы запустить его там:

sudo sh aptshell.sh

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

Дилан Макколл
источник
Было бы здорово включить версии ... Например, машина 1 могла сдерживать версии, а машина 2 должна отражать это
Рондо
например, aptitude -F "% c% p% V" --disable-columns search '! ~ M ~ i' | awk -F "" '{print "apt-get -y install" $ 2 "=" $ 3}'> aptshell.sh
Рондо
2

Это старый вопрос, но так как никто не сказал этого, вы могли бы что-то сделать с dpkg и cron. Настройте работу cron, которая делает что-то умное с помощью команд get-selections и set-selections dpkg.

dpkg --set-selections < ~/Dropbox/selections.dpkg


dpkg --get-selections > ~/Dropbox/selections.dpkg

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

Джон
источник
2

Ubuntu Software Center имеет функцию синхронизации установленных пакетов между несколькими компьютерами. Он использует вашу учетную запись Ubuntu One для сохранения пакетов. Просто выберите File > Sync Between Computers...и войдите в свою учетную запись Ubuntu One.

Синхронизация пакетов с программным центром Ubuntu

В настоящее время он имеет некоторые ограниченные функциональные возможности, например, он поддерживает только пакеты по умолчанию (не ppas), и вы должны вручную выбрать, какие пакеты устанавливать (это может рассматриваться как сложная положительная особенность). Для подробных инструкций смотрите эту статью .

Амир Али Акбари
источник
-2

Вы не сможете использовать Dropbox для синхронизации установок пакетов.

У Synaptic есть способ сохранить список загрузки пакетов, но я не уверен, что он обрабатывает случай «всего, что когда-либо было установлено», а не просто «это пакеты, которые я хочу загрузить на этот раз»

Broam
источник
-1 поскольку ваше предположение неверно, вопрос описывает процесс реализации, который, используя список установки / удаления, он просто спрашивает, существует ли реалистичная реализация, в раскрывающемся списке описания вопроса это просто средство, используемое для обмена списками синхронизации
Жоау Пинту