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

时间:2014-12-15 18:27:20

标签: linux ubuntu makefile deb dpkg

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

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

因为我已经重新创建了我的Makefile以输出到 $ DESTDIR / 而不是我在Makefile中提供的“通常”目录,所以当从源代码编译时,我现在如何设置路径现在应该安装哪些文件?我知道使用 dh_make 创建包时有几种选择,“s”是默认包。但是,似乎无法找到告诉dpkg放置已安装文件的地方。

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

我用过的东西:

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

和一些配置设置为debian / control,Makefile中的$ DESTDIR。

1 个答案:

答案 0 :(得分:1)

似乎这很简单,但却很混乱。这有效,不确定是否有更好的解决方案。

在我的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文件中。