Я прочитал ответы вэта почтано, похоже, это не решает мою проблему.
Я запускаю bash-скрипт через stdin из wget:
wget -O - http://serverip/subfolder/script | sudo bash
Я пробовал использовать apt-get -y --force-yes install <packages..> || true
, но он все равно выходит из скрипта, если один из перечисленных пакетов установлен с помощью apt-get.
Скрипт не завершает работу, если все перечисленные пакеты уже установлены.
То же самое происходит, если у меня есть apt-get upgrade
и он устанавливает пакет(ы). Это приведет к выходу из скрипта.
У меня есть другой набор скриптов, который, кажется, работает. В этом сценарии скрипт установки — это просто заглушка, которая загружает, запускает скрипт, а bash <scriptname>
затем удаляет его. Сам скрипт повысит свои привилегии, выполнив sudo. apt-get
Здесь все работает так, как и ожидалось.
Буду признателен за любую информацию о том, как предотвратить apt-get
завершение скрипта.
решение1
Я бы хотел, чтобы люди перестали делать: wget | bash
. Это просто глупо и имеет непреднамеренные эффекты, как здесь. У вас есть bash, так что используйте его возможности. В частности, подстановка процессов:
bash <(wget -O - http://serverip/subfolder/script)
решение2
Вероятно, вам просто нужно прекратить apt-get
жадно читать стандартный ввод. Сделайте это, перенаправив stdin в /dev/null
, файл, который возвращает eof для чтения. Например:
apt-get -y --force-yes install ... </dev/null