[2020/7/14 追記] Step1の内容が不要なことを確認しました。読み飛ばしてください。ご迷惑をおかけして申し訳ございません。
#はじめに
こんにちは。皆さんはDebianをお使いですか?GNOME以外のデスクトップ環境をお使いですか?
野良パッケージをGUIツールを用いてDebianにインストールする場合、GNOMEデスクトップではGNOME Softwareが便利ですが、それ以外のデスクトップではgdebiが有効です。
しかし、Debian 10のgdebiはファイルマネージャーからdebファイルをダブルクリックして起動した場合、「パッケージをインストール」ボタンをクリックすると終了し、パッケージはインストールされません。今回は、この症状を回避してgdebiを使えるようにするための方法を紹介します。
#考えられる不具合の原因と対策の流れ
筆者は素人なのであくまでも挙動からの推測ですが、「パッケージをインストール」ボタンをクリックしたときのroot権限への切り替えがうまく行っていないようです。そこで、gdebiを最初からroot権限でrootユーザーとして起動することで、不具合を回避します。以下では、その方法を3つのステップに分けて説明します(2020/7/14追記: Step1は不要です。読み飛ばしてください。Step2・3を読んでください)。gdebiはすでにインストールされているものとします。
#Step1. PATHの設定→不要です、読み飛ばしてください[2020/7/14]
一部の野良debパッケージは、インストール時に/usr/sbin
などに配置されているコマンドをフルパスを指定せずに実行しようとします。しかし、Debian 10の標準設定では、NewInBusterにあるように、root権限になっただけでは/usr/sbin
などにPATHは通らず、インストールを実行できません。
そこで、/etc/login.defs
について、PATHの設定を行っている部分(102行目付近)を以下のように変更し、root権限で/usr/sbin
などにPATHが通るようにします。
ALWAYS_SET_PATH yes
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=/usr/local/bin:/usr/bin:/usr/sbin:/bin:/usr/local/games:/usr/games
設定が終わったら再起動します。
以下の記事を参考にしました。
NewInBuster - Debian Wiki
Debian $PATH variable change - stack overflow
~~…とここまで解説してきましたが、Step2以降の設定を行うにあたり、Step1が必要あるのか正直分かってないです。誰か教えてください。~~→このStepは不要でした。Step2で用いるpkexec
コマンドは、root権限ではなく、rootユーザーとしてコマンドを実行するためです。
#Step2. root権限rootユーザーでgdebiを起動するシェルスクリプトを作成する
/usr/local/bin
に、以下のシェルスクリプトを配置します。
#!/bin/sh
pkexec "/usr/bin/gdebi-gtk" "$@"
pkexecコマンドでroot権限rootユーザーの認証をしてからgdebiを起動するスクリプトです。今回$@
には、gdebiで開くファイル名が入ります。
さらに、つぎのコマンドで実行権限を与えます。
# chmod +x /usr/local/bin/gdebi-gtk-exec
以上で、ターミナルから$ gdebi-gtk-exec
を実行すると、root権限rootユーザーの認証を求める画面が表示されます。実際にrootパスワードを入力すると、root権限でrootユーザーとしてgdebiが立ち上がります。
#Step3. GUIで利用できるように、desktopファイルを改造する
Step2までではコマンドラインからしかgdebiを利用できません。そこで、ファイルマネージャーなどから利用できるようにするため、gdebiのdesktopファイルを改造します。
まず、以下のコマンドでシステムのdesktopファイルをユーザーのディレクトリにコピーします。
$ cp /usr/share/applications/gdebi.desktop ~/.local/share/applications/
つぎに、コピーしたdesktopファイルから、gdebi-gtk-exec
を実行するように、155行目付近のExec=gdebi-gtk %f
をつぎのように変更します。
Exec=gdebi-gtk-exec %f
以上でコマンドラインを使用せずに、Debian 10でgdebiを利用できるようになりました。
#変更後の挙動
Step1-3Step2・3の設定を行ったあとにgdebiがどのような挙動をするのかスクリーンショット付きで紹介します。以下はSRware Ironのインストール例です。
ファイルマネージャーに表示されているインストーラー"iron.deb"をダブルクリックします。
すると、下図のように、rootパスワードの入力が求められます。
ここで、rootパスワードを入力すると、gdebiがroot権限でrootユーザーとして起動します。
"パッケージをインストール"ボタンをクリックすると、インストールが始まります。
インストール中のスクリーンショットを撮り忘れてしまいましたが、しばらく待つとインストールが完了します。
#まとめ
以上がDebian 10でgdebiを使う方法でした。ファイルマネージャー上のdebファイルをダブルクリックするといきなりrootパスワードが要求されるのは少し怖いですが、自分で分かって使う分には問題ないと思います。