我第一次尝试为 Debian 打包一个小型库。为此,我使用了官方的 Debian 政策手册,但两天后我遇到了一个无法解决的问题。
这是我包装的方式:
到这里为止,没有问题。但由于它是一个库,我需要在安装它时创建一些符号链接(symbolic link),这与库的 SONAME 有关。这里我的库叫做 libvl。例如,我正在构建一个名为 libvl.so.1.0 的文件,因为它是第一个版本。为了做对,我想我应该创建这样的符号链接(symbolic link):
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
我想问题就在那里。我将不胜感激对此的任何回答或评论:-)
最佳答案
见 man dh_link
我在 github 上有一个示例要点,它创建了 /bin/hello
以及指向它的符号链接(symbolic link) /bin/helloworld
你可以像这样在你的系统上演示它:
# Create the deb package
curl -O https://gist.github.com/RichardBronosky/5358867/raw/deb-packaging-example.sh
bash deb-packaging-example.sh
# Install the deb package
dpkg --install hello-world*.deb
# Check the scripts
ls -la /bin/hello*
/bin/hello
/bin/helloworld
secret 是
hello-world-0.1/debian/hello-world.links
由 line 18 (at the time of this writing) 创建的文件的脚本。看看这个...https://gist.github.com/RichardBronosky/5358867
关于package - 打包库(Debian)时创建符号链接(symbolic link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10533900/