如何下載「Source Package」
測試環境
以下測試是在「Xubuntu 14.04 64位元」。
前提
以「hello」這個「Package」為例。
方式一
執行「apt-get source」下載「hello」這個套件的「Source Package」。
$ apt-get source hello
顯示下面的訊息
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 711 kB of source archives.
Get:1 http://tw.archive.ubuntu.com/ubuntu/ trusty/main hello 2.8-4 (dsc) [1,290 B]
Get:2 http://tw.archive.ubuntu.com/ubuntu/ trusty/main hello 2.8-4 (tar) [697 kB]
Get:3 http://tw.archive.ubuntu.com/ubuntu/ trusty/main hello 2.8-4 (diff) [12.5 kB]
Fetched 711 kB in 0s (762 kB/s)
sh: 1: dpkg-source: not found
Unpack command 'dpkg-source -x hello_2.8-4.dsc' failed.
Check if the 'dpkg-dev' package is installed.
E: Child process failed
其中有一行訊息
Check if the 'dpkg-dev' package is installed.
從上面的訊息可以知道,少裝了「dpkg-dev」這個套件。
基本上「hello」的「Source Package」是有下載下來
$ ls -1
顯示
hello_2.8-4.debian.tar.gz
hello_2.8-4.dsc
hello_2.8.orig.tar.gz
但是是在解開的時候出現問題。
上面的訊息有一行
Unpack command 'dpkg-source -x hello_2.8-4.dsc' failed.
所以先安裝「dpkg-dev」這個套件
$ sudo apt-get install dpkg-dev
再執行一次
$ apt-get source hello
這次顯示的訊息
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 711 kB of source archives.
Get:1 http://tw.archive.ubuntu.com/ubuntu/ trusty/main hello 2.8-4 (dsc) [1,290 B]
Get:2 http://tw.archive.ubuntu.com/ubuntu/ trusty/main hello 2.8-4 (tar) [697 kB]
Get:3 http://tw.archive.ubuntu.com/ubuntu/ trusty/main hello 2.8-4 (diff) [12.5 kB]
Fetched 711 kB in 1s (681 kB/s)
dpkg-source: info: extracting hello in hello-2.8
dpkg-source: info: unpacking hello_2.8.orig.tar.gz
dpkg-source: info: unpacking hello_2.8-4.debian.tar.gz
dpkg-source: info: applying 99-config-guess-config-sub
觀看有哪些檔案
$ ls -1
會顯示
hello-2.8
hello_2.8-4.debian.tar.gz
hello_2.8-4.dsc
hello_2.8.orig.tar.gz
額外一提
通常安裝「build-essential」這個「Metapackage」時,就會安裝「dpkg-dev」這個套件了。
可以執行下面的指令驗證看看
$ apt-cache show build-essential | grep Depends:
就會顯示
Depends: libc6-dev | libc-dev, gcc (>= 4:4.4.3), g++ (>= 4:4.4.3), make, dpkg-dev (>= 1.13.5)
或是執行
$ apt-cache rdepends dpkg-dev | grep build-essential
會顯示
build-essential
source.list
要執行「apt-get source」這個動作,還有一個要注意的,就是「/etc/apt/sources.list」,裡面要有「deb-src」開頭的設定,設定Source Repository。
例如下面這一行
deb-src http://tw.archive.ubuntu.com/ubuntu/ trusty main restricted universe multivers
更多參考
Source Repository 的 UI設定的方式,可以參考這篇「Linux Mint 如何加入 Source Repository」
Debian Reference / Chapter 2. Debian package management / 2.1.4. Debian archive basics
- Debian Wiki / SourcePackage
方式二
直接到下面的頁面,找到網址下載,以下是以「14.04(trusty)」為例。
http://packages.ubuntu.com/source/trusty/hello
用瀏覽器開啟頁面,
執行
$ lynx http://packages.ubuntu.com/source/trusty/hello
或是執行
$ firefox http://packages.ubuntu.com/source/trusty/hello
下面有一個「Download hello」,有列三個檔
File Size (in kB) MD5 checksum
hello_2.8-4.dsc 1.3 kB 1b6c5e82702d5d0c7876cd7aeb63c38b
hello_2.8.orig.tar.gz 681.1 kB 6a67cbbbc0420061ef938a9a2736fbd6
hello_2.8-4.debian.tar.gz 12.2 kB 585acd817162ae52f6abf01b8f38880b
執行下面指令下載下來
wget -c http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.8-4.dsc
wget -c http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.8.orig.tar.gz
wget -c http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.8-4.debian.tar.gz
或是將下面三行
http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.8-4.dsc
http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.8.orig.tar.gz
http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.8-4.debian.tar.gz
存成一個檔叫「list.txt」。
$ vi list.xt
存檔後,執行下面指令下載
$ wget -c -i list.txt
下載完成
$ ls -1
一樣可以看到三個檔
hello_2.8-4.debian.tar.gz
hello_2.8-4.dsc
hello_2.8.orig.tar.gz
list.txt
然後利用「dpkg-source」這個指令解開。
$ dpkg-source -x hello_2.8-4.dsc
就可以看到下面的訊息
dpkg-source: info: extracting hello in hello-2.8
dpkg-source: info: unpacking hello_2.8.orig.tar.gz
dpkg-source: info: unpacking hello_2.8-4.debian.tar.gz
dpkg-source: info: applying 99-config-guess-config-sub
並且多出一個資料夾「hello-2.8」
$ ls -1
顯示
hello-2.8
hello_2.8-4.debian.tar.gz
hello_2.8-4.dsc
hello_2.8.orig.tar.gz
list.txt
基本上,「方式二」這個流程,跟「方式一」是一樣的,只是利用一個指令就搞定了 :-)
另外也可以到下面這個網址,觀看hello有哪些檔案。
http://archive.ubuntu.com/ubuntu/pool/main/h/hello/
用瀏覽器開啟頁面,
執行
$ lynx http://archive.ubuntu.com/ubuntu/pool/main/h/hello/
或是執行
$ firefox http://archive.ubuntu.com/ubuntu/pool/main/h/hello/