Linux 如何为debian non-free创建脱机存储库?
我正在使用debian Squence,希望为debian非免费分支创建一个脱机存储库或cd/dvd。我环顾了一下互联网,发现没有iso映像,也没有用于创建此类映像的jidgo文件,因此我想到使用以下方法从debian软件包服务器之一获取软件包:Linux 如何为debian non-free创建脱机存储库?,linux,debian,packages,Linux,Debian,Packages,我正在使用debian Squence,希望为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/a
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理解这一点 (在有疑问的编辑中回答。转换为社区wiki答案。请参阅)
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
所需的文件名mv
在这里不起作用,因为我需要它在包中引用的结构。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
文件
使用apt ftparchive
程序可以轻松创建Contents.gz
文件:
apt-ftparchive contents > Contents-i386 && gzip -f Contents-i386
我建议阅读Debian关于建立自己的apt回购的文档:哦,谢谢,我没有在那里看到它。apt ftparchive为我解决了这个问题。