Subject: [plamo:12235] How to make packages
From: KOJIMA Mitsuhiro 
To: plamo@linet.gr.jp
Date: Fri, 9 Nov 2001 16:47:34 +0900
Reply-To: plamo@linet.gr.jp
X-Mailer: Mew version 1.94.2 on Emacs 20.6 / Mule 4.0 (HANANOEN)


こじま@風邪と GPM でダウン中、、です。

# さっさとセキュリティ関係も含めてパッケージ類のアップデートをしないと
# いけないんだけど、今回はちょっと off topic な話題

某氏から Slackware 系のパッケージについての解説記事を頼まれていて以下
のようなものを書いてみました。内容的には以前に ML に流したものと同じで
すが、パッケージ作りについて興味ある人がいらっしゃれば参考になるかと思っ
て、こっちにも流してみます。

今週末くらいが締切(のはず、、^^;)なので、添削 & コメント等も歓迎します。

---------------------------------------------------------------------

◎◎tgz

Slackware系のディストリビューションが採用しているパッケージ形式はその
拡張子から tgz 形式と呼ばれています。しかし、tgz は独自のファイル形式
ではなく、インストールすべきファイル(バイナリと各種設定ファイル)とイン
ストール後に実行されるスクリプトを tar 形式で固めてから gzip で圧縮し
たファイルになっています。展開に必要なコマンドもほとんどの UNIX 系のシ
ステムには存在している tar と gzip だけなので、Linux 以外の環境で設定
ファイル等を参照したい場合なども簡単に展開して中身を見ることが可能です。

◎tgz ファイルの中身

tgz ファイルの中身は、インストールすべき各ファイルが / を起点とした相
対パスで指定された位置に配置されています。例えば、gzip.tgz の中身を 
tar tzvf コマンドで見ると、以下のようになっています。

kojima@sv# tar tzvf gzip.tgz 
drwxr-xr-x root/root         0 1999-04-06 07:30 usr/
drwxr-xr-x root/root         0 1995-08-07 07:46 usr/man/
drwxr-xr-x root/root         0 1999-04-06 07:30 usr/man/man1/
-rw-r--r-- root/root      1823 1999-04-06 07:30 usr/man/man1/zmore.1.gz
-rw-r--r-- root/root       545 1999-04-06 07:30 usr/man/man1/znew.1.gz
-rw-r--r-- root/root       528 1999-04-06 07:30 usr/man/man1/zgrep.1.gz
-rw-r--r-- root/root       716 1999-04-06 07:30 usr/man/man1/gzexe.1.gz
-rw-r--r-- root/root       421 1999-04-06 07:30 usr/man/man1/zdiff.1.gz
-rw-r--r-- root/root       378 1999-04-06 07:30 usr/man/man1/zforce.1.gz
-rw-r--r-- root/root      5403 1999-04-06 07:30 usr/man/man1/gzip.1.gz
drwxr-xr-x root/root         0 1999-04-06 07:30 usr/info/
-rw-r--r-- root/root     12556 1999-04-06 07:30 usr/info/gzip.info.gz
drwxr-xr-x root/bin          0 1994-03-16 09:33 usr/bin/
-rwxr-xr-x root/root      3840 2000-09-16 12:34 usr/bin/gzexe
-rwxr-xr-x root/root      1333 2000-09-16 12:34 usr/bin/zgrep
-rwxr-xr-x root/root      3502 2000-09-16 12:34 usr/bin/znew
-rwxr-xr-x root/root      1004 2000-09-16 12:34 usr/bin/zforce
-rwxr-xr-x root/root      2000 2000-09-16 12:34 usr/bin/zdiff
drwxr-xr-x root/bin          0 1994-03-16 09:33 bin/
-rwxr-xr-x root/root     57014 2000-09-16 12:34 bin/gzip
drwxr-xr-x root/root         0 2001-06-14 22:22 install/
-rw-r--r-- root/root       388 2001-06-14 22:22 install/doinst.sh

