Вариант Pacman принять «да» на каждый вопрос?

51

При установке программного обеспечения в системах Debian мы можем поставить что-то вроде этого:

sudo apt-get install -y chromium-browser

таким образом, установка происходит автоматически, без запроса подтверждения установки [Да / Нет]. Могу ли я сделать то же самое с pacman?

JohannRamos
источник

Ответы:

77

От man pacman:

--noconfirm
Обход любых сообщений «Вы уверены?». Это не очень хорошая идея, если вы не хотите запускать pacman из скрипта.

Обратите внимание на квалификацию использования этого с осторожностью ...

Arch - это релиз, который означает, что pacman время от времени должен управлять некоторыми довольно сложными обновлениями. В это время pacman предложит вам подтвердить свой выбор - игнорирование этих запросов, как правило, не будет существенной проблемой, но в некоторых случаях, как в случае с недавним переходом от /libк /usr/lib, отсутствие внимания может привести к серьезной поломке. Это не привычка, которую вы хотите развивать.

jasonwryan
источник
Из-за этого предупреждения я никогда не запускал pacman с «--noconfirm» за 3 года использования Arch. Сколько людей запускают pacman из сценария? Каковы большие риски? Мне приходилось вмешиваться 3 или 4 раза, чтобы исправить вещи, которые Пакман отказался обновить.
Брюс Эдигер
3
Я предполагаю, учитывая культуру Арча, что предупреждение должно препятствовать самоуспокоенности, и ошибочное представление о том, что автоматизация обновлений pacman - хорошая идея. Много поломки может быть подавлено , чтобы люди не читающих выхода pacman в; --noconfirmусугубит это ...
Джейсонвриан
1
У меня есть скрипт "install", который использует --noconfirm. Идея состоит в том, чтобы иметь возможность взять систему с недавно обновленной чистой установкой и сделать ее «пригодной для использования» без какого-либо взаимодействия с пользователем.
StrongBad
3
На самом деле, --noconfirmне предполагает yes, вместо этого он принимает ответ по умолчанию, что довольно часто no. Пример: # pacman -Scc Cache directory: /var/cache/pacman/pkg/ :: Do you want to remove ALL files from cache? [y/N]В вышеприведенном случае yes|pacman -Sccпредполагаетсяyes
Утгарда
1
На самом деле, pacman --noconfirmтребуется, если вы используете Docker-контейнер, в противном случае он просто будет ждать ввода и, таким образом, завершит работу контейнера с ошибкой.
Амин НАИРИ
29

Хотя справочная страница по этому вопросу не очень ясна, --noconfirmфлаг не будет принимать «да» при каждом ответе. Предполагается ответ по умолчанию, который иногда может быть «нет».

--noconfirm
      Обход любых сообщений «Вы уверены?». Это не очень хорошая идея
      , если вы не хотите запускать pacman из скрипта

Чтобы принять «да», вы можете передать вывод yesкоманды pacman.

yes | sudo pacman -S firefox
Дрю Чапин
источник
Используйте yes | LC_ALL=en_US.UTF-8 pacman [...]для совместимости с системами, язык которых не установлен на английский. В противном случае [Y/n]вопросы становятся [J/n], например.
ComFreek
3
Также остерегайтесь того, что этот ответ не получится, если Пакман когда-либо задает вопрос без yответа, например Enter a selection (default=all).
ComFreek
@ComFreek, вместо того, чтобы изменять передаваемые переменные окружения pacman, было бы проще, и, вероятно, yes J | sudo pacman -S firefoxв этом случае безопаснее всего это сделать . yes Jприведет yesк повторному выводу Jвместо а y.
Дрю Чапин
"и, вероятно, безопаснее" Как это так? Переопределение выше влияет только на среду порожденного процесса (дерева) и заканчивается им. Кроме того, приведенный выше вызов абсолютно одинаков для всех локалей.
Кельвин
Кроме того, что, если кто-то скопирует / вставит одну такую ​​командную строку, но имеет локаль, в которой один из параметров имеет противоположное или совершенно другое значение? Пример: J(или Y) значение «нет» или «все».
Кельвин