2013-09-26 62 views
2

我需要創建Realxtend項目(https://github.com/realXtend/naali)的一個新的.deb軟件包。這是一個很大的依賴性和自動bash腳本(/tools/Linux/build-deps.bash)下載,編譯並安裝所有DEPS和可執行一項巨大的工程。所以,我嘗試了很多教程,但我經常和我又立刻陷入一些錯誤,因爲教程過時(新的「規則」文件爲主)......還因爲我不是一個開發initialy。如何創建一個簡單的Debian軟件包(只是壓縮/提取物來源或Debian軟件包的文件)

因此,對於開始,我只需要創建一個.deb文件,就像一個簡單的歸檔,即不解釋任何構建過程,「makefile」或其他類型的東西。我想只是壓縮/解壓縮一個.deb文件,其中包含已經配置了所有依賴項的所有項目,比如帶有任何文件夾的.zip文件,解壓緊接着存檔的所有內容。

我有2個文件夾/ naali和/ naali-deps與配置與運行build-deps.bash在Ubuntu Precise x64上的各種文件(exe,src,lib,...)。 我跑dh_make, 清潔和填充/ Debian的文件(更新日誌,控制,版權), 創建GPG密鑰並運行sudo debuild -us -uc -k0xCODE(我聽到「須藤」這是「壞」,但我不知道沒有...)

我得到這個:

dpkg-buildpackage -rfakeroot -D -us -uc 
dpkg-buildpackage: warning: using a gain-root-command while being root 
dpkg-buildpackage: source package realxtend 
dpkg-buildpackage: source version 0-1 
dpkg-buildpackage: source changed by sylvain Bicherel <[email protected]> 
dpkg-source --before-build realxtend-0 
dpkg-buildpackage: host architecture amd64 
fakeroot debian/rules clean 
dh clean 
    dh_testdir 
    dh_auto_clean 
    dh_clean 
dpkg-source -b realxtend-0 
dpkg-source: info: using source format `3.0 (quilt)' 
dpkg-source: info: building realxtend using existing ./realxtend_0.orig.tar.gz 
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/Extras/CDTestFramework/License.txt.bak 
dpkg-source: warning: ignoring deletion of directory naali-deps/build/bullet-2.81-rev2613/autom4te.cache 
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/traces.1 
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/output.1 
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/requests 
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/traces.0 
dpkg-source: warning: ignoring deletion of file naali-deps/build/bullet-2.81-rev2613/autom4te.cache/output.0 
dpkg-source: info: building realxtend in realxtend_0-1.debian.tar.gz 
dpkg-source: info: building realxtend in realxtend_0-1.dsc 
debian/rules build 
dh build 
    dh_testdir 
    dh_auto_configure 
    dh_auto_build 
    dh_auto_test 
fakeroot debian/rules binary 
dh binary 
    dh_testroot 
    dh_prep 
    dh_installdirs 
    dh_auto_install 
    dh_install 
    dh_installdocs 
    dh_installchangelogs 
    dh_installexamples 
    dh_installman 
    dh_installcatalogs 
    dh_installcron 
    dh_installdebconf 
    dh_installemacsen 
    dh_installifupdown 
    dh_installinfo 
    dh_installinit 
    dh_installmenu 
    dh_installmime 
    dh_installmodules 
    dh_installlogcheck 
    dh_installlogrotate 
    dh_installpam 
    dh_installppp 
    dh_installudev 
    dh_installwm 
    dh_installxfonts 
    dh_installgsettings 
    dh_bugfiles 
    dh_ucf 
    dh_lintian 
    dh_gconf 
    dh_icons 
    dh_perl 
    dh_usrlocal 
    dh_link 
    dh_compress 
    dh_fixperms 
    dh_strip 
    dh_makeshlibs 
    dh_shlibdeps 
    dh_installdeb 
    dh_gencontrol 
dpkg-gencontrol: warning: Depends field of package realxtend: unknown substitution variable ${shlibs:Depends} 
    dh_md5sums 
    dh_builddeb 
dpkg-deb : construction du paquet « realxtend » dans « ../realxtend_0-1_amd64.deb ». 
dpkg-genchanges >../realxtend_0-1_amd64.changes 
dpkg-genchanges: including full source code in upload 
dpkg-source --after-build realxtend-0 
dpkg-buildpackage: full upload (original source is included) 
Now running lintian... 
warning: the authors of lintian do not recommend running it with root privileges! 
W: realxtend source: configure-generated-file-in-source naali-deps/build/celt-0.11.1/config.status 
W: realxtend source: configure-generated-file-in-source naali-deps/build/celt-0.11.1/config.log 
W: realxtend: new-package-should-close-itp-bug 
W: realxtend: empty-binary-package 
Finished running lintian. 

...所以我需要幫助的:

1)不是「Debian新維護者」和IRC你知道一個更新的和完整的教程(爲新手)等/ maillist像#debian-dev ... - >看到Phpdna的鏈接和特定的資源包裝,我明白了我的錯誤和使用dpkg-source cmd:http://debian-handbook.info/browse/wheezy/sect.source-package-structure.html

2)如何使我的項目'debianization'? - >與dh_make然後dpkg-buildpackage -rfakeroot,這是(一)好方法

3)我的錯誤在哪裏? - >空二進制文件lintian警告是正常的,然後錯誤的CMD:需要dpkg-source,而不是dpkg-deb

4)我應該做的$ {shlibs:Depends}? - >一個自動lib-deps鏈接的東西,我現在不介意

5)爲什麼我有一個空的二進制包? - >實際上,所有已建立的數據都留在.orig.tar.gz中,在我的情況下爲

非常感謝,如果你能指教.deb包魔術。

編輯: 所以我找到了我需要的最終cmd,只是dpkg-source -x projet-version.dsc。我不明白只是的.deb文件內容的變化和我stucked與debuilddpkg-deb -... CMDS不建設提取物的來源(和任何文件)。

解決方案:

  1. sudo apt-get install debhelper build-essential dh-make
  2. 與另一個文件夾進入創建文件夾/項目包含一個名爲所有項目/項目版本
  3. dh_make --createorig /項目版本+ rm -rf *ex *EX README*在/ Debian的+正確填寫/ debian/{rules; copyright; changelog}
  4. dpkg-buildpackage -rfakeroot with -us -uc or -k0x[GPG-KEY] in/project-version
  5. 始終在一起{project_version.orig.tar.gz(所有數據項目); project_version.debian.tar.gz(modifs); project_version_all/any.deb(modifs); project_version_arch.changes(meta); project_version.dsc(元)}
  6. 運行dpkg-source -x projet-version.dsc提取項目

所以,現在,去與它添加一些自動腳本,並儘快將更迭,我將迎來解決。

回答

2

首先,你需要創建一個build文件夾和文件的歸檔:build文件夾中tar czvf data.tar.gz files

然後,你必須創建一個控制文件有一些人想要的信息:

Package: xxxxxx 
Version: 0.0.1 
Section: user/hidden 
Priority: optional 
Architecture: armel 
Installed-Size: `du -ks usr|cut -f 1` 
Maintainer: [email protected]> 

然後你可以獨立添加preinst,postint,prerm和postrm shell腳本來控制安裝前和安裝後以及.deb文件的刪除前後行爲,然後您可以使用tar創建控制存檔:tar czvf control.tar.gz control preinst postinst prerm postrm

然後你需要一個debian-binary文件:echo 2.0 > debian-binary。在你的build文件夾中你現在應該有這些文件:debian-binarycontrol.tar.gzdata.tar.gz

最後,您需要ar包創建的.deb文件:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz

來源:https://unix.stackexchange.com/questions/30303/how-to-create-a-deb-file-manually/30330#30330

+0

非常感謝Phpdna!因此,我最終通過這些最小指令得到了一個1.5Go歸檔.deb文件,如果我通過上下文菜單提取內容(或提取cmd),但它不能與'dpkg-dep -i project.deb'cmd一起使用或者雙擊打開Ubuntu軟件中心。這是否正常(缺少需要insall/cp和.desktop文件的目錄路徑)? 對於本教程的'deb helper'部分,我總是有一個幾乎空的.deb。但我認爲我需要在新的'rules'文件中'overwrite_dh_install'的'make'cmds的內容。我很快嘗試。 –

+0

對不起。我忍不住不使用Ubuntu? – Bytemain