これらのファイルのうち、最後にある install/doinst.sh 以外のファイルは 
gzip のソースパッケージに由来するファイルです。install/doinst.sh ファ
イルは tgz ファイルの展開後に実行されるシェルスクリプトで、tar ファイ
ルに混ぜてしまうと危険なシンボリックリンクの作成等に用いられます。

このように tgz パッケージではソースコードを make ; make install してイ
ンストールされるファイル以外は含まないため、パッケージの内容やバージョ
ンの情報等は別途用意してやる必要があります。

◎パッケージに関する情報

tgz ファイルの場合、上述のようにパッケージに関する情報等は tgz ファイ
ル以外の部分に用意しなければなりませんが、そのために用いられるファイル
がそのパッケージがあるディレクトリの diskXXX と言うファイルです。この 
XXX の部分には、そのパッケージが属するディスクセットの名称(a1 や ap1 
等)が入ります。

diskXXX ファイルは、最初に CONTENTS で始まるそのディスクセットに含まれ
るパッケージの一覧を示す行があり、その後は各パッケージのバージョンや内
容等を記述した行が 11 行ずつ続きます。例えば、a1 ディスクセットの 
diska1 ファイルは以下のような内容になっています。

CONTENTS: aaa_base basebin baseutil bash bsdlpr complibs cpio devs e2fsbn elflibs etc find getty
 glibc2 grep grub gzip hdsetup ide jbase jman kbd ldso less notekern pcmcia prutil ps readln22 r
ecjis scsi sh_utils shadow sysklogd sysvinit tar tcsh txtutils zoneinfo gpm lilo konbin konfnt l
oadlin modules pnp
aaa_base: Linux の基本的なファイルシステムパッケージ
aaa_base: 
aaa_base: 基本的なディレクトリ構造を作成して、GNU mtools 3.7 や 
aaa_base: fdutils-5.2 zip201、 unzip512 など、必須のバイナリをイン
aaa_base: ストールします。
aaa_base: 
aaa_base: 
aaa_base: 
aaa_base: 
aaa_base: 
aaa_base: 
basebin:  /bin と /usr/bin へインストールする各種コマンド
basebin:  
basebin:  以下のようなシステムコマンドをまとめています.

後述する installpkg コマンドや pkgtool コマンドを用いてパッケージをイ
ンストールすると、このファイルの各パッケージの説明メッセージが画面に表
示されると共に、/var/log/packages ディレクトリにインストールしたパッケー
ジ名としてファイル名やサイズ、含まれるファイルのリストなどと共に登録さ
れます。

◎パッケージの操作方法

前述のように、tgz ファイルは tar と gzip のみで作成されているため、tar 
と gzip コマンドさえあれば手動でもインストールできますが、
/sbin/installpkg や /sbin/pkgtool コマンドを使ってインストールすると、
上記 /var/log/packages 以下にインストールしたファイルの情報が保存され、
不要になったパッケージは /sbin/removepkg コマンドで削除できるので便利
です。/var/log/packages ディレクトリには、インストールしたパッケージ名
のファイルが用意され、例えば find の場合は以下のような情報が記録されて
います。

パッケージ名:     find
圧縮時のパッケージのサイズ:     120 K
非圧縮時のパッケージのサイズ:     270 K
パッケージの所在: diska1
パッケージの内容:
find:     GNU find ユーティリティ 4.1
find:
find:     GNU 版の find, xargs, locate などのプログラム集です。
find:     find と xargs は、私の知る限り POSIX 1003.2 互換です。加
find:     えて、いくつかの Unix 由来の追加機能や GNU 独自の追加機
find:     能が入っています。
find:
FILE LIST:
./
usr/
usr/bin/
usr/bin/find
usr/bin/xargs
usr/bin/locate
usr/bin/updatedb
usr/man/
usr/man/man1/
usr/man/man1/xargs.1.gz
usr/man/man1/find.1.gz
.....

installpkg コマンドは指定したパッケージをインストールすると共に、
diska1 ファイルからこのパッケージに関する概要を抽出してこのファイルに
追加し、FILE LIST: 以下にインストールしたファイルを記録します。
removepkg コマンドはこのファイルを参照して、インストールしたファイルを
削除し、削除が成功すれば /var/log/packages 以下のファイルも削除してア
ンインストールを実行します。

