Open usp Tukubaiをdebパッケージにして使う方法

■debian(squeeze)の場合、デフォルトで「/usr/local/bin」のパスが通っている。
 以下の4つを確認した。

 1.普通に「checkinstall」すれば「/usr/local/bin」のパスで使える。
 2.「/opt/usp」配下に「checkinstall」して、自身がログイン中にPATHを通さないと使えないように制限できる。
 3.上記の両方でdebパッケージとして管理することが出来、アンインストールも正しく行える。
 4.全ユーザにPATHを通す方法とそれを無効にする方法

■コンパイルに必要なパッケージと、debパッケージを作成する準備

$ sudo apt-get install -y build-essential dh-make debhelper devscripts
$ sudo apt-get install -y checkinstall

■USP tukubaiの前提条件の確認(python2.4以上)。

$ dpkg -l | grep python | awk '{print $2","$3}'
python,2.6.6-3+squeeze7
python-apt,0.7.100.1+squeeze1
python-apt-common,0.7.100.1+squeeze1
python-central,0.6.16+nmu1
python-minimal,2.6.6-3+squeeze7
python-reportbug,4.12.6
python-support,1.0.10
python2.6,2.6.6-8+b1
python2.6-minimal,2.6.6-8+b1

$ python -V
Python 2.6.6

■以下より最新版のTukubaiをダウンロードする。

 Open usp Tukubaiダウンロード
 https://uec.usp-lab.com/TUKUBAI/CGI/TUKUBAI.CGI?POMPA=DOWNLOAD

■上記からソースをダウンロード

$ wget --no-check-certificate https://uec.usp-lab.com/TUKUBAI/DOWNLOAD/open-usp-tukubai-20120802.tar.bz2
$ ls open-usp-tukubai-20120802.tar.bz2

■解凍してみる。

$ tar jxvf open-usp-tukubai-20120802.tar.bz2
$ cd open-usp-tukubai-20120802/

■debパッケージの作成(32bit)
 ※「...」の箇所は省略。「Maintainer」は各自が変更。

$ sudo checkinstall

...

このパッケージの説明を書いてください
説明の末尾は空行かEOFにしてください。
>> USP
>> EOF
>>

...

変更するものの番号を入力してください。Enterで続行します: 5
ライセンスの種類を入力:
>> MIT

このパッケージは以下の内容で構成されます:

0 -  Maintainer: [ labunix@xxxx ]
1 -  Summary: [ USP ]
2 -  Name:    [ open-usp-tukubai ]
3 -  Version: [ 20120802 ]
4 -  Release: [ 1 ]
5 -  License: [ MIT ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ open-usp-tukubai-20120802 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ open-usp-tukubai ]
12 - Conflicts: [  ]
13 - Replaces: [  ]

...

======================== インストールに成功しました ==========================

...

**********************************************************************

 Done. The new package has been installed and saved to

 /home/labunix/open-usp-tukubai-20120802/open-usp-tukubai_20120802-1_i386.deb

 You can remove it from your system anytime using:

      dpkg -r open-usp-tukubai

**********************************************************************

■インストールチェック
 ※dpkgで一覧を取得、ファイルかディレクトリで無いなら、エラーとその対象を表示する。

$ sudo dpkg -L open-usp-tukubai | for list in `xargs`;do test -f "$list" || test -d "Error: $list" || echo "$list";done

■アンインストール
 ※「/usr/local」も「/usr/local/share」も削除されなくて良い。

$ sudo dpkg -r open-usp-tukubai
(データベースを読み込んでいます ... 現在 36140 個のファイルとディレクトリがインストールされています。)
open-usp-tukubai を削除しています ...
dpkg: 警告: open-usp-tukubai の削除中、ディレクトリ '/usr/local/share' が空でないため削除できませんでした。
dpkg: 警告: open-usp-tukubai の削除中、ディレクトリ '/usr/local' が空でないため削除できませんでした。

■コンテンツの確認
 ※削除されなかったディレクトリや「/」は表示されるが、正しく削除されている。

$ sudo dpkg -L open-usp-tukubai | for list in `xargs`;do test -f "$list" || test -d "Error: $list" || echo "$list";done
パッケージ 'open-usp-tukubai' はまだインストールされていません。
アーカイブファイルを調べるためには dpkg --info (= dpkg-deb --info) を、
その内容一覧を表示するには dpkg --contents (= dpkg-deb --contents) を使います。

