デスクトップ環境構築 - 共通事項 - OctoPkg - 機能しないとき
- 1. 概要
- 2. 対策(一般)
- 3. 対策(KDE)
- 4. 傍証
1. 概要
あるときから、「OctoPkg」が、機能しなくなったのです。
自分の記録をたどると、2019年01月17日、「FreeBSD 12.0 RLEASE」を扱っていたあたりからかな。
状況は、パッケージの更新やインストール時に、「Confirmation」で「Yes」入力後、いつまで待っても、「認証」のダイアログが表示されないのです。
ソースを変えて、無理やり、「sudo」で起動したりもしましたが、どうやら、原因ははっきりとつかめていなかったのです。
2. 対策(一般)
インストール時に
pkg install -y octopkg gksu
でインストールしていたのですが、このとき、「bash」も同時にインストールします。
pkg install -y octopkg gksu bash
こうすることで、たいていのデスクトップでは、「OctoPkg」が機能するようになります。
3. 対策(KDE)
「KDE」は、さらに特別、インストールは
pkg install -y octopkg gksu kf5-kdesu bash
となりますが、インストール後に
mkdir -pv /usr/local/lib/kde4
ln -s /usr/local/lib/libexec/kf5 /usr/local/lib/kde4/libexec
とすることで、「OctoPkg」が機能するようになります。
4. 傍証
「ports」を展開して、軽く「hack」してみて、なんとなくわかりました。
ソースディレクトリで、「grep」してみます。
$ grep bash *.cpp
unixcommand.cpp: proc.start("/usr/local/bin/bash -c \"which " + binary + "\"");
unixcommand.cpp: proc.start("/usr/local/bin/bash -c " + sParam);
utils.cpp: proc.start("ps -o pid -C bash");
認証のダイアログを表示させるのにおそらくは、「bash」を使用しているのです。
なんだかなぁ。
「bash」必須であれば、依存関係をつけてくれればいいし、どこでも使えるようにするには、「bash」でなく、「sh」なんだがな。
「KDE」に関しては
$ grep kdesu *.cpp
mainwindow_transaction.cpp: else if (WMHelper::getSUCommand().contains("kdesu"))
mainwindow_transaction.cpp: msg.remove(QRegularExpression("kdesu.+"));
wmhelper.cpp: result = "/usr/local/lib/kde4/libexec/kdesu";
wmhelper.cpp: QFile kdesu("/usr/local/lib/kde4/libexec/kdesu");
wmhelper.cpp: if (kdesu.exists()){
とまぁ、「/usr/local/lib/kde4/libexec/kdesu」を使っていますが、現在(2020年6月25日)の「KDE」では、「kdesu」は「/usr/local/lib/libexec/kf5/kdesu」にあるのです。
「ports」や「pkg」のチームもしくは、「OctoPkg」のメンテナに伝えたいのですが、英語ができないので、伝えられないのだ。
|
|