我正在使用debian squeeze并想为debian非自由分支创建一个离线存储库或cd / dvd。我浏览了一下互联网,所有我发现没有iso映像,也没有jidgo文件用于创建这样的映像所以我有想法从一个debian包服务器获取包使用:
wget -r --no-parent -nH -A*all.deb,*any.deb,*i386.deb \
ftp://debian.oregonstate.edu/debian/pool/non-free/
我知道我必须在我的*/etc/apt/sources.list*
中使用file来指示本地存储库但是我如何实际创建一个以便apt或aptitude能够理解这一点?
答案 0 :(得分:0)
(在质疑编辑中回答。转换为社区wiki答案。请参阅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
中的':',并使用bash工具生成更短的Content.lst
更容易解析: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
所需的文件名。mv
在这里不起作用,因为我需要在Packages.gz
中引用的结构: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/
我认为我现在唯一要做的就是创建
Contents.gz
文件。可以使用
Contents.gz
程序轻松创建apt-ftparchive
文件:apt-ftparchive contents > Contents-i386 && gzip -f Contents-i386