如何为 debian non-free 创建离线存储库?

发布于 2025-01-08 14:47:25 字数 382 浏览 1 评论 0原文

我正在使用 debian scrap 并希望为 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 理解这一点?

I am using debian squeeze and want to create an offline repository or a cd/dvd for the debian non-free branch. I looked around the internet and all i found out is that there are neither iso images nor there are jidgo files for creating such image so I had the idea to fetch the packages from one of the debian package servers using:

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

I know that that I must use file: in my */etc/apt/sources.list* to indicate local repositories but how do I actually create one so that apt or aptitude understands this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半步萧音过轻尘 2025-01-15 14:47:25

(在有疑问的编辑中回答。已转换为社区 wiki 答案。请参阅 当问题的答案添加到问题本身时,适当的操作是什么?

OP 写道:

更新:通过一些丑陋的技巧,我能够从池和 dist 文件夹中提取所需的数据。

我使用解压的Package.gz来执行此操作:

grep '^Package\:.*' Packages|awk '{print $2}' >>>名称.lst
grep '^版本\:.*' 包|awk '{print $2}' >>版本.lst
grep '^Architecture\:.*' Packages|awk '{print $2}' >> Arch.lst

使用 vim,我找到并删除文件 Versions.lst 中的 ':',并生成更短的 Content.lst,更容易使用 bash 工具解析:

粘贴 Names.lst Versions.lst Arch.lst>>内容.lst

现在我这样做:

cat 内容.lst |读取行时; \
执行 echo "$(echo $line|awk '{print $1}')\
_$(echo $line|awk '{print $2}')_$(echo $line|awk '{print $3}')";\
完成>> content.lst.tmp && mv 内容.lst.tmp 内容.lst

它会在 debian 目录中生成我需要的文件名。使用 wget 完成下载后,我找到并 rsync 所需的文件名。 mv 在这里不起作用,因为我需要 Packages.gz 中引用的结构:

cat content.lst |当读取行时; \
找到 debian/ -type f -name ${line}.deb -exec \
rsync -rtpog -cisR {} debian2/ \; ;完毕 
rm -r debian && mv debian2 debian

为了接收完整的 dists 树结构,我再次使用了 wget

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

我认为我现在唯一要做的就是创建 Contents.gz 文件。

可以使用 apt-ftparchive 程序轻松创建 Contents.gz 文件:

apt-ftparchive 内容>目录-i386 && gzip -f 内容-i386

(Answered in a questioned edit. Converted to a community wiki answer. See What is the appropriate action when the answer to a question is added to the question itself? )

The OP wrote:

Update: With a few ugly tricks I was able to extract the needed data from pool and the dist folder.

I used the unzipped Package.gz to do this:

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

With vim I find and remove the ':' in the file Versions.lst and generate a shorter Content.lst more easy to parse with bash tools:

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

Now I do this:

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

which generates me the file names in the debian directory I need. When finishing with my downloads using wget I find and rsync the needed file names. mv does not work here because I needed the structure as it is referring to in 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

To receive the complete dists tree structure I used wget again:

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

I think the only thing I have to do now is to create the Contents.gz file.

The Contents.gz file can easily be created using the apt-ftparchive program:

apt-ftparchive contents > Contents-i386 && gzip -f Contents-i386
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文