私は初めてDebian用に小さなライブラリをパッケージ化しようとしています。このために、私は公式のDebianポリシーマニュアルを使用していますが、2日後に修正できない問題が発生しました。
これは私がパッケージしている方法です:
- tarballの作成(ここではlibvl_1.0.orig.tar.gz)
- dh_makeを使用してdebianディレクトリにdebianconfファイルを生成する
- 制御ファイル、変更ログ、および著作権を適切に変更します。
- dpkg-buildpackageコマンドを使用してパッケージをビルドします。
ここまでは問題ありません。ただし、ライブラリであるため、インストール中にいくつかのシンボリックリンクを作成する必要があります。これは、ライブラリのSONAMEに関連しています。ここで私のライブラリはlibvlと呼ばれています。たとえば、最初のバージョンであるlibvl.so.1.0という名前のファイルを作成しています。それを正しく行うには、次のようなシンボリックリンクを作成する必要があると思います。
libvl.so -> libvl.so.1 -> libvl.so.1.0
これを行うために、makeを使用してインストールプロセスを実行しながら、これらのリンクを作成しようとしています。これは、「makeinstall」コマンドを起動した場合に機能します。しかし、dpkgを使用してインストールする場合、リンクが作成されていて理由がわからない場合は何もありません。postinstスクリプトも使用しようとしましたが、結果はありませんでした。これが私のmakefileの下にあります:
DESTDIR =
LIBDIR = usr/lib
LIB = libvl.so
MAJOR = 1
MINOR = 0
CC = gcc
CC_FLAGS = -Wall -ansi -Isrc/
LD_FLAGS =
LN = ln -s
SRC = very_long.c
OBJ = $(SRC:.c=.o)
all: libvl
libvl: $(OBJ)
$(CC) -fPIC -c $(SRC)
$(CC) -shared -a -o $(LIBDIR)/$(LIB).$(MAJOR).$(MINOR) $(OBJ)
install:
install -d -m 0755 -o root -g root $(DESTDIR)/$(LIBDIR)
install -m 0755 -o root -g root $(LIBDIR)/$(LIB).$(MAJOR).$(MINOR) $(DESTDIR)/$(LIBDIR)
$(LN) /usr/lib/$(LIB).$(MAJOR).$(MINOR) /usr/lib/$(LIB).1
$(LN) /usr/lib/$(LIB).$(MAJOR) /usr/lib/$(LIB)
clean:
rm $(OBJ) $(LIBDIR)/$(LIB).1.0
問題はそこにあると思います。私はこれについての答えやコメントをいただければ幸いです:-)