2010-12-21 25 views
8

因此,我創建了一個軟件,我想打包併發布到Arch Linux用戶存儲庫,AUR, - 請注意,我以前從未爲任何發行版打包過任何東西 - 並且我也通過Arch的包管理器Pacman成功將它打包並安裝在我自己的機器上,但現在我想知道我將如何構造文件夾和文件?包裝Linux軟件,同時保持一個健全的文件結構

通常當我寫的軟件,我用這個結構:

編譯/ | src/| makefile

作爲最低限度,對於這種軟件來說,makefile只不過是編譯一個來自src /的.cpp文件來編譯/。 爲了創建Arch軟件包,我還必須創建一個.rc文件,以便將該程序正確地用作守護程序,並使用PKGBUILD文件(該文件告訴makepkg程序如何構建安裝程序包) - 這兩個文件,但是,特定於Arch。 如果我想將程序打包爲說debian,我需要另一組文件來做到這一點,但這些文件只適用於debian。現在,我不能只將.rc文件和PKGBUILD文件放入程序的根文件夾中,因爲這會「很糟糕」,特別是如果我還有文件爲debian構建一個包時,但是我在哪裏放置發行版特定的文件?我需要將它放在程序根文件夾-at-least-中,以便能夠跟蹤它,並且我最初的想法是使用諸如distro/arch /的Arch Linux特定文件的結構,然後使用PKGBUILD文件只會在程序的根文件夾中運行makefile,並在編譯的文件從build /到distro/arch /之前做任何其他事情,但我發現我不能讓PKGBUILD以這種方式工作,並且Freenode上#archlinux上的人也說這不是一個聰明的想法。

那麼我在哪裏放置發行版特定的文件?如果我知道我只需要爲Arch提供這個程序,僅僅爲Makepkg設置它就很容易,但是我不喜歡像這樣封閉軟件,我也可以想象爲debian等其他市長髮行版提供軟件包,所以我怎麼做到這一點,同時保持一個健全的文件結構?

的問候, 克里斯·布赫霍爾茨

回答

2

很多時候你會發現在壓縮檔名爲「debian的」,這有它Debian的特定文件的目錄。我會走相同的路線並創建一個目錄'archlinux'並將文件放在那裏。

然後,我會繼續在archlinux目錄下放置一個文件自述文件,說明如何正確使用PKGBUILD。

一個解決方案可能是將一條規則寫入Makefile'package-arch'中,該規則將PKGBUILD複製到根目錄,運行makepkg,然後刪除多餘的PKGBUILD。

這很破爛,所以我也會爲Arch人編寫一個錯誤報告來解決這個限制。但是,您是否嘗試makepkg -p archlinux/PKGBUILD

+1

非常感謝您的回答,ypnos。我發現這對我將如何構建項目非常鼓舞人心。我決定不會將makefile與發行版混合在一起,而makepkg -p命令也沒有用。但是我發現我可以告訴PKGBUILD文件來抓取src /中的源文件,並在開始依賴它們並構建內容之前將它們複製到archlinux /,這很好。 – chrisbuchholz 2010-12-21 12:17:57

相關問題