■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
if [ -d '/opt/usp/bin' ];then
echo $PATH | grep '/opt/usp/bin' || export PATH=$PATH:/opt/usp/bin
fi
$ sudo chmod +x /etc/profile.d/usp.sh
■全ユーザのパスを無効にする。
※実行権を失くすか、削除すればよい。
$ sudo chmod -x /etc/profile.d/usp.sh