
我正在用來reprepro
創建部分本地 Debian 鏡像。我的conf/updates
文件如下所示:
Name: update-wheezy
Method: http://ftp.tu-graz.ac.at/mirror/debian
Suite: wheezy
Components: main contrib non-free
Architectures: i386
FilterList: purge mirror.packages
FilterList
mirror.packages
指向包含目前安裝的所有軟體包的檔案。我使用以下命令建立此文件dpkg
:
dpkg --get-selections > conf/mirror.packages
到目前為止,一切都很好。效果很好。但後來我注意到我的本地儲存庫中缺少一些套件。的輸出dpkg --get-selections
包含一些套件名稱以 結尾的行:i386
。例子:
libxxf86dga1:i386 install
libxxf86vm1:i386 install
lighttpd install
正是那些i386
-packages 遺失了。我透過刪除後綴解決了這個問題:
dpkg --get-selections | sed 's/:i386//g' > conf/mirror.packages
現在我的問題是:
- 這是 reprepro 中的錯誤嗎?還是我做錯了什麼?手冊頁指出
FilterList
採用dpkg --get-selections
. - 有什麼方法可以
dpkg
抑制架構嗎? - 為什麼有些包有
:i386
後綴,但大多數沒有? - 為什麼架構部分是套件名稱的一部份?是否可以在同一系統上使用不同架構的相同套件?
答案1
:i386 不是套件名稱的一部分,而是指示該套件所適用的體系結構。這是 debian 引入從多個架構(“multiarch”)安裝軟體包的支援的結果。
看https://wiki.debian.org/Multiarch了解更多。
我不確定是什麼決定了是否為特定套件顯示架構。最初我以為只有當套件來自外國架構時才會顯示,但從 nharrer 的評論來看我顯然錯了。看看 nharrer 的列表並考慮其他上下文,我在中看到了 :<architecture> 我認為它可能會為所有“multi-arch:same”包顯示它
我懷疑 reprepro 中的過濾器列表功能早於多體系結構,不理解 :i386 的含義,因此將其視為套件名稱的一部分。