[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:09918] Re: alien command
佐野@浜松です。
In article <199907210818.RAA07474@xxxxxxxxxxxxxxxxxxxxxx>
nshimizu@xxxxxxxxxxxxxxxxxxxxxx (Naohiko Shimizu) さん writes:
> 佐野さんありがとうございました。
いえ。Debian パッケージ作成は面白いですよ。いろいろな約束やコマンドを
覚えないといけませんが。
> ところで、もう一つ、今使おうとしているRPMのファイルはインストール時に
> シェアードライブラリを作成しているのですが、alienコマンドは自動では
> これをサポートしていません。その場合にもrulesを書き換えてシェアード
> ライブラリを作成するようにすればよいという理解で良いのでしょうか?
具体的な内容がよくわかりませんが、共有ライブラリに関しては
packaging manual の "12. Shared libraries" をじっくり読まれるのが
良いと思います。日本語訳もあります。
特に以下のあたり。
Secondly, your package should include the symlink that ldconfig would
create for the shared libraries. For example, the libgdbm1 package
should include a symlink from `/usr/lib/libgdbm.so.1' to
`libgdbm.so.1.7.3'. This is needed so that ld.so can find the library
in between the time dpkg installs it and ldconfig is run in the
postinst script. Futhermore, and *this is very important*, the library
must be placed before the symlink pointing to it in the `.deb' file.
This is so that by the time dpkg comes to install the symlink
(overwriting the previous symlink pointing at an older version of the
library) the new shared library is already in place. Currently the way
to ensure the ordering is done properly is to install the library in
the appropriate `debian/tmp/.../lib' directory before creating the
symlink, by putting the commands in the `debian/rules' in the
appropriate order.
それと
Any package installing shared libraries in a directory that's listed
in `/etc/ld.so.conf' or in one of the default library directories of
ld.so (currently, these are `/usr/lib' and `/lib') must call ldconfig
in its postinst script if and only if the first argument is
`configure'. However, it is important not to call ldconfig in the
postrm or preinst scripts in the case where the package is being
upgraded (see section 6.3, `Details of unpack phase of installation or
upgrade'), as ldconfig will see the temporary names that dpkg uses for
the files while it is installing them and will make the shared library
links point to them, just before dpkg continues the installation and
removes the links!
ですね。
「postinst スクリプトで、最初の引数が "configure" の場合に限って
ldconfig を実行しなさい。postrm や preinst からはけして ldconfig を
呼び出してはいけない」
ということです。
# 共有ライブラリの「作成」であれば gcc に
# -shared -Wl,-soname,libfoo.so.y -o libfoo.so.y.x *.o といった感じの
# オプションを付ける、とかいう話なんですが、たぶんここで必要なのは
# 共有ライブラリのインストールですね。
--
#わたしのおうちは浜松市、「夜のお菓子」で有名さ。
<xlj06203@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)