Debian / Ubuntu软件包默认安装在root中



创建了一个包含一些库文件(*.so(的简单 debian/ubuntu 软件包。

工作正常,除了,它将它们默认安装在根路径"/"中。

由于我已经重新创建了要输出到 $DESTDIR/ 的 Makefile 而不是我在 Makefile 中提供的"通常"目录,因此在从源代码编译时,我现在如何设置文件安装位置的路径现在应该?我知道使用 dh_make 创建包时有多种选择,"s"是默认选项。尽管如此,似乎找不到任何关于告诉 dpkg 放置已安装文件的信息。

其次,仅包含".so"文件的Deb库包应该仍然是"单个二进制文件",因为我发现使用该是为了开发目的?由于这是一个库,我只想确保这不是文件安装在错误位置的原因。我的意思是.so文件和头文件安装?

我用过什么:

dh_make -e my@email.com -f ../myfile-1.0.tar.gz
dpkg-buildpackage -rfakeroot

和一些配置设置我 debian/control,$DESTDIR在 Makefile 中。

看起来它相当简单,但非常令人困惑。这有效,不确定是否有更好的解决方案。

在我的制作文件中,我有几个变量

InstallTo = /usr/lib
install:
      mkdir -p $(DESTDIR)$(InstallTo)
      cp $FILE_TO_COPY $(DESTDIR)$(InstallTo)

这样,它将在 *.deb 文件中创建目录树。我在使用/usr/local/lib 而不是/usr/lib/时遇到了一些麻烦,rmdir 在尝试删除它时抱怨它没有文件(只有目录(。不知道为什么,但将其更改为/usr/lib。

既然有人投票赞成,我猜有人也在寻找答案,这是我的解决方案。如果有的话,也许有人可以提供更好的。

请注意,$DESTDIR变量是dh_make建议用户在我们的 Makefile 中使用的变量。它是 dpkg 构建程序的位置以及安装程序的位置的路径,以便它可以包含在.deb文件中。

最新更新