ソフトウェアをマニュアルインストールする際のコツ

ソフトウェアをアーカイブ(tarball)から手作業でGNU/Linuxにインストールする際には、コツがある

通常は /usr/local/ 以下にインストールする。そうすることで、パッケージマネージャ等でインストールされたものと区別して管理する。 e.g. ./configure --prefix=/usr/local のように指定してビルドする

ただし、ビルド済のバイナリをインストールするならば、 /opt/ 以下にインストールする



なんかいかがわしいと思うのだが SlimBoatウェブブラウザ というものを、インストールしたいらしい。

tarball の中味はビルド済のバイナリのブロブなので、/opt/に slimboat ディレクトリを造ってインストールすれば宜しい。

sudo cp slimboat_amd64.tar.xz /opt/
cd /opt
sudo tar xvfJ slimboat_amd64.tar.xz
sudo rm slimboat_amd64.tar.xz

ホームディレクトリ以下にインストールしておきながら、 global な .desktop を作成するのは止めるべきだ。 ローカルユーザとグローバルがごっちゃになっているから

反対にあくまでもホームディレクトリ以下にインストールするならば、 .desktop にせよ menu にせよ、ローカルユーザの領域で作成せねばおかしい ちなみに、menu は ~/.config/menus/ に、 .desktop は ~/.local/share/applications/ に置く


さて、この失敗事案の主因は異なるところに在る

起動用スクリプト slimboat.sh の中味が特殊だからだ。 具体的に言うと、当該ディレクトリを開いた状態で実行することが前提になっている (ちなみにこれを解読するには、 dirname や basename というコマンドを知らねばならない)

slimboat.sh
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`

dirname=`dirname $0`
tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname/libs
export LD_LIBRARY_PATH
export QT_PLUGIN_PATH=
$dirname/$appname "$@"

だから、メニューから実行しようとしたらエラーで起動し得ない

なお、もともとが、メニューからの起動に失敗したときにはエラー内容がメッセージボックスで出たりは しない ので、 黙ってうんともすんとも言わないままになる

そこで例えば、

exec.sh
#!/bin/sh

export LD_LIBRARY_PATH="/opt/slimboat/libs"
export QT_PLUGIN_PATH=
export PATH="/opt/slimboat:${PATH}"
slimboat "$@"

というスクリプトファイルを /opt/slimboat/ に作成する (勿論、 sudo chmod +x exec.sh もする)

slimboat.desktop
[Desktop Entry]
Name=SlimBoat
Name[ja]=SlimBoat
GenericName=Slimboat Web Browser
GenericName[ja]=ウェブブラウザ Slimboat
Comment=Browse the World Wide Web
Comment[ja]=ウェブブラウジングをします
Exec=/opt/slimboat/exec.sh %u
Terminal=false
Type=Application
Icon=slimboat
Categories=Application;Qt;Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;image/gif;image/jpeg;image/png;
StartupNotify=true

アイコンの画像は、

sudo cp slimboat.png /usr/share/icons/

ちなみにローカルユーザ領域のアイコン置場は無論、 ~/.local/share/icons/

公開日時:

wjn's repos' info.

  Japenese , English