YAY!

Как заставить yay «помнить» единожды предоставленный root доступ

Каждый пользователь Arch Linux сталкивался с ситуацией, когда с помощью сценариев сборки из AUR нужно собрать несколько «тяжелых» программ за раз, например archtorify-git и linux-zen. С помощью AUR-хелпера (в нашем случае) yay запускается процесс сборки в терминале. Так как запуск yay от пользователя root или с помощью команды sudo — большая угроза безопасности, yay запускают от имени обычного пользователя, и в конце процесса сборки он запрашивает root доступ самостоятельно перед установкой собранного пакета в систему. И запрашивать пароль root’a у пользователя  yay пришлось бы перед каждой установкой пакета в систему. Но у команды sudo есть таймаут, и если команда была запрошена повторно недавно и таймаут не прошел — операция выполняется с root доступом без запроса пароля, что сделано для удобства пользователя. Но что будет, если yay собирает какой-нибудь «тяжёлый» пакет, время на компиляцию которого привышает таймаут команды sudo? А что, если таких пакетов подряд штук 15? Правильно, пользователю 15 раз придётся вводить пароль root перед каждой установкой пакета в систему. До недавнего времени это меня очень бесило, т.к. AUR-пакетов у меня в системе не так мало, обновляя их yay постоянно долбил запросом пароля для sudo, и в один момент чаша моего терпения переполнилась. Пришлось лезть к гуглу с вопросом, который ещё и сформулировать попробуй. Но, как оказалось, решение нашлось быстро и повторить самостоятельно сможет даже новичок в Linux.

Задача имеет несколько вариантов решения: сиюминутного, но не удобного и требующего создать и поправить один конфигурационный файл, но забыть далее о проблеме навсегда.

Вариант 1: дополнительная опция в строке команды yay

Yay имеет полезную опцию --sudoloop которая заставляет yay дёргать команду sudo с такой частотой, чтобы не успевал выходить её таймаут. Добавляется в любое место команды так же, как например --noconfirm:

yay -Sa --sudoloop linux-zen

Вариант 2: добавление опции sudoloop в конфиг yay

Этот вариант лично для меня предпочтительнее. Вместо того, чтобы каждый раз добавлять --sudoloop к командам yay, лушче один раз включить эту опцию в конфиге и забыть о проблеме.

Создаём конфиг yay:

yay --save

Открываем для редактирования созданный конфигурационный файл:

nano ~/.config/yay/config.json

Находим строчку "sudoloop": false, и меняем false на true.

Опция sudoloop в конфиге yay

Сохраняем изменения комбинацией клавиш [CTRL+O] -> [ENTER], и закрываем файл комбинацией [CTRL+X].

Вот и всё, теперь yay будет запрашивать пароль root только 1 раз в начале своей работы независимо от того, каково будет время между установками собираемых пакетов.