2017-04-10 75 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包僅供我個人使用)

相關問題