【发布时间】:2012-05-10 12:22:11
【问题描述】:
我第一次尝试为 Debian 打包一个小型库。为此,我使用了官方的 Debian 政策手册,但两天后我遇到了一个无法解决的问题。
这是我的包装方式:
- 创建压缩包(此处为 libvl_1.0.orig.tar.gz)
- 使用dh_make生成debian目录下的debian conf文件
- 正确修改控制文件、变更日志和版权。
- 使用 dpkg-buildpackage 命令构建包。
到这里,没有问题。但由于它是一个库,我需要在安装它时创建一些符号链接,这与库的 SONAME 相关。这里我的库叫做 libvl。例如,我正在构建一个名为 libvl.so.1.0 的文件,因为它是第一个版本。为了做对,我想我应该创建这样的符号链接:
libvl.so -> libvl.so.1 -> libvl.so.1.0
为此,我尝试在使用 make 运行安装过程时创建这些链接。如果您启动“make install”命令,这将起作用。但是当使用 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
我想问题就在那里。我将不胜感激对此的任何回答或评论:-)
【问题讨论】:
标签: package shared-libraries debian symlink