[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 (佐野 武俊)