我想构建一个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/
但是当我使用以下debuild
覆盖运行debian/rules
时:
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
文件夹)。即我希望配置驻留在--prefix
选项指定的目录中。即我想要生成以下包结构:
|- /DEBIAN
|- /opt/d-ph/my_app
|- bin/(my binaries)
|- etc/(my configuration)
|- include/
|- lib/
|- share/
|- /share/
在准备程序包目录结构时,如何阻止debuild
将etc
文件夹移出已配置的--prefix
文件夹?
答案 0 :(得分:0)
我最终覆盖了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
包仅供我个人使用)