Подавлять вопросы командной строки во время установки пакета

У меня есть устройство на основе Ubuntu 16.04, в котором установлены пакеты из общедоступного репозитория. Но не напрямую используя публичный репозиторий. Вместо этого используется сервер обновлений, который загружает пакеты и затем помещает их в один файл. Программа обновления в системе получает эти файлы, извлекает пакеты и устанавливает их.

Недавно пакет base-files доставил мне некоторые неприятности, которые содержат файл / etc / issue (кажется, он содержит версию Ubuntu):

Setting up base-files (9.4ubuntu4.8) ...

Configuration file '/etc/issue'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.

Программа обновления установила пакет с помощью следующей командной строки far:

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --quiet --yes --force-yes install [Absolute path of the packages]

После того, как эта проблема возникла, я попробовал следующую командную строку:

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get -o Dpkg::Options::="--force-confnew" --quiet --yes --force-yes install [Absolute path of the packages]

Но, к сожалению, это ничего не изменило.

Теперь мой вопрос, есть ли какой-нибудь вариант, который бы исправил это поведение.

1
задан 21 June 2019 в 17:28

1 ответ

Благодаря пользователю seahawk1986 на немецком форуме Ubuntu: https://forum.ubuntuusers.de/topic/kommandozeilen-abfrage-bei-paketinstallation-u/

я нашел решение проблемы: https://debian-handbook.info/browse/en-US/stable/sect.automatic-upgrades.html#id-1.9.17.9

I сделал сценарий:

#!/bin/sh
export DEBIAN_FRONTEND=noninteractive
/usr/bin/yes '' | /usr/bin/apt-get --yes --force-yes --quiet -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install "$@"
  • - да - ответить «да» на каждый вопрос
  • - принудительно-да - принудительно ответить «да» на каждый вопрос
  • - тихо - не показывать, например, любые индикаторы выполнения.
  • -o Dpkg :: Options :: = "- force-confdef" - Использовать ответ по умолчанию, если файл конфигурации должен быть заменен.
  • -o Dpkg :: Options :: = "- force-confold" - использовать старый файл конфигурации, если файл конфигурации необходимо заменить. На всякий случай --force-confdef не работает.
  • «$ @» - все пути к пакетам, которые я передаю этому сценарию.
  • export DEBIAN_FRONTEND = неинтерактивно - использовать только неинтерактивный режим при установке / обновлении пакетов.

Интересной частью является

/usr/bin/yes '' |

До сих пор я никогда не работал с «да». Он просто печатает «у», за которым следует разрыв строки (означает «Ввод»), который затем может быть передан на стандартный ввод (стандартный ввод). В этом случае мы просто используем пустую строку. Таким образом, «да» затопляет стандартный ввод данными Enter. Если возникает вопрос, в большинстве случаев при ответе на этот вопрос используется опция по умолчанию, просто нажав клавишу ввода. И это волшебство, которое помогло мне.

Надежда, которая также помогает другим людям, сталкивающимся с такими же или похожими проблемами.

0
ответ дан 21 June 2019 в 17:28

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

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