Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 默认情况下,Debian/Ubuntu包安装在root中_Linux_Ubuntu_Makefile_Deb_Dpkg - Fatal编程技术网

Linux 默认情况下,Debian/Ubuntu包安装在root中

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库包应该仍然是一个“单二进制文件”,因为我知道使用库是为了开发目

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

工作正常,但它会将它们默认安装在根路径“/”中

由于我重新创建了Makefile以输出到$DESTDIR/而不是Makefile中提供的“常用”目录,因此在从源代码处编译时,现在如何设置文件的安装路径?我知道在使用dh_make创建包时有几种选择,“s”是默认值。不过,似乎找不到任何关于告诉dpkg将安装的文件放在哪里的信息

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

我用过:

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之外的一个悠久传统),但如果没有,您将需要以某种方式对其进行调整。