1. 概述
有時候我們向使用者提供軟體時,並不希望提供原始碼(雖然這挺狗的...),而是只希望提供一些可執行檔案。小程式還好說,可以輕易地提取有用的資訊出來。
但對於一些比較龐大的程式,尤其是需要配置檔案,並且需要核心的支援等條件的時候,就會因為程式內部各個檔案與程式的複雜性,在搞清其中關係上花上不少的時間了。
這樣就需要乙個辦法將其中的可執行檔案提取出來並且能夠保證其能夠正常執行,當然,你可以將你編譯源**的目錄中的**都刪掉,只留下中間產物和可執行檔案,是可以的。但這裡我們討論的是如何通過製作deb軟體包來達到目的。
而做成deb包還有另乙個好處,就是方便軟體的安裝與解除安裝,這是原始碼安裝的很多軟體無法做到的。
2. 需要工具
完成剛才所描述的操作只需要乙個工具:checkinstall,是乙個將原始碼轉化成deb或者rpm包的工具,操作也比較簡單。
而完成安裝包並不是最終目的地,我們有時還需要對安裝包進行適當的修改,此時則需要dpkg,debian下強大的包管理工具。
。但是我真沒搞明白怎麼用,應該是直接用的,但會報錯,也沒繫想去深究,不要鄙視我。
我在debian上直接用apt-get裝的。
==== 操作流程 ====
3. 製作包過程
我們在正常編譯軟體原始碼是通過 ./configure ; make ; make install 來完成的。
而我們要做的就是用checkinstall去替換make install這步,然後我們就會得到乙個deb包了...
整個過程將像如下顯示
在通過./configure && make之後,輸入sudo checkinstall命令
經過很短時間的初始化之後,系統會提示你
the package documentation directory ./doc-pak does not exist.should i create a default set of package docs? [y]:
選擇y然後會讓你對包做一定的描述,以空行結尾
please write a description forthe package.
end your description with an empty line or eof.
>>i am description
>>
然後會提示你完成一些描述性的輸入
this package will be built according to these values:0 -maintainer: [ root@debian ]
1 - summary: [ i am the summary]
2 -name: [ name ]
3 - version: [ 1.0
]4 - release: [ 1
]5 -license: [ gpl ]
6 -group: [ checkinstall ]
7 -architecture: [ amd64 ]
8 - source location: [ nameofthesrc]
9 -alternate source location: [ ]
10 -requires: [ ]
11 -provides: [ command ]
12 -conflicts: [ ]
13 - replaces: [ ]
此處的requires可以指定所需要的包
比如,我需要libxml2-dev,pkg-config的支援,輸入
10#回車》 libxml2-dev,pkg-config #回車
當然,你也可以在適用checkinstall命令的時候加乙個引數
checkinstall --requires="libxml2-dev,pkg-config
"
這裡,如果你加了要求,別人在安裝你的包的時候,如果沒有相應的庫,或者軟體,程式就檢查並提示,否則不會檢查的,直接去安裝,最後程式沒法用,而且誰也不知道為什麼。除非你能夠提供乙個說明。
如果沒有這裡直接回車就好了,然後就可以完成deb包的建立了。
正常情況下,此時這個deb包就可以拿去給別人裝軟體了,安裝過程需要使用命令
sudo dpkg -i name.deb
4. 通過dpkg管理deb包
有時我們可能需要對這個deb先進行一定的處理,因為製作包的過程是通過替換make install過程完成的,可能有些東西我不想放在包裡,我要把它刪除。我也希望向裡面新增一些其它的東西。比如是兩個不同系統的程式,你希望你的系統同時擁有他們,但不希望通過多個步驟。
這個過程需要dpkg命令來實現,dpkg的一些基本功能如下所示
dpkg -i name.deb #安裝軟體包dpkg -i name.deb #從包裡獲取deb包的資訊
dpkg -i name #移出所安裝的軟體包,名字可以通過檢視包資訊得到
dpkg -c name.deb #檢視包內的內容,看起來就跟壓縮包一樣
dpkg -s name #檢視已安裝的包裹資訊
dpkg -r name #刪除乙個已安裝的包裹
dpkg -p name #刪除乙個已安裝的包裹,包括配置檔案
其實就是重新組裝一下目錄,大概就是這個意思。
這裡向說明的是dpkg的一些其他功能,解包和重新打包
dpkg -x name.deb name #得到包內的檔案dpkg -e name.deb name/debian #得到包內的控制資訊
dpkg -b name name.deb #建立乙個deb包
這樣,我們就可以對包的內容進行修改,向裡面新增,或者移出一些內容了。
checkinstall製作linux安裝包
checkinstall 是乙個能從 tar.gz 類的源 自動生成 rpm debian 或slackware 安裝包的程式。本文環境介紹 本文的示例程式時nagios的外掛程式,目的是把nagios的外掛程式編譯安裝好後壓成乙個rpm包,便於安裝和解除安裝 1 首先安裝checkinstall程...
關於二進位制的利用
尋找乙個序列的真子集。x n x 其實也是以上類似的原理。遍歷的乙個序列的所有可能排列。也就是說有4個元素。那麼對於1個 對於2個 對於3個 對於4個。這樣所有的排列情況列舉。比如4個元素。那就是 i pow 2,5 1 1111 for x 1 xx 就是這種序列。include include ...
利用棧二進位制轉化為十進位制
利用資料中的棧來進行數制轉換,可以深刻領悟棧的含義,也可對棧的定義,入棧,出棧來進行領悟。程式 如下 include include include define stack init size 20 定義為棧的初始記憶體大小 define stackincrement 10 定義為當棧的空間不夠時...