2010-06-18 73 views
0

我需要爲我們的軟件製作一個.deb,其中包含Drupal的副本。我必須修補Drupal,所以我無法使用發行版中的Drupal股票。我希望得到的結果是一個名爲drupal6-rs_6.16_all.deb的文件,但是因爲在我的控制文件中它是一個子包,它是「繼承」我主包的版本,所以我最終得到一個包drupal6-rs_6.0.6 _all.deb(6.0.6是我們自己的代碼庫的版本)。如何覆蓋.deb子包的版本?

我寧願能夠在相同的debian/*描述中生成Drupal包,而不是單獨爲Drupal創建單獨的debian/*子樹。

可以這樣做嗎?我知道用RPM可以重寫一個子包的版本,但是如果我在該子包的debian/control頭文件中添加Version:6.16,它(a)在vim中與其他標題條目不同,並且(b)具有沒有效果。

+1

對於這些類型的問題,我通常在serverfault上獲得更多成功。 – brad 2010-06-18 16:15:39

回答

1

我應該有時RTFM。看看man dh_installchangelogs。有一個原因是它有一個s後綴!

是的,它似乎是你可以重寫多個二進制源包中的二進制包的版本。

+0

賓果!這是訣竅。 – 2010-07-23 16:53:56

+0

是的,我很生氣,忘記查看聯機幫助頁。 – Umang 2010-07-24 09:40:53

0

由於每個源包只有一個debian/changelog文件,我相信每個源包只能有一個版本。如果您查看Debian軟件包跟蹤系統,它始終指向一個版本號 - 源代碼包的版本號。因此,源碼包構建的二進制包具有相同的版本號。

這使你有兩個選擇 -

  1. 做事的正確方法 - 補丁的Drupal(可能與dpatch,如Drupal的包在Debian中已經使用它),並留下作爲一個單獨的源代碼包本身。輸入版本號後綴(例如6.17-1yourcompany1)。然後爲您自己的軟件打包,讓您的軟件依賴於Drupal。現在你可以依靠drupal6 (=6.17-1yourcompany1)所以你知道每個人已經實際上得到了補丁。使用個人存儲庫分發您的軟件將是一個好主意。

  2. 你的另一種選擇是使用hacky方法。由於您不想使用單獨的debian/文件夾,請使用其中一個。無論您是從源碼包製作兩個二進制文件還是一個(將所有內容合併到源碼包中),您需要決定要使用哪個版本號--Drupal或您的代碼庫。

+0

我將得出結論:無法使用與源代碼包指定的版本不同的子包,您可以在RPM中區分這兩個版本。我可能會咬緊牙關,爲我們修補的Drupal製作一個單獨的源代碼包。但是挑剔:我將在包裝商的子版本字段中使用drupal6-ourcompany-6.17而不是我們的標識符。這樣我們可以依賴於drupal6-ourcompany> = 6.13 – 2010-07-05 16:17:19

+0

是的,這是有道理的。確保你不把它叫做drupal6.16-yourcompany,因爲當drupal創建一個新的上游版本時,那個包不會滿足你的依賴。 – Umang 2010-07-06 11:41:42

+0

@Bernd:看看另一個答案。 – Umang 2010-07-22 07:08:12