按体系结构解决 Debian Pin 问题

按体系结构解决 Debian Pin 问题

我们可以在 debian 系统上安装复数架构的软件包。

$ apt-config dump | grep Arch
APT::Architecture "mipsel";
APT::Architectures "";
APT::Architectures:: "mipsel";
APT::Architectures:: "amd64";

(在这种情况下,我的本机体系结构是mipsel,并且我还安装了amd64的软件包。我通过qemu binfmt_misc运行它们。)

今天,我想使 apt 依赖解析算法尽可能为本地架构拉取软件包,如果没有本地选择,则为外国。

apt 的“Pin”机制是显而易见的方法。但架构固定尚未实现

所以我想要一个通过架构固定的解决方案。


即使我们有架构固定,我们仍然要注意不要用外国架构的包替换关键包,其中包括 init、shell 和 qemu。

答案1

  1. 我们可以针对不同的架构使用不同的镜子。

    # /etc/apt/sources.list
    deb [ arch=mipsel ] http://1.mirror.debian.org stable main
    deb [ arch=amd64  ] http://2.mirror.debian.org stable main
    

    然后通过 origin 配置固定。

    # /etc/apt/preferences
    Package: *
    Pin: origin "2.mirror.debian.org"
    Pin-Priority: /* some small number */
    
  2. 我们可以设置另一个指向镜像的 DNS 记录。例如 amd64.mirror.my.own.domain cname 1.mirror.debian.org 。有时http服务器对主机头很敏感。但有可能服务器只检查请求域名的后缀,就好像abc是合法的主机名一样,我们可以尝试通过any.prefix.abc访问它。

  3. 我们可以为镜像设置反向代理。

相关内容