$ sudo dpkg-deb --contents open-usp-tukubai_20120802-1_i386.deb | sed s/".*\."//g | \
  for list in `xargs`;do test -f "$list" || test -d "Error: $list" || ls "$list" > /dev/null 2>&1 && echo "Install? $list";done
Install? /
Install? /usr/
Install? /usr/share/
Install? /usr/share/doc/
Install? /usr/local/
Install? /usr/local/share/

■「Makefile」の編集して「/opt/usp」にインストールする
 ※今回はrelease[2]。

$ mv open-usp-tukubai_20120802-1_i386.deb ../
$ grep ^LOCAL Makefile
LOCALBASE?=     /opt/usp

$ sudo make
$ sudo checkinstall
$ sudo dpkg -r open-usp-tukubai
$ ls -ld /usr/share/doc/u*
drwxr-xr-x 3 root root 4096 2012-04-09 22:08 /usr/share/doc/ucf
drwxr-xr-x 3 root root 4096 2012-04-09 21:33 /usr/share/doc/udev
drwxr-xr-x 2 root root 4096 2012-04-09 22:10 /usr/share/doc/unifont
drwxr-xr-x 2 root root 4096 2012-12-07 22:40 /usr/share/doc/unzip
drwxr-xr-x 3 root root 4096 2012-04-09 21:31 /usr/share/doc/util-linux
$ sudo dpkg -i open-usp-tukubai_20120802-2_i386.deb

■「README/INSTALL/LICENSE」の3つのファイルは「/usr/share/doc」配下に作成されるが、
 それ以外は「Makefile」に指定した通りに出来た。

$ dpkg -L open-usp-tukubai | grep -v '/opt'
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/open-usp-tukubai
/usr/share/doc/open-usp-tukubai/README
/usr/share/doc/open-usp-tukubai/INSTALL
/usr/share/doc/open-usp-tukubai/LICENSE

■パスを通す対象の確認

$ sudo dpkg-deb --contents open-usp-tukubai_20120802-2_i386.deb | \
  sed s/".*\."//g | grep bin | sed s%"\(bin\)/.*"%"\1"%g | sort -u
/opt/usp/bin

■現在ログイン中のユーザのみパスを通す。

$ delf -v
-bash: delf: コマンドが見つかりません
$ PATH=$PATH:/opt/usp/bin
$ delf -v
Usage    : delf <f1> <f2> ... [file]
Version  : Sat Mar 10 17:18:43 JST 2012
           Open usp Tukubai (LINUX+FREEBSD/PYTHON2.4/UTF-8)

$ sudo delf -v
sudo: delf: command not found

■現在ログイン中のユーザのみ通したパスを外す

$ PATH=`echo $PATH | sed s%'\:*/opt/usp/bin\$'%%g | sed s%'^/opt/usp/bin\:'%%g | sed s%'/opt/usp/bin\:'%%g`;echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

■上記の理由は以下にも対応する為。

$ PATH=/opt/usp/bin:$PATH
$ PATH=$PATH:/opt/usp/bin:/opt/labunix/bin
$ PATH=`echo $PATH | sed s%'\:*/opt/usp/bin\$'%%g | sed s%'^/opt/usp/bin\:'%%g | sed s%'/opt/usp/bin\:'%%g`;echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/labunix/bin

■面倒な人は一旦ログアウトして入りなおせばよいだけです。

$ delf -v
-bash: delf: コマンドが見つかりません

■全ユーザにパスを通す
 ※「/usr/local/bin」なら気にする必要は無い。
  また、「/opt/usp/bin」ディレクトリが無ければ何もしない。
  コマンド名が被った時の挙動を変えたければ、コメントアウト行に変えればよい。

$ cat /etc/profile.d/usp.sh
#!/bin/bash

if [ -d '/opt/usp/bin' ];then
  echo $PATH | grep '/opt/usp/bin' || export PATH=$PATH:/opt/usp/bin
  # echo $PATH | grep '/opt/usp/bin' || export /opt/usp/bin:PATH=$PATH
fi
$ sudo chmod +x /etc/profile.d/usp.sh

■全ユーザのパスを無効にする。
 ※実行権を失くすか、削除すればよい。

$ sudo chmod -x /etc/profile.d/usp.sh