Slackwareでを使用すると、sbopkg
人々はソースコードからパッケージを構築できます。 ReposはDebianほど大きくはありませんが、まだ非常に良いです。
一部のソフトウェアは環境変数を使用できます(たとえば、VICE c64エミュレータでこの変数が
FFMPEG
に設定されているyes
場合はffmpeg
、ロギングエミュレータが有効になります)。
使ってみよう
$ export FFMPEG=yes; sudo sbopkg -B -i vice
しかし、ffmpeg
無効になっています。
代わりに私は使用しなければならなかった
$ su -
$ export FFMPEG=yes
$ sbopkg -B -i vice
これはうまくいきます。
環境変数はどのように使用しますかsudo
?
答え1
sudoのオプションが利用可能です-E
。
FMPEG=yes sudo -E sbopkg -B -i vice
マニュアルから:
-E, --preserve-env
ユーザーが既存の環境変数を保持したいセキュリティポリシーを表します。ユーザーが環境を保護する権限を持っていない場合、セキュリティポリシーはエラーを返す可能性があります。
この輸出に注意してくださいみんな既存の環境変数。次の構文を使用して必要な環境変数のみをエクスポートする方が安全です。:
sudo FMPEG=yes sbopkg -B -i vice
答え2
sudo
指定されたコマンドを呼び出す前に環境の変数をクリーンアップします。コマンドが正しく機能するには、環境で変数を保存するように要求する必要があります。
さらに、()を使用する前に変数に値を割り当てるかexport
、()を呼び出すときと同じ手順で変数に値を割り当てるか、()を使用する必要があります。FMPEG
sudo
export FMPEG=yes; sudo
sudo
FMPEG=yes sudo
env
env FMPEG=yes sudo
環境変数を保存するには-E
(または--preserve-env
)を使用します。
$ env FMPEG=yes sudo -E sbopkg -B -i vice
特定の環境変数は、次のように設定することもできます。
$ sudo FMPEG=yes sbopkg -B -i vice
セキュリティポリシーが失敗した場合は、ルートシェルを起動してそこに変数を設定します。
$ sudo -s
# env FMPEG=yes sbopkg -B -i vice
# exit
答え3
注:括弧(export a=b; command)
に注意してください。a=b command
その後、変数をに適用せずにsudo
直接適用すると、次のようになります
sbopkg
。FFMPEG=yes sudo sbopkg -B -i vice
sudo FFMPEG=yes sbopkg -B -i vice
セキュリティ警察がこのような事態を防ぐのに役立ちます。
sudo bash -c "FFMPEG=yes sbopkg -B -i vice"
(使用しないでください-E
。予期しないすべての変数が漏洩する可能性があるため、安全ではありません。)