日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python脚本制作deb包_Deb包的制作 | 学步园

發布時間:2023/12/29 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python脚本制作deb包_Deb包的制作 | 学步园 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

deb格式是Debian系專用安裝包格式,配合APT軟件管理系統,成為了當前在linux軟件中非常流行的一種安裝包。Debian和ubuntu軟件安裝用的都是deb包。

但是很多人制作deb包時,都是從rpm轉為deb,或者使用dpkg

-b進行轉換。雖然這兩種方法可以制作出來deb,但是顯然很粗糙,今天介紹一下正規方法:使用debhelper制作deb。今天用一個例子來和大家一起做個包試試看。

我們的例子是gwrite

這個軟件,軟件主頁:http://code.google.com/p/gwrite/。您可以點擊此處下載源碼。這個源碼包在Debian項目里的術語叫做upstream tarball,也就是上游發行的代碼包。

源碼下載完成后,我們在主目錄里新建一個文件夾,例如叫packaging,然后執行如下命令:

mkdir ~/packaging

cd ~/packaging

把剛才下載的.tar.gz文件放到這個文件夾里。然后用命令解壓這個文件:

tar zxf gwrite-0.5.0.tar.gz

(不要使用圖形化工具解壓,因為會造成權限混亂),進入解壓出來的目錄:

cd gwrite-0.5.0

然后大家要安裝幾個軟件包,依次介紹一下。第一個要安裝的是debhelper:

sudo aptitude install debhelper

debhelper軟件包里是各種腳本,可以幫助我們接下來的打包工作。下一個要安裝的是dh-make:

sudo aptitude install dh-make

dh-make包提供了我們需要用到的dh_make命令。這個命令用于根據上游tarball生成我們deb包模板。現在我們已經cd到解壓好的程序目錄,現在的文件夾路徑是~/packaging/gwrite-0.5.0。然后我們執行這個命令:

dh_make -e First Last -f ../gwrite-0.5.0.tar.gz

其中First Last是姓名,比如我是Aron Xu。<>里是你的email地址。-f后面是上游tarball的路徑。如果上面那個命令報錯,請使用這個:

dh_make -e youremail@example.com -f ../gwrite-0.5.0.tar.gz

(../的意思是當前目錄的上層目錄)接下來程序會提示:

Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs?

我們輸入s,表示這個源代碼包只生成一個deb。輸入s,按回車。然后會顯示一些信息,回車確認

這時候再看當前的目錄,會多出一個debian/文件夾。上級目錄里,會出現gwrite_0.5.0.orig.tar.gz文件。

接下來下面進到debian/目錄,第一個文件是changelog。Changelog顧名思義,是說軟件版本歷史的。

gwrite (0.5.0-1) unstable; urgency=low

Initial release (Closes: #nnnn)

-- Aron Xu Wed, 17 Nov 2010 20:21:24 +0800

文件里面的姓名和郵箱,是用來識別這個包制作者的,當然就是在動手的各位啦。(changelog里沒有寫中文的,都是英文。不知道deb包是否允許用中文。)changelog是必須得是文件,沒有這個文件接下來的步驟會出錯。

然后是compat文件,里面就一個數字,現在是7。這個數字是debhelper的版本。不管它就可以。

下一個文件是control文件:

Source: gwrite表示源碼包的名稱;

Section: unknown這行表示軟件分類;

Priority: extra代表優先級,一般可以寫optional或者extra。其中optional是普通包最常用的,extra的優先級相比則還要再低一些;

Maintainer: Aron Xu 這行是軟件包維護者,格式為:;

Build-Depends: debhelper(>= 7),這行是編譯依賴關系,也就是說要安裝哪些軟件包才可以編譯這個程序。這個例子中,debhelper是必須的。我們手里這個例子需要這些程序才能編譯:Build-Depends:

debhelper (>= 7), python, python-support, python-setuptools, python-distutils-extra。這些也是編譯基本的python程序縮必須的包。(

依賴需要自己分析)

Standards-Version: 3.8.3,這行是使用的Debian

Policy版本,目前最新的是3.9.1。所以我們寫成:Standards-Version:

3.9.1;

Homepage: ,這行是上游的首頁地址。我們是從http://code.google.com/p/gwrite下載的,所以寫:。

下面是一個空行,表示Source部分結束;

Package: gwrite,這是說deb包的名叫gwrite,將來apt-get安裝的時候,就用這個名字。

Architecture: any,這是指要編譯的硬件構架。any代表所有構架。all代表這個軟件包是跨平臺的,比如說同python程序文件可以在所有平臺上跑,我們打包的是python包,把any改成all。如果打一個C程序的包,則用any;

Depends: ${shlibs:Depends}, ${misc:Depends},這一行是deb包的依賴關系。${shlibs:Depends},

${misc:Depends}是兩個變了,表示debhelper自動檢測依賴;這個例子中,我們還要添加python,

python-gtk2, python-jswebkit, python-webkit, mimetex, wv。添加完的Depends是這樣的:Depends:

${shlibs:Depends}, ${misc:Depends}, python, python-gtk2, python-jswebkit, python-webkit, mimetex, wv;

Kandu: dpkg-dev,會檢測自己的host,把那個項在編譯時替換成當前的。所以寫any即可;

Description: ,這行是簡單的描述,要在60個字符以內,要用英語。從語言學來講,這應該是一個名詞性的成分,比如手里這個就寫成:simple GTK+ HTML5 rich text editor。寫完的樣子是:

Description: simple GTK+ HTML5 rich text editor。

,這里寫的是長描述。也是用英語,應該是完整的句子,每行大概寫70個字符,不要太多,沒寫完可以換行,每行的開頭都要有一個空格,示例:gWrite

is a simple GTK+ HTML5 WYSIWYG editor, focusing on writing and simple text formating. It can automatically generate a table of contents based on the document structure.每行開頭都有一個半角空格。這樣我們control文件就寫完了。

Control文檔示例:

Source: gwrite

Section: editors

Priority: optional

Maintainer: Aron Xu

Build-Depends: cdbs, debhelper (>= 7), python, python-support, python-setuptools, python-distutils-extra

Standards-Version: 3.9.1

Homepage: http://code.google.com/p/gwrite

Package: gwrite

Architecture: all

Depends: ${shlibs:Depends}, ${misc:Depends}, python, python-gtk2, python-jswebkit, python-webkit, mimetex, wv

Description: simple GTK+ HTML5 rich text editor

gWrite is a simple GTK+ HTML5 WYSIWYG editor, focusing on writing

and simple text formating. It can automatically generate a table of

contents based on the document structure.

.

It aims to be lighter than OOWrite & OOWeb, and to be as useful as them.

下面是copyright文件。這個文件里寫的是版權內容。版權的寫法比較復雜,今天先按下不表。(您可以參考范本進行修改)

再看文件夾里有很多.ex文件。這些文件都是某些功能性的腳本,通常來說,大多數包都只需要一個watch.ex。圖形化程序還需要menu.ex。watch.ex是debian監視上游新版本用的工具,不進入官方倉庫的包用不上,今天不講寫法。menu.ex是桌面菜單項,我們要使用它,所以把他重命名為menu。也就是去掉.ex后綴。默認模板:

?package(gwrite):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\ title="gwrite" command="/usr/bin/gwrite"

needs="X11|text|vc|wm"這句是說這個包需要什么顯示平臺來運行,如果是文本的程序,可以寫text,圖形化程序則寫X11。section="Applications/see-menu-manual"這是說程序的分類。所有可以用的選項在這里找到http://www.debian.org/doc/packaging-manuals/menu-policy/ch2.html#s2.1因為例子里的程序是個編輯器,所以寫成:

?package(gwrite):needs="X11" section="Applications/Editors"\ title="gwrite" command="/usr/bin/gwrite"

其余的.ex文件和.EX文件在例子里都用不上,刪除。

README.Debian README.source的用處是,如果你想就這個包做點什么說明,那么寫在這里README.Debian是寫給最終用戶的。README.source是關于源代碼包有什么問題,如果沒有什么要在里面說的,刪掉。docs文件是dh_make自動檢測的上游文檔列表,如果是空的,刪掉。我們的例子里它就是空的,所以刪了。現在要在文件夾里創建一個名為pycompat的文件,里面寫2就行了,這個文件沒有什么變的,就是python包就加上它,不是python包不需要它,pycompat文件里只有一個數字:2。

在當前目錄下創建一個文件夾:

source,然后在source目錄下創建一個名為format的文本文件,里面寫一行文字:3.0

(quilt)。這代表使用3.0 (quilt)的源代碼格式。

最后剩下rules文件了。這個文件是編譯deb包的主控文件,它本身是一個Makefile,但是不要往里亂寫target。90%的情況下,默認的rules就可以滿足我們的要求,現在debian/目錄下的工作基本完成了。

我們開始嘗試編譯這個包。

編譯的第一步,是安裝所有編譯依賴,也就是寫在control文件的Build-Depends項里的內容:debhelper python-support

python-setuptool python-distutils-extra。當前的例子里是這些:

sudo aptitude install debhelper python-support python-setuptool python-distutils-extra

安裝完之后,先檢查自己是否在源代碼目錄里。例子里也就是gwrite-0.5.0目錄。在gwrite-0.5.0里運行:

dpkg-buildpackage -rfakeroot(不需要root,直接運行即可)

如果執行成功,在父目錄里就會出現.deb .build和.changes文件;如果出現錯誤,就要根據提示再從頭找原因了。一個最簡單deb包的制作例程,就是這樣。完整地展示給大家了。

轉自:

總結

以上是生活随笔為你收集整理的python脚本制作deb包_Deb包的制作 | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。