パッケージ操作用ツールのうち installpkg と removepkg はパッケージ名を
引数として直接実行するコマンド、pkgtool はパッケージ管理ツールとしてこ
れらのコマンドを起動するラッパーになっています。pkgtool コマンドはパッ
ケージのインストール/アンインストール以外にインストールしたパッケージ
のリストや内容を表示する機能もあります。

これらパッケージ操作用ツールの実体はシェルスクリプトで、内部的に sed 
や head、cat と言った単機能のコマンドを組み合わせて複雑な処理を実現し
ています。パイプや一時ファイルなどを駆使して単機能ツールを組み合わせる
手法は UNIX の真骨頂であり、シェルスクリプトの教材としてこれらパッケー
ジ管理ツールの中身を調べてみるのも面白いかも知れません。

なお、installpkg/pkgtool を使う場合は自動的に処理されますが、手動で 
tgz ファイルをインストールする場合は以下の点に注意してください。

・パッケージは / を起点に配置されているので、tar で展開する場合、cd / 
  するか、-C オプションで / ディレクトリを指定して展開する必要があります。

・パッケージに /install/doinst.sh ファイルが存在する場合(存在しないこ
  ともあります)、パッケージを展開した後、/install/doinst.sh ファイルを
  実行(シェルスクリプトです)し、その後 rm -rf /install/ してください。

・手動でパッケージをインストールした場合、/var/log/packages 以下に情報
  が登録されないため、removepkg で削除することはできません。

◎◎ tgz パッケージの作成方法

tgz ファイルは基本的に make install で作成、インストールされるファイル
を固めただけなので tar と gzip を使って手動で作成することも可能ですが、
/sbin/makepkg というパッケージ作成用コマンドも用意されています。
makepkg コマンドを使えば、シンボリックリンクは自動的に 
install/doinst.sh スクリプトで作成するように設定されるのも便利な点です。

しかし makepkg コマンドはパッケージ名を引数に取り、カレントディレクト
リ以下のファイルを tar で固めて gzip で圧縮する機能しかありません。そ
のため、makepkg コマンドを実行するためには、実際に必要なファイル(実行
ファイルや設定ファイル)はあらかじめカレントディレクトリ以下に適切に配
置するという作業が必要になります。

「カレントディレクトリ以下に必要なファイルを配置する」ための決まった手
法は存在していませんが、最近の GNU configure スクリプトを採用している
ソフトウェアの場合、make install 時に prefix オプションでインストール
先のディレクトリを指定することができるので、この機能を使えば簡単にパッ
ケージを作成することができます。

以下に、例として gzip-1.2.4a.tar.gz をパッケージ化する手順を示します。
gzip-1.2.4a.tar.gz では make install 時の prefix オプションが有効なの
で、その機能を使ってカレントディレクトリの ./work/usr 以下にファイルを
インストールして、./work ディレクトリで makepkg コマンドを実行していま
す。

kojima@b5r# tar xvzpf gzip-1.2.4a.tar.gz 
gzip-1.2.4a/
gzip-1.2.4a/README
gzip-1.2.4a/NEWS
gzip-1.2.4a/INSTALL
....
kojima@b5r# cd gzip-1.2.4a
kojima@b5r# ./configure
checking for gcc
checking how to run the C preprocessor
checking for underline in external names
....
creating config.status
creating Makefile
kojima@b5r# make
gcc -c -DASMV -DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DDIRENT=1 -O gzip.c
gcc -c -DASMV -DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DDIRENT=1 -O zip.c
gcc -c -DASMV -DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DDIRENT=1 -O deflate.c
...
ln gzip gunzip
ln gzip zcat
kojima@b5r# mkdir -p work/usr
kojima@b5r# make install prefix=`pwd`/work/usr
if test ! -d /home/kojima/work/gzip-1.2.4a/work/usr/man; then \
   mkdir /home/kojima/work/gzip-1.2.4a/work/usr/man; fi
