yay
私は権限を高めるために(archlinuxの)プログラムを使用しますsudo
。ただし、見つからないsudo
場合に切り替えます。これは私のユーザーがsudoerではなくインストールされているので(実行中にインストールする必要がある他のプログラムがsu
あるため)私が望むものです。ルートとして、私はこれが愚かなことであることを知っています。)sudo
sudo
今問題は、このプログラム( )が存在しないとyay
思うようにしながら、どのように実行できるかということです。sudo
ソースからパッケージをビルドしてインストールするのは、yay
パッケージマネージャ(AURヘルパー)です。セキュリティ上の理由から、これらのビルドはrootとしては実行できません。これは十分に公平です。
そしてすでに質問しました。ここリポジトリにありますが、yay
問題が解決されている間に代替ソリューションを使用したいと思います。
答え1
私が考えることができる唯一の回避策は、yay
rootで起動してsudo
開始する前に一時的に削除するラッパースクリプトを使用することですyay
。
#!/bin/sh
su -c "mv /sbin/sudo /sbin/sudo.old" && yay "$@"
su -c "mv /sbin/sudo.old /sbin/sudo"
ただし、これを行うには、ルートパスワードを2回入力する必要があります。別のオプションは、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
答え2
この問題を回避する最も簡単な方法は、この--sudo=su
オプションを使用することです。
長すぎます。-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