2012-02-23 26 views
1

我正在使用debian squeeze並希望爲debian非免費分支創建脫機版本庫或cd/dvd。我環顧四周,互聯網和所有我發現的是,有沒有ISO映像,也有jidgo文件,所以我使用有想法從Debian軟件包的一個服務器獲取程序包創建這樣的圖像:如何爲非debian創建一個離線資源庫?

wget -r --no-parent -nH -A*all.deb,*any.deb,*i386.deb \ 
ftp://debian.oregonstate.edu/debian/pool/non-free/ 

我知道我必須使用file:在我的*/etc/apt/sources.list*中表示本地存儲庫,但我如何實際創建一個以便apt或aptitude能夠理解這一點?

+0

我建議您閱讀Debian的文檔有關建立自己的貼切回購:http://wiki.debian.org/HowToSetupADebianRepository – birryree 2012-02-23 22:35:34

+0

Contents.gz文件可以很容易地使用apt-ftparchive程序創建感謝沒有看到它在那裏apt-ftparchive爲我解決這個問題。 – l1zard 2012-02-24 11:41:25

回答

0

(回答的質疑,編輯轉換爲社區維基答案見What is the appropriate action when the answer to a question is added to the question itself?。)

的OP寫道:

更新:隨着一些醜陋的招數我能提取所需要的數據從池和dist文件夾。

我用解壓Package.gz做到這一點:

grep '^Package\:.*' Packages|awk '{print $2}' >> Names.lst 
grep '^Version\:.*' Packages|awk '{print $2}' >> Versions.lst 
grep '^Architecture\:.*' Packages|awk '{print $2}' >> Arch.lst 

隨着vim我找到並刪除「:」文件Versions.lst併產生短Content.lst更容易使用bash的工具來分析:

paste Names.lst Versions.lst Arch.lst >> Content.lst 

現在我這樣做:

cat content.lst | while read line; \ 
do echo "$(echo $line|awk '{print $1}')\ 
_$(echo $line|awk '{print $2}')_$(echo $line|awk '{print $3}')";\ 
done >> content.lst.tmp && mv content.lst.tmp content.lst 

它生成我需要的debian目錄中的文件名。當我完成我的下載使用wget我發現和rsync所需的文件名。

cat content.lst |while read line; \ 
do find debian/ -type f -name ${line}.deb -exec \ 
rsync -rtpog -cisR {} debian2/ \; ;done 
rm -r debian && mv debian2 debian 

要獲得完整的dists目錄樹結構我再次使用wget

wget -c -r --no-parent -nH -A*.bz2,*.gz,Release \ 
ftp://debian.oregonstate.edu/debian/dists/squeeze/non-free/binary-i386/ 

我想我唯一mv因爲我所需要的結構,因爲它是指在Packages.gz不在這裏工作了現在必須做的是創建Contents.gz文件。

apt-ftparchive contents > Contents-i386 && gzip -f Contents-i386 
相關問題