У меня есть устройство на основе 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]
Но, к сожалению, это ничего не изменило.
Теперь мой вопрос, есть ли какой-нибудь вариант, который бы исправил это поведение.
Благодаря пользователю 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 "$@"
Интересной частью является
/usr/bin/yes '' |
До сих пор я никогда не работал с «да». Он просто печатает «у», за которым следует разрыв строки (означает «Ввод»), который затем может быть передан на стандартный ввод (стандартный ввод). В этом случае мы просто используем пустую строку. Таким образом, «да» затопляет стандартный ввод данными Enter. Если возникает вопрос, в большинстве случаев при ответе на этот вопрос используется опция по умолчанию, просто нажав клавишу ввода. И это волшебство, которое помогло мне.
Надежда, которая также помогает другим людям, сталкивающимся с такими же или похожими проблемами.