Linux 默认情况下,Debian/Ubuntu包安装在root中
用一些库文件(*.so)创建了一个简单的debian/ubuntu包 工作正常,但它会将它们默认安装在根路径“/”中 由于我重新创建了Makefile以输出到$DESTDIR/而不是Makefile中提供的“常用”目录,因此在从源代码处编译时,现在如何设置文件的安装路径?我知道在使用dh_make创建包时有几种选择,“s”是默认值。不过,似乎找不到任何关于告诉dpkg将安装的文件放在哪里的信息 其次,一个只包含“.so”文件的Deb库包应该仍然是一个“单二进制文件”,因为我知道使用库是为了开发目的?由于这是一个库,我只想确保这不是文件安装在错误位置的原因。我的意思是.so文件和头文件的安装 我用过:Linux 默认情况下,Debian/Ubuntu包安装在root中,linux,ubuntu,makefile,deb,dpkg,Linux,Ubuntu,Makefile,Deb,Dpkg,用一些库文件(*.so)创建了一个简单的debian/ubuntu包 工作正常,但它会将它们默认安装在根路径“/”中 由于我重新创建了Makefile以输出到$DESTDIR/而不是Makefile中提供的“常用”目录,因此在从源代码处编译时,现在如何设置文件的安装路径?我知道在使用dh_make创建包时有几种选择,“s”是默认值。不过,似乎找不到任何关于告诉dpkg将安装的文件放在哪里的信息 其次,一个只包含“.so”文件的Deb库包应该仍然是一个“单二进制文件”,因为我知道使用库是为了开发目
dh_make -e my@email.com -f ../myfile-1.0.tar.gz
dpkg-buildpackage -rfakeroot
有些配置在Makefile中设置为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_建议用户在我们的Makefile中使用的变量。这是dpkg构建程序和安装程序的路径,以便将其包含在.deb文件中。是的,这就是您的操作方式。大多数上游项目已经有了一个
Makefile
,它可以做到这一点(可能是模块化的,这也是Debian之外的一个悠久传统),但如果没有,您将需要以某种方式对其进行调整。