....
kojima@b5r# cd work/
kojima@b5r# ls usr/bin/
gunzip*  gzexe*   gzip*    zcat*    zcmp*    zdiff*   zforce*  zgrep*   zmore*   znew*
kojima@b5r# makepkg gzip.tgz

Slackware package maker, version 1.0.

Searching for symbolic links:

No symbolic links were found, so we won't make an installation script.
You can make your own later in ./install/doinst.sh and rebuild the
package if you like.

This next step is optional - you can set the directories in your package
to some sane permissions. If any of the directories in your package have
special permissions, then DO NOT reset them here!

Would you like to reset all directory permissions to 755 (drwxr-xr-x) and
directory ownerships to root.root ([y]es, [n]o)? y

mode of . retained as 0755 (rwxr-xr-x)
mode of ./usr retained as 0755 (rwxr-xr-x)
mode of ./usr/man retained as 0755 (rwxr-xr-x)
....

tar: gzip.tar is the archive; not dumped

Gzipping gzip.tar...

Renaming gzip.tar.gz to gzip.tgz...

Package creation complete.

kojima@b5r# ls
gzip.tgz  usr/

kojima@b5r# tar tzvf gzip.tgz 
drwxr-xr-x kojima/users      0 2001-11-01 18:58 ./
drwxr-xr-x kojima/users      0 2001-11-01 18:57 usr/
drwxr-xr-x kojima/users      0 2001-11-01 18:57 usr/man/
drwxr-xr-x kojima/users      0 2001-11-01 18:57 usr/man/man1/
-rw-r--r-- kojima/users  13923 2001-11-01 18:57 usr/man/man1/gzip.1
-rw-r--r-- kojima/users   1296 2001-11-01 18:57 usr/man/man1/gzexe.1
-rw-r--r-- kojima/users    802 2001-11-01 18:57 usr/man/man1/zdiff.1
....

上記の例では make install したファイルをそのままパッケージ化しています
が、make install だけではインストールされない文書類も usr/doc ディレク
トリにコピーしておけば参照が必要な時に便利ですし、man ページやドキュメ
ントの類いは gzip で圧縮、バイナリファイルは strip で不要なシンボルを
削除する等の処理をすれば多少なりともパッケージのサイズを減らすことが可
能です。

一方、make install 時に prefix オプションが効かないソフトウェアの場合
は必要なファイルをリストアップするのがかなり面倒になります。

ソフトウェアを実際にはインストールせず、ファイルがどこにインストールさ
れるかを調べる場合は make -n install コマンドを実行した際のログを保存し、
実行されている install コマンドをチェックするという方法があります。

ソフトウェアを実際にインストールしてしまっていい場合は find の -cnewer 
オプションが便利です。以下の例では /tmp/datetest ファイルが日時のチェッ
クファイルで、make install でインストールされた /tmp/datetest ファイル
よりも新しいファイルを表示します。

# touch /tmp/datetest
# make install
# find / -cnewer /tmp/datetest

これで見つかったファイルを適切なディレクトリ以下に配置して makepkg コ
マンドでパッケージ化することができます。

