2017-04-10 112 views
0

我想构建一个Debian/Ubuntu软件包,它安装了一个应用程序./configure'd --prefix如何防止`debuild`将'etc`文件夹移出已配置的`--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文件夹)。即我希望配置位于--prefix选项指定的目录中。即我想生成以下包结构:

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

如何防止debuild从移动etc文件夹出配置--prefix文件夹中,准备包目录结构是什么时候?

+0

这样做会违反FHS和其他适用标准的重要部分。打破这个目标你希望达到什么目的? – tripleee

+0

也许最后一种侵入性的解决方法是将'/ etc'中的符号链接放在'/ opt/d-ph/my_app/etc'中的文件和目录中。 – tripleee

+0

我想为应用程序的最新稳定版本(不是我的)构建一个deb包。发行版的回购(Ubuntu 14.04)中的应用程序太旧了(并且没有PPA)。我决定,我不想在'/ usr'前缀下安装应用程序,因为我不想维护任何二进制不兼容性。相反,我想构建一个类似便携式的.deb版本的应用程序供我自己使用。这个.deb不应该触及全系统的任何东西。这就是为什么我不想将配置存储在根目录'/ etc'中的原因。 –

回答

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包仅供我个人使用)

相关问题