【问题标题】:Debian / Ubuntu package installed in root as defaultDebian / Ubuntu 软件包默认安装在根目录下
【发布时间】:2014-12-15 18:27:20
【问题描述】:

用一些库文件 (*.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

还有一些配置设置在 debian/control,Makefile 中的 $DESTDIR。

【问题讨论】:

    标签: linux ubuntu makefile deb dpkg


    【解决方案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 文件中。

    【讨论】:

    • 是的,您就是这样做的。大多数上游项目已经有一个 Makefile 可以做到这一点(可能以 DESTDIR 为模,但这也是 Debian 之外的一项长期传统),但如果没有,您将需要调整它,一个方式或其他方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2014-03-10
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 2019-02-16
    • 2016-10-08
    相关资源
    最近更新 更多