上記 find コマンドを使ってインストールしたファイルを検索する手順を自動
化するために instmon と呼ばれるスクリプトが開発されています
(http://hal.csd.auth.gr/~vvas/instmon/URL)。

instmon コマンドをオプションを指定せずに実行すると起動時間が記録された
上で sub shell が起動されます。その shell の中でインストール作業を行う
と、新しくインストールしたファイルや変更を加えたファイルの記録が残され、
インストール終了後、 sub shell を抜け、作成する形式を指定して(instmon 
は tar 以外にも rpm や deb 形式のファイルを作成することも可能です)
instmon コマンドを実行すれば、先の sub shell の中でインストールしたファ
イルを抽出してパッケージ化してくれます。

bash-2.04# instmon
/usr/local/bin/instmon: type: strace: not found
/usr/local/bin/instmon: type: installwatch: not found
instmon: Monitoring package strace-4.4 ...
instmon: Recording timestamp ...
instmon: Spawning /bin/bash ...
instmon: Perform the installation, then type `exit' to continue ...
bash-2.04# make install
/bin/install -c strace /usr/local/bin/strace
/bin/install -c ./strace-graph /usr/local/bin/strace-graph
/bin/install -c -m 644 ./strace.1 /usr/local/man/man1/strace.1
bash-2.04# exit
exit
instmon: Detecting changes ...
instmon: Finished.

bash-2.04# instmon --tar           
instmon: Acting on package strace-4.4 ...
instmon: Creating tar archive in /tmp ...
instmon: Finished.

bash-2.04# tar tvf /tmp/strace-4.4.tar 
-rwxr-xr-x root/root    159427 2001-11-02 10:28 usr/local/bin/strace
-rwxr-xr-x root/root      8323 2001-11-02 10:28 usr/local/bin/strace-graph
-rw-r--r-- root/root     18571 2001-11-02 10:28 usr/local/man/man1/strace.1

インストールするファイルが単純な場合は instmon が作成した tar ファイル
をそのまま圧縮して tgz 形式にすることも可能ですが、シンボリックリンク
等がある場合は作成した tar ファイルを適当なディレクトリに展開し、
makepkg コマンドで tgz 化する方が確実でしょう。

make install コマンドで直接インストールしたソフトウェアは pkgtool 等で
検出できないため削除が難しいという問題がありますが、make install でイ
ンストールした後に instmon 等を使ってパッケージ化し、再度 installpkg 
でファイル類を上書きするようにインストールしておけば pkgtool や 
removepkg コマンドで削除可能になります。

◎終りに

Slackware 系のパッケージは rpm や deb のように洗練されたパッケージ管理
の仕組みは用意されていませんが、その分、誰でも簡単に自分用のパッケージ
を作成することができるでしょう。PC-UNIX の面白さの一つは、自分が使うソ
フトは自分の環境に合わせて構築することができることです。与えられたコン
パイル済みのバイナリパッケージをインストールすることに飽きたら、ぜひ一
度自分の手でソースコードからコンパイルしてパッケージを作ってみてくださ
い。そうすることで、Linux の新しい面白さが見えてくるに違いありません。

---------------------------------------------------------------------------
Subject: [plamo:14650] Re: OpenSSH 3.4 への UpGrade
From: KOJIMA Mitsuhiro 
To: plamo@linet.gr.jp
Date: Mon, 08 Jul 2002 18:13:47 +0900 (JST)
Reply-To: plamo@linet.gr.jp
X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI)


まぁ議論は終ったようですが、ざっと書いてみたのでご参考までに。

From: "Tadashi Nakamura" 
Subject: [plamo:14644] Re: OpenSSH 3.4 への UpGrade
Date: Mon, 8 Jul 2002 14:54:47 +0900

> ./confgiure --help を眺めると、
> --with-tcp-wappers
> の他に
> (1) --with-zlib path=
> (2) --with-openssl path=
> という option が目に入りました。
> zlib や openssl と言いますと OpenSSH の初めての Install の際に
> 前段階として Install したような記憶があります。
> 
> (1) や (2) のような Option はこの際、ほっといていいのでしょうか。

一般論ですが、手元でパッケージを作る際の手順は以下の通りです。

1) まず ./configure だけで実行してみて必要なライブラリやヘッダファイル
   が揃っているか確認する。必要なライブラリやヘッダファイルが無い場合
   は configure がエラー終了するので、何が足りないかを確認し追加する

2) ./configure --help してサポートしている機能のうち必要な機能がデフォ
   ルトで No になっていないかを確認する。最近は少なくなったけど、
   --enable-shared 等を指定しないと shared library を使わず static link 
   するものがあった

3) たいてい ./configure だけだとインストール先が /usr/local になるので、 
   ./configure --prefix=/usr でインストール先を /usr/ 以下にして make 
   を実行

4) make できれば 一般ユーザの状態で mkdir -p work/usr ; 
  make install prefix=`pwd`/work/usr などを実行して、インストール先を 
  /sbin や /etc 等に決め打ちしている部分が無いかを確認。

5) インストール先を決め打ちしている部分が無ければ、root になって make
   clean; make を再実行し、rm -rf work/usr/* ; make install
   prefix=`pwd`/work/usr で root 権限で必要なファイルをインストール

6) インストール先を決め打ちしている場合はちょっと手間だけど、実際に 
   make install してどこに何がインストールされるかを確認する。その際は 
   make install | tee install.log とか、touch /tmp/check ; make install
   ; find / -newer /tmp/check 等を使えば便利

7) 6) になった場合は、仕方ないので install.log を見ながら、work/usr 以
   下に再現できるように mkdir & cp なスクリプトを作成。ただし、perl と
   かはそれで拾うのは大変すぎるので、cp -a /usr/lib/perl work/usr/lib 
   みたいにインストールした実体を直接持ってくることもある(笑)

8) work/usr 以下に必要なパッケージを持ってこれればドキュメントの類を 
   /usr/doc/ あたりにコピーして work ディレクトリで 
   makepkg hogehoge.tgz を実行

1)〜6) あたりの試行錯誤の部分は表には見えませんが、それらを踏まえた 
7),8) のあたりは ftp://ftp.linet.gr.jp/pub/Plamo/Plamo-src あたりの各
ディレクトリに PlamoBuild. みたいな感じでスクリプトを置
いているので興味ある人は御覧くださいませ。

# 話題になっている opsnssh-3.4p1 だと 
# ftp://ftp.linet.gr.jp/pub/Plamo/Plamo-src/plamo/n1/openssh/PlamoBuild.openssh-3.4p1
# あたり

------
こじま

---------------------------------------------------------------------------
Subject: [plamo:14651] Re: OpenSSH 3.4 への UpGrade
From: KATOH Yasufumi 
To: plamo@linet.gr.jp
Date: Mon, 08 Jul 2002 18:19:58 +0900
Reply-To: plamo@linet.gr.jp

加藤泰文です.

参考になります.是非 Tips ページに.:-)

>>> On Mon, 08 Jul 2002 18:13:47 +0900 (JST)
    in message   "[plamo:14650] Re: OpenSSH 3.4 への UpGrade"
                  KOJIMA Mitsuhiro-san wrote:

> 4) make できれば 一般ユーザの状態で mkdir -p work/usr ; 
>   make install prefix=`pwd`/work/usr などを実行して、インストール先を 
>   /sbin や /etc 等に決め打ちしている部分が無いかを確認。

これを実行して「決めうちがないかどうか確認」というのはどうするのでしょ
うか?

# 私は 6) で挙っていた find -newer (-cnewer) の手法で確認しています.
# あと make -n install で出力を見るとか.

> 7) 6) になった場合は、仕方ないので install.log を見ながら、work/usr 以
>    下に再現できるように mkdir & cp なスクリプトを作成。ただし、perl と
>    かはそれで拾うのは大変すぎるので、cp -a /usr/lib/perl work/usr/lib 
>    みたいにインストールした実体を直接持ってくることもある(笑)

あるある (笑) .

-- 
==============================================
((((    加藤泰文 (会社) karma@murata.co.jp
○-○            (個人) karma@ae.wakwak.com
==============================================
(Web Page) http://www.ae.wakwak.com/%7Ekarma/
==============================================
   イタリアの音楽のページを更新 (July 1)

---------------------------------------------------------------------------
Subject: [plamo:14653] Re: OpenSSH 3.4 への UpGrade
From: Shun-ichi TAHARA (田原 俊一) 
To: plamo@linet.gr.jp
Date: Mon, 08 Jul 2002 18:36:03 +0900 (JST)
Reply-To: plamo@linet.gr.jp
X-Mailer: Mew version 2.0.50 on XEmacs 21.4.8 (Honest Recruiter)

From: KATOH Yasufumi 
Message-Id: 

> > 4) make できれば 一般ユーザの状態で mkdir -p work/usr ; 
> >   make install prefix=`pwd`/work/usr などを実行して、インストール先を 
> >   /sbin や /etc 等に決め打ちしている部分が無いかを確認。
> 
> これを実行して「決めうちがないかどうか確認」というのはどうするのでしょ
> うか?

私は、

make -n install prefix=`pwd`/pkgroot/usr | less

として、 /[gk]install で検索をかけます。
# mkinstalldir と ginstall に引っかかるんですね。
_______________________________
田原 俊一   jado@flowernet.gr.jp, shunichi_tahara@zenrin.co.jp
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
---------------------------------------------------------------------------
Subject: [plamo:14657] Re: OpenSSH 3.4 への UpGrade
From: KOJIMA Mitsuhiro 
To: plamo@linet.gr.jp
Date: Mon, 08 Jul 2002 19:24:30 +0900 (JST)
Reply-To: plamo@linet.gr.jp
X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI)


From: KATOH Yasufumi 
Subject: [plamo:14651] Re: OpenSSH 3.4 への UpGrade
Date: Mon, 08 Jul 2002 18:19:58 +0900

> > 4) make できれば 一般ユーザの状態で mkdir -p work/usr ; 
> >   make install prefix=`pwd`/work/usr などを実行して、インストール先を 
> >   /sbin や /etc 等に決め打ちしている部分が無いかを確認。
> 
> これを実行して「決めうちがないかどうか確認」というのはどうするのでしょ
> うか?

ここで言っている「決め打ちしている部分」というのは、make install 時の 
prefix に関わらず、/sbin や /etc の下にファイルを置きに行くもののこと
なので、一般ユーザの権限で実行すればそれらのファイルは書けないからエラー
になるんで見当が付く、くらいの意味です。

# エラーになって make が止まればその先は分からない、という問題もあるこ
# とはあるんだけど。

From: Shun-ichi TAHARA (田原 俊一) 
Subject: [plamo:14653] Re: OpenSSH 3.4 への UpGrade
Date: Mon, 08 Jul 2002 18:36:03 +0900 (JST)

> 私は、
> 
> make -n install prefix=`pwd`/pkgroot/usr | less
> 
> として、 /[gk]install で検索をかけます。
> # mkinstalldir と ginstall に引っかかるんですね。

どのパッケージだったか忘れたけど install を使わずに cp だけが頑張る、
という強者もいたぞ(笑)

あと、個人的にイヤなのは Makefile.PL を使っている perl 関連のパッケー
ジですね。このヘンも install を使わずに perl 的に処理しているんじゃな
かったかな。

-------
こじま

---------------------------------------------------------------------------
Subject: [plamo:14658] Re: OpenSSH 3.4 への UpGrade
From: Tetsuya Ohnishi 
To: plamo@linet.gr.jp
Date: Mon, 08 Jul 2002 19:33:33 +0900 (JST)
Reply-To: plamo@linet.gr.jp
X-Mailer: Mew version 2.2rc1 on Emacs 21.1 / Mule 5.0 (SAKAKI)

大西@理研です。

From: KOJIMA Mitsuhiro 
Subject: [plamo:14657] Re: OpenSSH 3.4 への UpGrade
> あと、個人的にイヤなのは Makefile.PL を使っている perl 関連のパッケー
> ジですね。このヘンも install を使わずに perl 的に処理しているんじゃな
> かったかな。

おっしゃる通りです。
なにせ

Extutils::Install

という install のための標準 library がありますから・・(^^

# Makefile かくための、Extutils::MakeMaker とか。

----
理化学研究所 RI ビーム科学研究室
大西哲哉
oonishi@rarfaxp.riken.go.jp

---------------------------------------------------------------------------
Subject: [plamo:14659] Re: OpenSSH 3.4 への UpGrade
From: Shun-ichi TAHARA (田原 俊一) 
To: plamo@linet.gr.jp
Date: Mon, 08 Jul 2002 19:45:34 +0900 (JST)
Reply-To: plamo@linet.gr.jp
X-Mailer: Mew version 2.0.50 on XEmacs 21.4.8 (Honest Recruiter)

From: KOJIMA Mitsuhiro 
Message-Id: <20020708.192430.104035873.kojima@linet.gr.jp>

> > make -n install prefix=`pwd`/pkgroot/usr | less
> > 
> > として、 /[gk]install で検索をかけます。
> > # mkinstalldir と ginstall に引っかかるんですね。
> 
> どのパッケージだったか忘れたけど install を使わずに cp だけが頑張る、
> という強者もいたぞ(笑)

Autoconfものだと、Makefileを読むのが骨なので上記のようにしますが、そう
でないやつは、prefix なんて信用できないので、最初から Makefile を読み
ます :-)。

# cp な Autoconf ものとか嫌だな…

> あと、個人的にイヤなのは Makefile.PL を使っている perl 関連のパッケー
> ジですね。このヘンも install を使わずに perl 的に処理しているんじゃな
> かったかな。

あとは、謎に満ち満ちた Mozilla 関連ですか。
Nautilusで暮らそうと思ったら、結局 gtkembedなコンポーネントがいりそう
なので今作ってますが、RedHatのspecがなかったら死んでますな。
_______________________________
田原 俊一   jado@flowernet.gr.jp, shunichi_tahara@zenrin.co.jp
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
---------------------------------------------------------------------------
Subject: [plamo:14665] Re: OpenSSH 3.4 への UpGrade
From: Hiroshi Futami 
To: plamo@linet.gr.jp
Date: Mon, 08 Jul 2002 21:16:55 +0900 (JST)
Reply-To: plamo@linet.gr.jp
X-Mailer: Mew version 2.2 on Emacs 21.2 / Mule 5.0 (SAKAKI)

ふたみなのです。

From: KOJIMA Mitsuhiro 
Subject: [plamo:14650] Re: OpenSSH 3.4 への UpGrade
Date: Mon, 08 Jul 2002 18:13:47 +0900 (JST)

> 1)〜6) あたりの試行錯誤の部分は表には見えませんが、それらを踏まえた 
> 7),8) のあたりは ftp://ftp.linet.gr.jp/pub/Plamo/Plamo-src あたりの各
> ディレクトリに PlamoBuild. みたいな感じでスクリプトを置
> いているので興味ある人は御覧くださいませ。

 こういうスクリプトみたいなものは、CVSで管理しておくと楽だと思うです。最近
某2chで教えてもらったのはitojunさんのページ。

 http://www.itojun.org/hack/cvs/tut-kernel.html

 /etc 以下とかホームディレクトリ以下のドットファイルとかもCVSで管理して
おくと便利だと思う。

# 最初にリポジトリを作るのがちょっと面倒ですが(^_^;)

-- ふ

---------------------------------------------------------------------------
Subject: [plamo:14667] Re: OpenSSH 3.4 への UpGrade
From: shingo-y@spacelan.ne.jp (YAMAGUCHI Shingo)
To: plamo@linet.gr.jp
Date: Mon,  8 Jul 2002 21:39:28 +0900 (JST)
Reply-To: plamo@linet.gr.jp
X-Mailer: mnews [version 1.22PL4] 2000-05/28(Sun)

山口@金沢市 です。

<20020708.181347.71088568.kojima@linet.gr.jp>の記事において
こじまみつひろさんは書きました。

> まぁ議論は終ったようですが、ざっと書いてみたのでご参考までに。

私の場合この手順の一部をはしょっていることが多いのでクセの
あるアーカイブの場合にクセを忘れててはまることがよくあります。
# e2fsprogs とか

参考になるかわかりませんが補足として...

> 4) make できれば 一般ユーザの状態で mkdir -p work/usr ; 
>   make install prefix=`pwd`/work/usr などを実行して、インストール先を 
>   /sbin や /etc 等に決め打ちしている部分が無いかを確認。

最近は少ないですが、Makefile 中の prefix などをソフトに組み込んで
しまうタイプのもので、これをすると prefix が変わったということで
コンパイルからやり直すものがあります。
# fvwm2 とか

あと、ものによっては、DESTDIR といった変数が用意されていて、
これに仮インストール先を設定することができる場合もあります。
-- 
山口 真悟 (YAMAGUCHI Shingo)
shingo-y@spacelan.ne.jp
shingo@kip.iis.toyama-u.ac.jp

---------------------------------------------------------------------------