Как я могу отфильтровать & ldquo; dpkg --get-selections & rdquo; просто пакеты доступны в репозиториях?

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

Я знаю, что dpkg --get-selections может дать мне список всех установленных пакетов, которые я могу передать dpkg --set-selections в целевой системе. Тем не менее, некоторые из установленных пакетов - это те, которые я создал самостоятельно (например, с помощью checkinstall), и они недоступны в репозиториях. Процесс dpkg --set-selections завершится ошибкой, когда он не сможет найти эти пакеты в репозиториях.

Так есть ли способ, которым я могу отфильтровать список, сгенерированный dpkg --get-selections, чтобы он содержал только пакеты, чья установленная в настоящее время версия доступна в моих текущих репозиториях?

9
задан 7 November 2012 в 06:10

2 ответа

Я полагаю, что Software Center имеет функцию синхронизации между компьютерами в эти дни. Если это правильно обработать пропущенные пакеты, это может решить вашу проблему.

Проблема здесь в том, что dpkg не знает о репозиториях, только установленные пакеты. Вы можете узнать, доступен ли пакет в репозитории, запустив apt-cache policy $package. Если вы видите репозиторий в Version Table, он доступен там.

Итак, как насчет этого? Это медленно, но должно работать:

dpkg --get-selections '*' \
  | while read line; do
    apt-cache policy $(echo "$line" | cut -f1 ) \
      | grep -q 'http://' \
      && echo "$line"
done
0
ответ дан 7 November 2012 в 06:10

С помощью следующей команды

dpkg --get-selections > installed-software

он создаст файл с именем instal-software в вашем домашнем каталоге

в новой системе

dpkg --set-selections < installed-software

. прочитайте выбор и установите

0
ответ дан 7 November 2012 в 06:10

Другие вопросы по тегам:

Похожие вопросы: