linuxdeb安装包制作,linuxubuntu中制作deb安裝包

更新时间:2023-07-19 05:29:27 阅读: 评论:0

linuxdeb安装包制作,linuxubuntu中制作deb安裝包
linux/ubuntu中制作deb安裝包
由於要制作⼀個在arm平台上運⾏的xorg-rver-1.12.4版本的安裝包,所以需要學習如何制作deb安裝包。這⾥以⼀個⾮常⼩的⼯程為例,記錄制作的過程。
⾸先需要⼀個deb包管理系統,如debian、ubuntu等,這⾥我使⽤的是ubuntu14.04LTS,這些系統默認安裝了deb包制作所需的⼯具,沒有的話后期也可以通過sudo apt-get install來安裝。
张厅1 創建⼀個簡單的源碼包
ls -l
total 24
-rw-rw-r– 1 mountzf mountzf 73 Jul 8 14:05 helloworld.c
-rw-rw-r– 1 mountzf mountzf 323 Jul 8 14:32 Makefile#include
int main()
{
printf("Hello World!\n");
return 0;
}
C code的內容與deb包的制作關系不⼤,這⾥還是先主要看⼀下makefile的內容,在制作deb包的時候,makfile是需要修改的。# Sample makefile.
PROG=helloworld
CC=gcc
BINDIR=/usr/bin
INSTALL=cp
# Compile commands.
$(PROG):helloworld.c
$(CC) -o $(PROG) helloworld.c
# make clean command.
clean:
rm -rf $(PROG)
# make install command.
install:
$(INSTALL) $(PROG) $(BINDIR)
# make uninstall command.
uninstall:
rm -rf $(BINDIR)/$(PROG)
2 創建GPG key
首套房贷款利率GPG key在build包的時候需要⽤到,ubuntu系統中默認已經安裝gpg⼯具,可以gpg --help查看使⽤⽅法。這⾥gpg --gen-key,然后按照提⽰依次進⾏即可。由於我是在虛擬機中運⾏ubuntu,⽣成密鑰時遇到如下問題:
Not enough random bytes available. Plea do some other work to give
the OS a chance to collect more entropy! (Need 288 more bytes)捶胸顿足
不要慌,翻閱論壇后發現很多⼈都說如下命令針對此問題有效:sudo aptitude install haveged
安裝完成haveged之后,順利⽣成公鑰和私鑰,創建完成之后檢查⼀下:
gpg –list-keys
资治通鉴读后感/home/mountzf/.gnupg/pubring.gpg
--------------------------------
pub 2048R/306A7521 2016-07-08
uid mountzf
sub 2048R/17D974A5 2016-07-08
3 環境准備
在對這個源碼包進⾏deb化之前,⾸先要確保源代碼⽬錄絕對⼲凈,為了讓軟件包能夠正確地制作,需要把源代碼⽬錄更改為“⼩寫字母-版本號”格式。同時需要export兩個環境變量。
~/makeDeb$ ls -l
total 4
drwxrwxr-x 2 mountzf mountzf 4096 Jul 8 14:32 helloworld-0.1export DEBEMAIL=""
export DEBFULLNAME="xxxx"
注意此處的郵箱和密碼必須和你在⽣成gpg key的時候完全⼀致,這兩個變量的值也會在changelog等多處⽂件中⽤到。
4 對源碼包進⾏deb化
如果系統沒有安裝dh-make⼯具包,需要執⾏sudo apt-get install dh-make命令進⾏安裝。dh_make --
createorig命令⽣成制作deb包所需的默認信息並在上⼀層⽬錄中⽣成helloworld_源碼壓縮包(沒有源碼壓縮包的話dh_make將不能成功執⾏)。
mountzf@mountzf:~/makeDeb/helloworld-0.1$ dh_make –createorig
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
[s/i/m/l/k/n] s
Maintainer name : mountzf
Email-Address :
Date : Fri, 08 Jul 2016 15:44:24 +0800
Package Name : helloworld
Version : 0.1
Licen : blank
Type of Package : Single
Hit to confirm:
Done. Plea edit the files in the debian/ subdirectory now. You should also
check that the helloworld Makefiles install into $DESTDIR and not in / .
這⾥詢問安裝包類型,我么們這⾥是單個可執⾏⽂件,所以我選擇了s。同時系統給出了兩個提⽰信息,我們發現當前⽬錄中多了⼀個debian⽬錄,同時⽬錄中有些內容需要編輯。
changelog control docs README.source source
compat d.ex helloworld.doc-ba.EX README.Debian
這個⽬錄下⾯的⽂件很多,不能⼀⼀解釋。這⾥列舉幾個重要的,也是絕⼤部分軟件必須的:
control⽂件: 聲明很多重要的變量,dpkg通過這些變量來管理軟件包
copyright⽂件: 不⽤說,版權信息,相當重要
changelog⽂件: 這是⼀個必需⽂件,包含軟件版本號,修訂號,發⾏版和優先級。
rules⽂件: 這實際上是另外⼀個Makefile腳本,⽤來給dpkg-buildpackage⽤的.
compat⽂件: 這個⽂件留着是有⽤的
dirs⽂件:這個⽂件指出我們需要的但是在缺省情況下不會⾃動創建的⽬錄
其中control⽂件我們可能需要修改。刪掉后綴是 .ex 和 .EX 的⽂件,不然如果你沒編輯它們並重命名為不帶 .ex/.EX 后綴的同名⽂件,在打包完成的 lintian 檢查時會有⼀條錯誤叫做:Debin 幫助⽂件被打包進了 . -rf *.ex
rm -rf *.EX
⾄於 .ex 和 .EX 是⼲嘛的,看下⾯這個列表:
emacn 開頭的是針對基於 emacs 這個 IDE 的名為 emacn 的編輯器的安裝/刪除/啟動腳本。是打包類似 emacn 插件這樣的程序才會⽤到的。但是 emacn 這個項⽬ 2007 年就不更新了。於是無⽤。
< 是啟動腳本,你的軟件要開機⾃啟動,才需要去編輯並重命名它,⽐如輸⼊法。否則無⽤。
定時服務。除⾮你的軟件有服務,並需要按周期運⾏。否則無⽤。同理 也是這樣。
doc-ba.EX 是 deb 系專⽤的。⼤概意思是告訴系統各種不同格式的幫助⼿冊在哪⾥可以找得到。你在乎⼿冊嗎?
manpage.*.ex 是具體的各個格式的幫助⼿冊。
post*.ex 跟 RPM 系的 post ⼀樣。postinst 管安裝,postrm 管刪除。⼀般是庫⽂件會⽤。⽽且這個無需你去⼲預,改名去掉 .ex 就可以,dh_installdeb 會⾃動幫你填寫。
边城摘抄
< 是蝶變專有的,意思是關注某個 url,有變化就郵件通知你來升級。跟 OBS 的 auto check 差不多。除了更新狂誰都⽤不到。⽽且⾥⾯是⽤正則表達式寫的,要是不懂就算了吧。
接着要刪除 README*。rm -rf README*
其中 README.debian 是類似於 RPM 的 changelog 這樣的⼀個存在。⽐如你加了補丁,改動了什么,寫進去。 README.source 是描述源代碼是否滿⾜蝶變策略的⽂件,我們打的包都不通過蝶變官⽅分發,所以不⽤管這個。
5 修改Makefile
根據第⼆個提⽰,我們不應該將該程序安裝⾄/根⽬錄中,⽽應該在$DESTDIR,修改Makefile如下:BINDIR=$(DESTDIR)/usr/bin
# make install command.
install:
mkdir -p $(BINDIR)
$(INSTALL) $(PROG) $(BINDIR)
第⼀處改動是為了在build包的時候把⽂件安裝到正確的⽬錄,第⼆處修改是$(DESTDIR)/usr/local/bin並不存在,所以在安裝之前需要創建安裝⽬錄。
注意:Debian要求可執⾏⽂件不能安裝在/usr/local⽬錄下,因此如果BINDIR設為/usr/local/bin的話,build的時候會出錯⽽不能繼續進⾏。
6 build軟件包
基本上所有⼯作都准備就緒了,下⼀步我們就可以build軟件包了。利⽤dpkg-buildpackage -rfakeroot命令。
gpg: WARNING: unsafe ownership on configuration file /home/mountzf/.f
dpkg-buildpackage: warning: failed to sign .dsc and .changes file
切換到root賬⼾,再運如上命令即可。sudo su
dpkg-buildpackage -rfakeroot
此時源碼已經打包完畢,⽣成了deb安裝包helloworld_0.1-1_amd64.deb和.壓縮包。查看⼀下⽣成的⽂件:
root@mountzf:~# which helloworld
/usr/local/bin/helloworld
root@mountzf:/home/mountzf/makeDeb# ls -l
total 72
drwxrwxr-x 3 mountzf mountzf 4096 Jul 8 16:22 helloworld-0.1
-rw-r–r– 1 root root 1504 Jul 8 16:22 helloworld_0.1-1_amd64.changes
-rw-r–r– 1 root root 2194 Jul 8 16:22 helloworld_0.1-1_amd64.deb
-rw-rw-r– 1 mountzf mountzf 9441 Jul 8 16:22 helloworld_0.1-1.
-rw-rw-r– 1 mountzf mountzf 824 Jul 8 16:22 helloworld_0.1-1.dsc
-rw-rw-r– 1 mountzf mountzf 464 Jul 8 15:44 helloworld_
7 檢查與安裝
最后,做⼀下檢查和安裝⼯作。
root@mountzf:/home/mountzf/makeDeb# dpkg-deb -c helloworld_0.1-1_amd64.deb
drwxr-xr-x root/root 0 2016-07-08 17:15 ./
drwxr-xr-x root/root 0 2016-07-08 17:15 ./usr/
drwxr-xr-x root/root 0 2016-07-08 17:15 ./usr/bin/
-rwxr-xr-x root/root 6128 2016-07-08 17:15 ./usr/bin/helloworld
drwxr-xr-x root/root 0 2016-07-08 17:15 ./usr/share/
drwxr-xr-x root/root 0 2016-07-08 17:15 ./usr/share/doc/
drwxr-xr-x root/root 0 2016-07-08 17:15 ./usr/share/doc/helloworld/
-rw-r–r– root/root 1676 2016-07-08 17:05 ./usr/share/doc/helloworld/copyright
-rw-r–r– root/root 180 2016-07-08 17:05 ./usr/share/doc/helloworld/
dpkg -i helloworld_0.1-1_amd64.deb安裝所制作的deb安裝包
root@mountzf:/home/mountzf/makeDeb# which helloworld
root@mountzf:/home/mountzf/makeDeb# dpkg -i helloworld_0.1-1_amd64.deb
(Reading databa … 95541 files and directories currently installed.)
Preparing to unpack helloworld_0.1-1_amd64.deb …
Unpacking helloworld (0.1-1) over (0.1-1) …
Setting up helloworld (0.1-1) …
root@mountzf:/home/mountzf/makeDeb# which helloworld
/usr/bin/helloworld
桑桑是药dpkg -r helloworld 卸載剛才安裝的deb安裝包
jingdianroot@mountzf:/home/mountzf/makeDeb# dpkg -r helloworld
(Reading databa … 95541 files and directories currently installed.)
Removing helloworld (0.1-1) …春风不昼
root@mountzf:/home/mountzf/makeDeb# which helloworld
root@mountzf:/home/mountzf/makeDeb#
⾄此,通過⼀個⼩的項⽬實例,驗證了利⽤dh_make和dpkg-buildpackage制作deb安裝包的步驟。但是這只是編譯和本機架構相同的deb 安裝包,要在pc上編譯適⽤於arm的安裝包,這種⽅法好像沒有成功。后⾯將繼續學習如何利⽤pc編譯適⽤於arm的deb安裝包。
祝楓
2016年7⽉8⽇於深圳

本文发布于:2023-07-19 05:29:27,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1104468.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:安裝   需要   制作   軟件   系統   代碼
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图