Спасибо автору OpenScreen в Google, это известная ошибка , и одно из решений — перенести исправление на собираемую версию хрома или использовать 78.0.3890.0 или более позднюю версию.
Я думал, что это будет легко сделать обратно, но фиксация, содержащая исправление, также содержит изменения в структуре src openscreen, которые приводят к сбою сборки... Я продолжил, внимательно -выбрав исправление, сравнив два последних фиксирует и применяет эти изменения к моей ветке хрома.
Обходной путь, упомянутый в ошибке, заключается в отключении открытого экрана с помощью gn args «enable _opencreen=false».
Единственный обходной путь, который я могу придумать без изменения самого yay
, — это иметь скрипт-оболочку, который вы запускаете как root и который временно удаляет sudo
перед запускомyay
:
#!/bin/sh
su -c "mv /sbin/sudo /sbin/sudo.old" && yay "$@"
su -c "mv /sbin/sudo.old /sbin/sudo"
Тем не менее, это дважды попросит вас ввести пароль root. Другой вариант — просто запустить скрипт от имени root, а затем в скрипте использовать su
, чтобы переключиться на другого пользователя :
#!/bin/sh
normalUser="$1"
shift
mv /sbin/sudo /sbin/sudo.old &&
su -c "yay $@" $normalUser
mv /sbin/sudo.old /sbin/sudo
Затем вы должны запустить это как:
su -c "/path/to/yay.wrapper.sh adrin $yayArguments"
В вашем случае это должно быть безопасно, так как вы на самом деле не используете sudo
, но я бы все же сделал копию /sbin/sudo
, чтобы вы могли легко вернуть ее, если что-то пойдет не так, на всякий случай.
Самый простой способ обойти эту проблему — использовать опцию --sudo=su
.
tl;dr-run yay --sudo=su -Syu
для достижения желаемого эффекта.
Объяснение того, почему yay --sudo=su
не сделал того, что вы ожидали, приведено ниже.
Проблема связана с тем, как yay
обрабатывает аргументы CLI. Из документов:
If no arguments are provided 'yay -Syu' will be performed.
If no operation is selected -Y will be assumed.
Если аргументы не указаны, yay -Syu
выполняется (полное обновление системы ), но --sudo=su
считается аргументом, поэтому yay выбирает операцию -Y
(списка пакетов, соответствующих запросу, который в этом случае пуст, и поэтому команда немедленно завершает работу ).
Вот кусок кода, отвечающий за:https://github.com/Jguer/yay/blob/next/pkg/settings/parser/parser.go#L618