Рейтинг:1

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

флаг pk

У меня есть 2 сервера, скажем Сервер1 и Сервер2

Сервер1 давно настроен кем-то, у которого есть несколько пакетов, и наше приложение имеет так много зависимостей от этих пакетов. Поэтому я хочу сохранить тот же набор пакетов на новом сервере. т. е. Сервер2 для бесперебойной работы нашего приложения.

Я использовал команду ниже, чтобы перечислить все пакеты из Сервер1

 dpkg --get-selections > ~/Package.list

Что дает весь список пакетов Like

установка службы учетных записей
быстрая установка
установка adduser
amd64-микрокод установить
...
...

Я делаю копию приведенного выше списка пакетов в Сервер2 и попытался установить эти пакеты с помощью команды

sudo dpkg --set-selections < ~/Package.list

но он говорит как

dpkg: предупреждение: пакет не в статусе и не доступен в базе данных в строке 2: acpid
dpkg: предупреждение: пакет не в статусе и не доступен в базе данных в строке 4: amd64-microcode
dpkg: предупреждение: пакет не в статусе и не доступен в базе данных в строке 12: apt-transport-https
dpkg: предупреждение: пакет не в статусе и не доступен в базе данных в строке 14: apt-xapian-index
...
...

Есть ли другой способ поддерживать один и тот же набор пакетов на обоих серверах?

Оба являются одной и той же ОС с разными версиями (server1: Ubuntu 14.04 и server2: Ubuntu 20.04), и мне нужны только установленные пользователем пакеты.

Обновлять:

список подходящих --установлен

Над командой отображается как

accountservice/trusty-updates, теперь 0.6.35-0ubuntu7.3 amd64 [установлено]
acpid/trusty, теперь 1:2.0.21-1ubuntu2 amd64 [установлено]
adduser/trusty,теперь 3.113+nmu3ubuntu3 все [установлено]
amd64-microcode/trusty-updates, теперь 3.20180524.1~ubuntu0.14.04.2+really20130710.1ubuntu1 amd64 [установлено, автоматически]
apache2/trusty-updates,trusty-security,теперь 2.4.7-1ubuntu4.22 amd64 [установлено]
...

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

user535733 avatar
флаг cn
Ваш метод, скорее всего, не сработает: Ubuntu 14.04 (обратите внимание на правильное название, войдите в привычку) просто слишком отличается от Ubuntu 20.04 (опять же, обратите внимание на правильное название). Слишком много пакетов изменилось за шесть лет.
Shashank Gb avatar
флаг pk
Я не хочу устанавливать встроенные пакеты, мне нужен список только тех, которые установлены пользователем.
Рейтинг:2
флаг cn

Если бы это была моя система, я бы сделал следующее:

Пакеты, установленные пользователем, отслеживаются с помощью apt-маркировки (см. человек.)

Однако есть небольшая проблема: установщик Ubuntu apt-marks все при стандартной установке Ubuntu как при ручной установке. Это мера безопасности, чтобы люди по ошибке не удалили свой рабочий стол.

Так что это (вроде) простое вычитание: список всех ручных пакетов минус список стандартных установочных пакетов.

  1. Получите список пакетов в вашей системе 14.04, которые помечены как «ручные».

    apt-mark шоумануал > server1
    
  2. Запустите виртуальную машину со свежей установкой Ubuntu 14.04 и сделайте то же самое.

    apt-mark шоумануал > свежий
    
  3. Сравните два файла.

    diff --suppress-common-lines свежий сервер1
    
  4. Пройдитесь по полученному короткому списку, строка за строкой. Вы должны отсеять пакеты ядра, изучить пакеты, которые были удалены, переименованы или иным образом изменены, добавить пакеты, которые больше не являются частью стандартной установки, и т. д. Не существует простого или автоматизированного способа сделать это.

Рейтинг:2
флаг cn

Список dpkg — это все приложения, но будут установлены только разные. Часто лучше отредактировать старые ядра.

Из старой установки

dpkg --get-selections > ~/мои-пакеты

Из новой установки:

sudo apt-get -y обновить
sudo apt-получить dselect-upgrade
#ЕСЛИ вы получаете эту ошибку:
dpkg: предупреждение: пакета нет в базе данных
sudo apt-get установить dselect
судо дселект 
   -> Обновить
   -> Установить

Табличный список всех установленных вручную пакетов можно получить с помощью aptitude, который вам, вероятно, придется установить:

поиск способностей '~i!~M'

Приложения верхнего уровня:

aptitude --disable-columns -F 'no_depends %p' search '~i!~M!~R(~i)'

Но тогда вам может понадобиться добавить установку в каждую строку.

Как вывести список всех установленных пакетов

Также как перечислить приложения, которые вы установили.

Как вывести список всех установленных пакетов

Shashank Gb avatar
флаг pk
Да, теперь я получил список установленных вручную пакетов, используя `aptitude search '~i!~M' > пакеты`. Итак, как использовать этот список в server2. Могу ли я снова использовать `dselect`
oldfred avatar
флаг cn
Не использовал aptitude, но я думаю, что это просто список приложений. Чтобы использовать отмену выбора, он ожидает два столбца, одно имя приложения и вторую установку. Экспорт dpkg может включать удаление во второй столбец, что означает, что он был удален и не будет переустанавливаться. Ссылки показывают команду set для добавления установки в каждую строку с помощью sed.

Ответить или комментировать

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