【问题标题】:How to prevent `debuild` from moving the `etc` folder out of the configured `--prefix` folder?如何防止`debuild`将`etc`文件夹移出配置的`--prefix`文件夹?
【发布时间】:2017-04-10 11:15:44
【问题描述】:

我想构建一个 Debian/Ubuntu 软件包,在 ./configure'd --prefix 下安装一个应用程序。

当我运行./configure --prefix=/opt/d-ph/my_app && make && sudo make install 时,我最终得到以下文件夹结构:

/opt/d-ph/my_app
 |- bin/(my binaries)
 |- etc/(my configuration)
 |- include/
 |- lib/
 |- share/

但是当我使用以下debian/rules 覆盖运行debuild 时:

override_dh_auto_configure: 
    dh_auto_configure -- --prefix=/opt/d-ph/my_app

然后我最终得到以下包结构:

 |- /DEBIAN
 |- /etc/(my configuration)
 |- /opt/d-ph/my_app
     |- bin/(my binaries)
     |- include/
     |- lib/
     |- share/
 |- /share/

我不希望我的包将其配置(即/etc 文件夹)安装在/etc 根目录下。 IE。我希望配置驻留在--prefix 选项指定的目录中。 IE。我想生成以下包结构:

|- /DEBIAN
|- /opt/d-ph/my_app
    |- bin/(my binaries)
    |- etc/(my configuration)
    |- include/
    |- lib/
    |- share/     
|- /share/

在准备包目录结构时,如何防止debuildetc 文件夹移出配置的--prefix 文件夹?

【问题讨论】:

  • 这样做会违反 FHS 的重要部分和其他适用标准。你希望通过打破这个来实现什么?
  • 也许最后一种侵入式解决方法是将/etc 中的符号链接放入您希望在/opt/d-ph/my_app/etc 中拥有的文件和目录。
  • 我想为应用程序的最新稳定版本(不是我的)构建一个 deb 包。发行版存储库(Ubuntu 14.04)中的应用程序太旧(并且没有 PPA)。我决定,我不想在 /usr 前缀下安装应用程序,因为我不想维护任何二进制不兼容。相反,我想为这个应用程序构建一个类似可移植的 .deb 版本供我自己使用。此 .deb 不应触及系统范围内的任何内容。这就是为什么我不想将配置存储在根目录/etc

标签: ubuntu debian deb


【解决方案1】:

我最终覆盖了dh_installdeb 构建步骤。我基本上恢复了将etc 文件夹移回配置的--prefix 下。

APP_PREFIX=/opt/d-ph/my_app
ETC_DIR_PATH=$(CURDIR)/debian/my_app/etc

(...)

override_dh_installdeb:
    dh_installdeb

    # move the /etc folder
    if [ -d $(ETC_DIR_PATH) ]; then mv $(ETC_DIR_PATH) $(CURDIR)/debian/my_app$(APP_PREFIX); fi

    # tell dpkg not to look for the etc files anymore
    > $(CURDIR)/debian/my_app/DEBIAN/conffiles

正如@tripleee 在问题下所评论的那样,这样做可能不好,所以风险自负。不过,它对我有用,这对我来说很重要(生成的 .deb 包仅供我个人使用)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    相关资源
    最近更新 更多