deb包源碼
① 如何使用源代碼構建一個可用的 Ubuntu 軟體包
用dpkg-source -x
foo.dsc從foo.orig.gz和foo.diff.gz創建工作目錄foo:一份發行版中立的源碼目錄,加上一個debian目錄以及目錄下的meta文件,就構成了一份可以生成二進制deb包的源碼工作目錄。其實從apt-get
source抓下來的目錄,已經是通過dpkg-source -x解壓過的了。dpkg-source
-x所做的主要事情就是1.解壓;2.把foo.diff.gz里的patch打到原始文件上。生成的foo目錄下的源文件,都已經是打過deb源碼包里的patch了的。
在foo目錄下,執行dpkg-buildpackage -us
-uc構建包。-us和-uc參數是不做簽名,適合於本地構建本地使用的情況。這個命令的輸出有兩個,一個是二進制deb包,另一個是源碼包,為什麼這里還要生成源碼包?因為你可能改動某些文件,那麼會生成新的diff.gz來記錄所有你針對原始源碼的改動,不管發布還是保存更改都更方便,下一次你只需要在生成的新的.dsc文件上執行dpkg-source -x就可以產生一個一模一樣的源碼了。如果你什麼都沒改動,那麼新產生的源碼包同你構建所來源的源碼包是一樣的。你也可以用參數-b和-S來控制這次構建只產生二進制包或者只產生源碼包。
兩個最重要的meta文件,debian/control和debian/rules。control文件決定了哪些二進制包將從這份源碼目錄中構建,一個源碼目錄往往是好幾個二進制包的輸入源。你不想生成哪個屏蔽它就行。二進制包的運行時依賴關系也在包的聲明中可見,並且control文件也聲明了構建過程中的依賴,不過可以給dpkg-buildpackage傳-d參數來忽略構建依賴。
debian/rules文件其實就是個Makefile,你可以執行make -f debian/rules target來單獨執行某個目標。rules文件里基本上都是對debhelper腳本函數的調用,像是dh_*這樣的函數,它們負責大部分的構建過程。常用的clean, install目標在rules文件中也有,有些基於源碼包的Makefile上所做的事情如make clean需要通過make -f debian/rules clean來代替。
和傳統意義的Make過程有點不一樣的就是,默認狀態下,每次dpkg-buildpackage,其實都是把從configure.ac生成configure腳本,到生成Makefile,到構建source,到安裝binary都做一遍,哪怕你並沒有改過configure.ac,或者改過源代碼.c文件,假如構建失敗了,就需要嘗試改動源代碼重新構建,有時候需要反復嘗試這個過程直到構建成功,如果包很大的話那需要花費的時間就很長,這時傳入-nc參數可以讓dpkg-buildpackage保留當前的構建結果,就像傳統的make一樣只會從出錯的地方重新開始。當然,當對源代碼的改動終止後,最後還是需要再執行一遍不帶-nc參數的命令」dpkg-buildpackage -us -uc」來重新完全構建一遍,否則在生成源碼包時可能會出錯。
dpkg-buildpackage不用擔心它會自動改變你的源文件(即通過dpkg-source
-x產生的文件),當然前提是你確實改動的是」源」文件,比如是configura.ac而不是configure,是dkms.conf.in而不是dkms.conf。
構建軟體時做得最多的事就是根據自己系統的需求調整./configure參數了吧,比如–enable–xxx或者–disable-xxx,在rules文件中,通過帶override前綴的target可以起到為默認的target定製參數的目的,如override_dh_auto_xconfigure:
對源碼包有修改最好通過dch -i來生成一個新的changelog文件,每個change item的title部分都是表示這次change的最新版本號,dpkg-buildpackage的輸出二進制包的版本號其實就是從changelog里提取的(不是寫在control文件里的)。
② linux系統安裝deb文件怎麼安裝
.deb文件安裝方法如下:
cd 到安裝包的目錄
dpkg -i 安裝包名字
如果你使用的是red hat linux,然後運行以下命令安裝
cd 到安裝包的目錄
rpm -ivh 安裝包名字
命令:
要安裝 .deb 套件包時
dpkg -i package_file.deb
要反安裝 .deb 套件包時
dpkg -r package_name
dpkg的詳細使用方法,網上有很多,下面簡單列了幾個:
dpkg -i package.deb 安裝包
dpkg -r package 刪除包
dpkg -P package 刪除包(包括配置文件)
dpkg -L package 列出與該包關聯的文件
dpkg -l package 顯示該包的版本
dpkg –unpack package.deb 解開 deb 包的內容
dpkg -S keyword 搜索所屬的包內容
dpkg -l 列出當前已安裝的包
dpkg -c package.deb 列出 deb 包的內容
dpkg –configure package 配置包
注意:使用此命令需要你自己注意依賴軟體,所以這並不是安裝軟體的最佳方法.
③ linux下如何編譯源碼包或者說是安裝
1、安裝編碼源碼的編譯工具,一般是需要安裝gcc
yum install gcc
2、把源碼解壓
tar zxvf uname.tar.gz
3、進入解壓的目錄執行
./configure
make
make install
完成編譯安裝
④ 在openSUSE下如何安裝deb包以及各種軟體包的轉換
需要安裝Checkinstall創建一個RPM和DEB軟體包。 在linux上安裝Checkinstall,在Debian及其衍生發行版上安裝Checkinstall: # aptitude install checkinstall 在紅帽子的發行版上安裝Checkinstall,需要下載一個已經打包好的Checkinstall rpm包。 # wget ftp://ftp/mirror/ftp5.gwdg.de/pub/opensuse/repositories /home:/ikoinoba/CentOS_CentOS-6/x86_64/checkinstall-1.6.2-3.el6.1.x86_64.rpm# yum install checkinstall-1.6.2-3.el6.1.x86_64.rpm 一旦checkinstall安裝好,就可以用下列格式創建一個特定的軟體包 # checkinstall 《install-command》 如果沒有參數,默認安裝命令「make install」將被使用Checkinstall創建一個RPM或DEB包。在這個例子里,將創建一個htop包,這是一個linux互動式文本模式進程查看器(類似 top)。 首先,讓從項目的官方網站下載源代碼,作為一個好的習慣,存儲源碼包到/usr/local/src下,並解壓。 # cd /usr/local/src# wget hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz# tar xzf htop-1.0.3.tar.gz# cd htop-1.0.3看看htop的安裝命令是什麼,以便能用Checkinstall命令調用,如下面所示,htop用「make install」命令安裝。 # ./configure# make install因此,要創建一個htop安裝包,可以不帶任何參數的調用checkinstall,這將使用「make install」命令創建一個包。在這個過程中, checkinstall命令會問你幾個問題。 簡而言之,如下命令會創建一個htop包: # ./configure# checkinstall 「Should I create a default set of package docs?」,回答「Y」: 可以輸入一個包的簡短描述,然後按兩次回車: 輸入一個數字以修改下面的任何值或ENTER繼續: 然後checkinstall將自動地創建一個.rpm或者.deb包,根據你的linux系統是什麼: 在CentOS7: 在Debian 7: Linux系統下使用checkinstall從源碼創建RPM或DEB包的方法介紹了,該方法只適用於紅帽子和Debian為基礎的發行版,其他版本可以做個參考。
⑤ linux中源代碼包安裝的基本步驟是什麼
詳解linux源碼包安裝過程
1. 解壓縮包
可以通過下載或其他方式獲得了一個軟體包,通常它是一個壓縮文件,大部分可能是存檔的和壓縮的,這些文件一般以 .tar .gz為擴展名。
首先拷貝它到一個目錄,然後 untar 和 gunzip 解壓它。 通常這個命令是
tar xzvf filename [filename 是軟體文件名稱]
解壓後的文件一般會在當前目錄下的創建子目錄,並以這個包名來命名。 你也可以用用這個命令預先查看結果 tar tzvf filename,顯示包里有那些解壓文件。
源文件如果是新的 bzip2 (.bz2) 格式,可用
bzip2 -cd filename | tar xvf -,或更簡單的 tar xyvf filename ,這很不錯的tar命令被不斷的完善。
說明:
A:有時候一些文件必須安裝在用戶的 home 目錄下,或更多的是在一個固定的目錄,比如 /, /usr/src, 或 /opt 。所以必須仔細閱讀安裝包的配置信息。當一個軟體包里如果有config 和 Makefiles 文件則最好去編輯它,這里包括了安裝指令和說明。提示:你改變 makefile 會導致不同的結果。大部分軟體包允許用 make install 自動處理安置二進制文件在適當的系統位置。
B:你可能碰到過一些共享文件、shell 存檔文件、尤其是 Internet 上的源碼新聞組。它們保留的原因是具有人性化的可讀性,並且允許新聞組緩沖並通過它們篩選和剔除出不合格的。它們可能用 unshar filename.shar 命令來解壓。
C: 一些源碼存檔文件是用非標準的 DOS,Mac 或其他壓縮的比如:
zip, arc, lha, arj, zoo, rar, and shk.
D: 有時候,你可能需要使用一個 patch 或顯示改變了的 diff 文件來升級或修復存檔的源碼文件。這 doc 文件或者 README 文件將告訴你怎麼去使用。一個很好的命令用標准語法來調用的命令是 patch < patchfile.
2: 關於 rpm 安裝包
一些 Linux 用戶懼怕通過使用源碼來手動安裝軟體包,不過現在有方便的 rpm 和 deb 或 新格式的 slp 包。例如:rpm 安裝運行平穩又快,作為一個軟體安裝在某幾個有名的操作系統。
作為方便的RPM包也存在很多不好的缺點,例如:
A: 要了解軟體中更多更詳細的內容你必須去在二進制中去了解,而不是rpm包。
B: 還有安裝一個 rpm 包如果需要依賴關系那麼安裝就可能會導致失敗。
C: 當 rpm 請求你系統中不同版本的庫,那麼安裝將不能繼續,除非你為錯誤的庫位置創建連接符號到正確的位置。
說明:必須使用root 安裝 rpm 和 deb 。因為它需要必須的寫入許可權。
最簡單的,用命令 rpm -i packagename.rpm 和 dpkg --install packagename.deb 會自動解包和安裝。
3:關於安裝 Linux 包出現的一些問題及解決方案
假設 make 失敗有個鏈接錯誤: -lX11: No such file or directory,正好在 xmkmf 之後已被調用,這可能意味著 Imake 不能被完全建立。檢查第一部分 Makefile 文件的的行是這樣:
· LIB= -L/usr/X11/lib
· INCLUDE= -I/usr/X11/include/X11
· LIBS= -lX11 -lc -lm
這個 -L 和 -I 開關告訴編譯器和鏈接分別在哪裡找到 library 和 include 文件。在這個例子里, X11 庫應該在 /usr/X11/lib 目錄,且 X11 包含文件應該在 /usr/X11/include/X11 目錄里。假如對於你的機器上的這個錯誤,請處理修改 Makefile 並重新再 make。
沒有聲明涉及的數學庫函數,像下列各項:
/tmp/cca011551.o(.text 0x11): undefined reference to `cos'
要修復它,需要明確鏈接到匹配的庫,在 Makefile (看先前的例子) 里增加一個 -lm 到 LIB 或 LIBS 標記 。
用其他方法嘗試
仍然失敗 如果失敗,參考下列腳本:
make -DUseInstalled -I/usr/X386/lib/X11/config
這個直接方式的類別相當於。
在少數例子里,用 root 運行 ldconfig 可能會解決:
# ldconfig 更新共享庫鏈接符號。
一些 Makefiles 使用你系統里未被承認的庫別名。一個例子,構建可能需要 libX11.so.6 ,但是在 /usr/X11R6/lib 不存在文件或鏈接。然而,在那裡是 libX11.so.6.1。解決方法是用 root 運行ln -s /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/lib/libX11.so.6 ,接著需要運行 ldconfig 。
有一些包需要你安裝一個或更多庫的升級版本。需要拷貝一個或更多的庫到適當的目錄里,刪除舊的庫,重新設置動態鏈接庫。
4:一些其他的問題處理
安裝一個shell 腳本如果出現:No such file or directory 的錯誤消息。這是可以檢查文件許可權確定文件事可執行的,並檢查文件頭確定是否 shell 或程序是腳本在指定的位置被調用。一個例子,這個腳本可能是這樣開始的:
#!/usr/local/bin/EDEN
如EDEN的實際安裝位置是在你的 /usr/bin 目錄,用一個 /usr/local/bin 替代
這個腳本不能運行有兩個方法來糾正!!
A: 文件頭改成 #!/usr/bin/EDEN
B: 或增加一個鏈接符, ln -s /usr/bin/EDEN
5:一個典型的例子 Xloadimage
首先說明下面的例子來源於國外網站的一個技術實例,這里我做了翻譯和整理。
這個例子展現一個簡單的問題。xloadimage 程序對我的圖形工具的調整設置是有用的附加。從源碼目錄拷貝文件,用 tar xzvf 解壓文件,可是在運行 make 的時候出現令人討厭的錯誤並停止了。
gcc -c -O -fstrength-rece -finline-functions -fforce-mem
-fforce-addr -DSYSV -I/usr/X11R6/include
-DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\" mcidas.c
In file included from /usr/include/stdlib.h:32,
from image.h:23,
from xloadimage.h:15,
from mcidas.c:7:
/usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215:
conflicting types for `wchar_t'
/usr/X11R6/include/X11/Xlib.h:74: previous declaration of
`wchar_t'
make[1]: *** [mcidas.o] Error 1
make[1]: Leaving directory
`/home/thegrendel/tst/xloadimage.4.1'
make: *** [default] Error 2
這個錯誤消息包含了實質的線索:
查看 image.h 文件的 23 行:
#include < stdlib.h>
在源碼的某處對於 xloadimage, wchar_t 已經在指定標准 include 文件重新定義。 告訴我們首先在 image.h 的 23 行嘗試注釋它,或許 stdlib.h include 是不存在的,畢竟不是所有都是必需的。
在這點,構建中的收益來源於所有任何一個致命錯誤。xloadimage 現在功能正常。
6: 安裝 Linux 包的一些總結
堅持自己動手處理所有的安裝出現的問題,不斷總結努力學習,從錯誤里去仔細研究,努力動手排錯,從每個不足甚至失敗的地方得到擴充和提升,可以增強安裝構建軟體的技巧。
⑥ 源代碼怎麼編譯成deb
deb是軟體的打包格式,不用翻譯的,用Debian提供的專門工具程序做。
⑦ ubuntu下如何獲取源碼包和源碼
1、在獲取源碼包之前,確保在軟體源配置文件/etc/apt/sources.list中添加了deb-src項 2、使用如下命令獲取xxx源碼包的詳細信息: sudo apt-cache showsrc xxx這用來查詢當前鏡像站點中是否有該源碼包。 3、源碼包中通常包含3個文件,分別以dsc,orig.tar.gz和diff.gz為後綴名。 sudo apt-get source xxx 命令來獲取源碼包,它會將源碼包下載到用戶當前目錄 並在命令執行過程中,調用dpkg-source命令,根據dsc文件中的信息,將源碼包解壓到同名目錄中,應用程序的源代碼就在這裡面。 sudo apt-get source xxx 要強調的是,在下載源碼包前,必須確保安裝了dpkg-dev(執行」apt-get install dpkg-dev」來安裝), 否則,只會下載源碼包的3個文件,但不會解壓縮源碼包。當然你也可以自己用dpkg-source命令去解壓縮源碼包。 4、在編譯源碼包前,需要安裝具有依賴關系的相關軟體包。使用」apt-get build-dep」命令可以主動獲取並安裝所有相關的軟體包。 sudo apt-get build-dep xxx 5、現在可以來編譯源碼包了,首先進入源碼所在目錄,使用dpkg-buildpackage命令來編譯源碼包,它會將生成的Deb軟體包放置在上層目錄中。cd xxx sudo dpkg-buildpackage 這樣就會編譯生成xxx_i386.deb 6、安裝軟體包。使用」dpkg –i」命令來安裝生成的Deb軟體包。
⑧ Linux的rpm包、deb包、tar源碼、apt、yum這些軟體安裝方式哪個更好
看你用什麼系統了
Redhat、CentOS、Fedora這些紅帽系的,單個包用RPM,如果有資源庫的話用YUM,可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包
Debian、Ubuntu用deb包,apt與紅帽中的yum工具類似
如果是源碼編譯的話,用tar包
再看看別人怎麼說的。
⑨ 如何從Linux源碼創建RPM或DEB包
在Linux系統操作中,因為某些原因而想要直接從源碼創建安裝的軟體包,下面就如何在Linux系統下從源碼創建RPM或DEB包,以便將來可以更容易的卸載程序。
如果已經從它的源碼運行「make install」安裝了linux程序。想完整移除它將變得真的很麻煩,除非程序的開發者在Makefile里提供了uninstall的目標設置。否則必須在安裝前後比較系統里文件的完整列表,然後手工移除所有在安裝過程中加入的文件。
這時候Checkinstall就可以派上使用。Checkinstall會跟蹤install命令行所創建或修改的所有文件的路徑(例如:「make install」、「make install_moles」等)並建立一個標準的二進制包,讓能用發行版的標准包管理系統安裝或卸載它,(例如Red Hat的yum或者Debian的apt-get命令)。已知它在 Slackware、SuSe、Mandrake 和 Gentoo 上也工作很好,請參考其官方文檔。
在這只集中在紅帽子和Debian為基礎的發行版,並展示怎樣從源碼使用Checkinstall創建一個RPM和DEB軟體包
在linux上安裝Checkinstall
在Debian及其衍生發行版上安裝Checkinstall:
# aptitude install checkinstall
在紅帽子的發行版上安裝Checkinstall,你需要下載一個已經打包好的Checkinstall rpm包(例如:從 http://rpm.pbone.net/找到),不過它已經從Repoforge庫里刪除了。這個包是針對Cent OS6的,不過也可在Cent OS7里工作。
# wget
ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-6/x86_64/checkinstall-1.6.2-3.el6.1.x86_64.rpm# yum install checkinstall-1.6.2-3.el6.1.x86_64.rpm
一旦checkinstall安裝好,你就可以用下列格式創建一個特定的軟體包
# checkinstall 《install-command》
如果沒有參數,默認安裝命令「make install」將被使用
用Checkinstall創建一個RPM或DEB包
在這個例子里,我們將創建一個htop包,這是一個linux互動式文本模式進程查看器(類似 top)。
首先,讓我們從項目的官方網站下載源代碼,作為一個好的習慣,我們存儲源碼包到/usr/local/src下,並解壓它。
# cd /usr/local/src# wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz# tar xzf htop-1.0.3.tar.gz# cd htop-1.0.3
讓我們看看htop的安裝命令是什麼,以便我們能用Checkinstall命令調用它,如下面所示,htop用「make install」命令安裝。
# 。/configure# make install
因此,要創建一個htop安裝包,我們可以不帶任何參數的調用checkinstall,這將使用「make install」命令創建一個包。在這個過程中, checkinstall命令會問你幾個問題。
簡而言之,如下命令會創建一個htop包:
# 。/configure# checkinstall
「Should I create a default set of package docs?(我會創建一個默認設置的包文件?)」,回答「Y」:
此可以輸入一個包的簡短描述,然後按兩次回車:
輸入一個數字以修改下面的任何值或ENTER繼續:
上面就來Linux系統下使用checkinstall從源碼創建RPM或DEB包的方法。