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