2013-10-25 64 views
2

我已經採用了大型C項目App A的源代碼並對其進行了修改以生成我的版本App B.AppA和App B都編譯乾淨地在Debian和紅帽上,現在我想爲這兩個平臺構建二進制包。更改二進制打包應用程序的名稱及其喚醒命令

我需要做的最後修改是確保應用程序B可以與應用程序A一起安裝,不受任何干擾。我應該能夠在終端中喚起app-aapp-b,並且無論在任何桌面環境中,它們都被列爲單獨的軟件項目。

這些項目有debian/文件夾(含有rulescontrol等)和含有SPEC文件的rpm/文件夾。目前,構建和安裝.rpm和.deb軟件包的工作原理除了App B被識別爲App A,因此不符合上述要求。 ldd顯示程序具有相同的確切依賴關係,我無法實現庫的靜態鏈接。

我想要安裝一個應用程序和該應用程序的修改版本,並將其作爲獨立應用程序從我構建的.deb和.rpm文件中識別出來。

需要對我的項目進行哪些修改才能達到預期的效果?請具體,因爲我已經研究了軟件包構建,但無法找到解決此問題的材料。

+0

對於RH端,你必須編輯你記錄的'.spec'文件並重新運行'rpmbuild'。那裏有很多教程,但第一遍「搜索和替換」將是一個很好的開始。 –

回答

0

我會回答Debian的包裝。

  1. 確保在兩個變體中創建的二進制可執行文件的名稱不同。例如。變體「A」將具有可執行文件/usr/bin/app-a,變體「B」將具有/usr/bin/app-b。這應該很明顯,否則你將無法同時安裝它們。

  2. 如果你的軟件包括其他文件,如圖書館或其他資源,這些都需要進入不同的目錄,以及,例如/usr/lib/app-a/.../usr/lib/app-b

  3. 在每個項目中,編輯debian/control文件並更改名稱被創建的二進制包。該名稱是Package:字段的值。此外,您需要更改源包的名稱Source:字段,通常位於debian/control的最頂端)。

  4. (可選)如果兩個變量共享大部分的文件,只有可執行文件(/usr/bin/app-{a,b})是不同的,你可能想都在一個源包相結合,並建立從單一來源包二進制包:一個包含兩個項目共享的文件(Package: app-common)和每個變體(Package: app-aPackage: app-b)的文件。然後,您需要一個Makefile來構建兩種變體,並編寫dh_install的配置文件,將文件分類到正確的目錄(app-a需要進入debian/app-a/usr/bin,類似於app-b)。