Как получить список пакетов, установленных в экземпляре Debian в качестве автономной установки для другой машины.

Entonces, dado que realmente no desea una interrupción, ¿qué le parece deshabilitarla en el nivel de la terminal, con stty intr ""? Eso haría que ^Capareciera en el búfer de entrada como cualquier carácter ordinario, y podemos leerlo desde allí.

Esto me funciona en Linux:

#!/bin/bash

t=$(stty -g)
stty intr ""
echo please hold
sleep 5
stty "$t"

# short timeout, just check if there was any input earlier
read -n1 -t0.1 a
[[ "$a" = $'\003' ]] && echo "you hit ^C"

(No puedo probar en OpenBSD, pero supongo que la configuración del terminal es estándar.)

1
12.07.2019, 04:21
1 ответ
  1. Чтобы получить список установленных пакетов:

     dpkg --get-selections '*' > /tmp/selections.txt
    
  2. Повторно -загрузить установленные пакеты на машину с доступом в Интернет:

    apt-get clean
    awk '$2=="hold" || $2 == "install" {print $1}' /tmp/selections.txt | 
      xargs -r apt-get -d -y reinstall
    

Это загрузит все установленные пакеты в /var/cache/apt/archives/. xargsиспользуется здесь в случае, если список установленных пакетов слишком велик, чтобы уместиться в одной командной строке.

Примечание. :запуск apt-get cleanне является обязательным. Он удалит все файлы .deb, которые уже были в /var/cache/apt/archives. Это делается только для того, чтобы свести к минимуму количество пакетов, которые необходимо будет скопировать на не -интернет-компьютер (, например. старые версии, удаленные пакеты и т. д., которые все еще присутствуют в этом каталоге ). Минус в том, что все установленные пакеты будут загружены заново, даже если они уже были в директории архивов.

  1. Скопируйте /tmp/selections.txtв /tmp/на машине, не подключенной к Интернету -.

  2. Скопируйте все в /var/cache/apt/archivesв тот же каталог на машине, не входящей в -Интернет. Метод не имеет значения -scp, rsync, USB-накопитель, внешний -жесткий диск, что угодно. Важно то, что они копируются в /var/cache/apt/archivesна целевой машине.

  3. на цели (без -интернет )запуск машины:

    dpkg --set-selections < /tmp/selections.txt
    apt-get dist-upgrade
    

Если вы хотите, чтобы apt-get dist-upgradeудалял пакеты, которые ранее были установлены на целевой машине, но НЕ установлены на другой машине, запуститеdpkg --clear-selectionsперед запуском dpkg --set-selections.

Дополнительную информацию об опциях --get-selections, --set-selectionsи --clear-selectionsсм. на справочной странице dpkg.

5
27.01.2020, 23:17

Теги

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