用dpkg命令製作deb包方法總結
用dpkg命令製作deb包方法總結
如何製作Deb包和相應的軟體倉庫,其實這個很簡單。這裡推薦使用dpkg來進行deb包的建立、編輯和製作。
首先了解一下deb包的檔案結構:
deb 軟體包裡面的結構:它具有DEBIAN和軟體具體安裝目錄(如etc, usr, opt, tmp等)。在DEBIAN目錄中起碼具有control檔案,其次還可能具有postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版權)、changlog (修訂記錄)和conffiles等。
control: 這個檔案主要描述軟體包的名稱(Package),版本(Version)以及描述(Description)等,是deb包必須具備的描述性檔案,以便於軟體的安裝管理和索引。同時為了能將軟體包進行充分的管理,可能還具有以下欄位:
Section: 這個欄位申明軟體的類別,常見的有`utils’, `net’, `mail’, `text’, `x11′ 等;
Priority: 這個欄位申明軟體對於系統的重要程度,如`required’, `standard’, `optional’, `extra’ 等;
Essential: 這個欄位申明是否是系統最基本的軟體包(選項為yes/no),如果是的話,這就表明該軟體是維持系統穩定和正常執行的軟體包,不允許任何形式的解除安裝(除非進行強制性的解除安裝)
Architecture:申明軟體包結構,如基於`i386′, ‘amd64’,`m68k’, `sparc’, `alpha’, `powerpc’ 等;
Source: 軟體包的原始碼名稱;
Depends: 軟體所依賴的其他軟體包和庫檔案。如果是依賴多個軟體包和庫檔案,彼此之間採用逗號隔開;
Pre-Depends: 軟體安裝前必須安裝、配置依賴性的軟體包和庫檔案,它常常用於必須的預執行指令碼需求;
Recommends: 這個欄位表明推薦的安裝的其他軟體包和庫檔案;
Suggests: 建議安裝的其他軟體包和庫檔案。
對於control,這裡有一個完整的例子:
Package: bioinfoserv-arb
Version: 2007_14_08
Section: BioInfoServ
Priority: optional
Depends: bioinfoserv-base-directories (>= 1.0-1), xviewg (>= 3.2p1.4), xfig (>= 1:3), libstdc++2.10-glibc2.2
Suggests: fig2ps
Architecture: i386
Installed-Size: 26104
Maintainer: Mingwei Liu <>
Provides: bioinfoserv-arb
Description: The ARB software is a graphically oriented package comprising various tools for sequence database handling and data analysis.
If you want to print your graphs you probably need to install the suggested fig2ps package.preinst: 這個檔案是軟體安裝前所要進行的工作,工作執行會依據其中指令碼進行;
postinst這個檔案包含了軟體在進行正常目錄檔案複製到系統後,所需要執行的配置工作。
prerm :軟體解除安裝前需要執行的指令碼
postrm: 軟體解除安裝後需要執行的指令碼現在來看看如何修訂一個已有的deb包軟體
=================================================================
debian製作DEB包(在root許可權下),打包位置隨意。
#建立要打包軟體資料夾,如
mkdir Cydia
cd Cydia
#依據程式的安裝路徑建立資料夾,並將相應程式新增到資料夾。如
mkdir Applications
mkdir var/mobile/Documents (遊戲類需要這個目錄,其他也有可能需要)
mkdir *** (要依據程式要求來新增)
#建立DEBIAN資料夾
mkdir DEBIAN
#在DEBIAN目錄下建立一個control檔案,並加入相關內容。
touch DEBIAN/control(也可以直接使用vi DEBIAN/control編輯儲存)
#編輯control
vi DEBIAN/control
#相關內容(注意結尾必須空一行):
Package: soft (程式名稱)
Version: 1.0.1 (版本)
Section: utils (程式類別)
Architecture: iphoneos-arm (程式格式)
Installed-Size: 512 (大小)
Maintainer: your (打包人和聯絡方式)
Description: soft package (程式說明)
(此處必須空一行再結束)
注:此檔案也可以先在電腦上編輯(使用文字編輯就可以,完成後去掉.txt),再傳到打包目錄裡。
#在DEBIAN裡還可以根據需要設定指令碼檔案
preinst
在Deb包檔案解包之前,將會執行該指令碼。許多“preinst”指令碼的任務是停止作用於待升級軟體包的服務,直到軟體包安裝或升級完成。
postinst
該指令碼的主要任務是完成安裝包時的配置工作。許多“postinst”指令碼負責執行有關命令為新安裝或升級的軟體重啟服務。
prerm
該指令碼負責停止與軟體包相關聯的daemon服務。它在刪除軟體包關聯檔案之前執行。
postrm
該指令碼負責修改軟體包連結或檔案關聯,或刪除由它建立的檔案。
#postinst 如:
#!/bin/sh
if [ "$1" = "configure" ]; then
/Applications/MobileLog.app/MobileLog -install
/bin/launchctl load -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist
fi
#prerm 如:
#!/bin/sh
if [[ $1 == remove ]]; then
/Applications/MobileLog.app/MobileLog -uninstall
/bin/launchctl unload -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist
fi
#如果DEBIAN目錄中含有postinst 、prerm等執行檔案
chmod -R 755 DEBIAN
#退出打包軟體資料夾,生成DEB
dpkg-deb --build Cydia
=====================================================================
有時候安裝自己打包的deb包時報如下錯誤:
Selecting previously deselected package initrd-deb.
(Reading database ... 71153 files and directories currently installed.)
Unpacking initrd-deb (from initrd-vstools_1.0_amd64.deb) ...
dpkg: error processing initrd-vstools_1.0_amd64.deb (--install):
trying to overwrite `/boot/initrd-vstools.img', which is also in package initrd-deb-2
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
initrd-vstools_1.0_amd64.deb
主要意思是說,已經有一個deb已經安裝了相同的檔案,所以預設退出安裝,只要把原來安裝的檔案給解除安裝掉,再次進行安裝就可以了。
下面為實踐內容:
所有的目錄以及檔案:
mydeb
|----DEBIAN
|-------control
|-------postinst
|-------postrm
|----boot
|----- initrd-vstools.img
在任意目錄下建立如上所示的目錄以及檔案
# mkdir -p /root/mydeb # 在該目錄下存放生成deb包的檔案以及目錄
# mkdir -p /root/mydeb/DEBIAN #目錄名必須大寫
# mkdir -p /root/mydeb/boot # 將檔案安裝到/boot目錄下
# touch /root/mydeb/DEBIAN/control # 必須要有該檔案
# touch /root/mydeb/DEBIAN/postinst # 軟體安裝完後,執行該Shell指令碼
# touch /root/mydeb/DEBIAN/postrm # 軟體解除安裝後,執行該Shell指令碼
# touch /root/mydeb/boot/initrd-vstools.img # 所謂的“軟體”程式,這裡就只是一個空檔案
control檔案內容:
Package: my-deb (軟體名稱,中間不能有空格)
Version: 1 (軟體版本)
Section: utils (軟體類別)
Priority: optional (軟體對於系統的重要程度)
Architecture: amd64 (軟體所支援的平臺架構)
Maintainer: xxxxxx /root/mydeb.log
postrm檔案內容( 軟體解除安裝後,執行該Shell指令碼,一般作為清理收尾工作,必須以“#!/bin/sh”為首行,然後給該指令碼賦予可執行許可權:chmod +x postrm):
#!/bin/sh
rm -rf /root/mydeb.log
給mydeb目錄打包:
# dpkg -b mydeb mydeb-1.deb # 第一個引數為將要打包的目錄名,
# 第二個引數為生成包的名稱。
安裝deb包:
# dpkg -i mydeb-1.deb # 將initrd-vstools.img複製到/boot目錄下後,執行postinst,
# postinst指令碼在/root目錄下生成一個含有"my deb"字元的mydeb.log檔案
解除安裝deb包:
# dpkg -r my-deb # 這裡要解除安裝的包名為control檔案Package欄位所定義的 my-deb 。
# 將/boot目錄下initrd-vstools.img刪除後,執行posrm,
# postrm指令碼將/root目錄下的mydeb.log檔案刪除
檢視deb包是否安裝:
# dpkg -s my-deb # 這裡要解除安裝的包名為control檔案Package欄位所定義的 my-deb
檢視deb包檔案內容:
# dpkg -c mydeb-1.deb
檢視當前目錄某個deb包的資訊:
# dpkg --info mydeb-1.deb
解壓deb包中所要安裝的檔案
# dpkg -x mydeb-1.deb mydeb-1 # 第一個引數為所要解壓的deb包,這裡為 mydeb-1.deb
# 第二個引數為將deb包解壓到指定的目錄,這裡為 mydeb-1
解壓deb包中DEBIAN目錄下的檔案(至少包含control檔案)
# dpkg -e mydeb-1.deb mydeb-1/DEBIAN # 第一個引數為所要解壓的deb包,
# 這裡為 mydeb-1.deb
# 第二個引數為將deb包解壓到指定的目錄,
# 這裡為 mydeb-1/DEBIAN
返回
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-2135105/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- debian軟體解除安裝|deb包解除安裝|dpkg命令
- debian Linux下製作deb包的簡便方法(轉)Linux
- 最近PPT製作總結
- Centos 用yum安裝軟體包命令總結CentOS
- 製作iPhone PXL安裝包的方法iPhone
- ubuntu下如何用命令列執行deb安裝包Ubuntu命令列
- 哪個軟體可以製作GIF表情包 動態圖製作方法
- H5製作技術總結H5
- linux製作安裝包的兩種方法Linux
- 抖音GIF表情包製作教程 如何製作QQ動態表情包
- ubuntu安裝debian包的命令dpkg和apt的詳解UbuntuAPT
- 鬥圖?教你用Python製作表情包Python
- ffmpeg 命令列實用總結命令列
- 網頁製作時可以拿起就用的網頁製作小技巧總結網頁
- 揹包問題解題方法總結
- 常用的apt dpkg命令(轉)APT
- PowerPoint與Excel的結合製作方法Excel
- 使用NSIS製作安裝包
- 教你如何在Cydia中提取Deb安裝包
- 製作html5微信頁面的經驗總結。HTML
- Docker 映象製作方法Docker
- iOS 動畫製作方法。iOS動畫
- 將 DEB 軟體包轉換成 Arch Linux 軟體包Linux
- 有什麼製作軟體可以製作QQ鬥圖表情包
- 自己怎麼製作GIF表情包 QQ動態圖如何製作
- Installshield製作更新安裝包
- 教你如何製作程式安裝包
- 升級安裝包的製作
- Linux自己製作rpm包Linux
- 製作屬於自己得nuget包
- 作業總結
- 如何在Mac OS下用ISO包製作啟動U盤Mac
- 用jsmooth + inno生成exe並製作簡單安裝包JS
- 設計用例的方法總結
- java 位元組流檔案複製方法總結Java
- 結對作業總結
- Linux下怎麼安裝.deb格式的安裝包?Linux系統下.deb格式安裝包的安裝教程Linux
- NPM 命令總結NPM