openSUSE 项目是一个由 SUSE 赞助的社区项目。该项目旨在推进 Linux 的广泛应用,提供自由、易于入手和美观实用的 openSUSE Linux 发行版。openSUSE 使用 zypper
作为包管理器,与 SUSE Linux Enterprise 保持了一致。
此发行版现在默认提供包括 Leap,Tumbleweed,Slowroll,leap micro 和 Micro OS 在内的五个发行版变体。
openSUSE 默认使用 MirrorCache 替换旧的 MirrorBrain 作为技术统一镜像入口进行镜像站点的监测和管理以及下载时的镜像源分配服务,免去用户需要手动更换镜像的不确定性和困难,并从 2023.07 开始一并使用 fastly CDN (cdn.opensuse.org) 进行分发,从而给用户提供更好的便利性和安全性,通常情况下使用默认配置即可。MirrorBrain 和 MirrorCache 的具体区别可参见此链接。
openSUSE 默认启用了 RIS 和 MirrorCache 技术用于统一分发软件仓库更改和镜像,通常情况下无需更改镜像,但可以通过禁用官方源并启用更高优先级的其他镜像来实现更换镜像源的操作。
由于 RIS 的存在,手工关闭单个官方源仓库的刷新,将在下次执行更新操作时被重新启用,在执行更新时 zypper
仍需要和官方源(download.opensuse.org)进行同步,因此在不更改 openSUSE
服务的前提下,所有针对官方源的修改将在下次仓库或软件更新时被覆盖或重置。
下面提供了三种方法以供用户选择来保留或使用 RIS。无论是否禁用 RIS,都可以使用高优先级的软件源替代官方源进行使用。
在此目标下,通常无需对系统软件源进行任何更改,更新时会被自动分流至任意注册到 MirrorCache 的镜像站。这也是官方最推荐的做法。
下面流程提供了一种通过修改配置文件半永久性禁用 RIS 的方法,但同时保留了 zypper
的 RIS
特性满足官方的推荐更新方式,来实现临时禁用 RIS 自动刷新。
/etc/zypp/services.d/openSUSE.service
;enabled
值为 0
;autorefresh
值为 0
;更改后可以指定更高优先级的软件源,并同时可以免去使用第三方软件源但仍和官方服务器通信的不便。
请注意:这种方法的更改会在软件包 openSUSE-repos-*
所包含的多个软件包更新后被覆盖,需要重新执行更改。对于希望方便维护系统,但又不需要定期和官方主服务器通信的用户,我们推荐这种方式。
完全禁用 RIS 意味着用户需要手工管理软件源,除非清楚这么做的目的和意义,否则通常情况下不推荐此方法。
如需还原为传统镜像源管理方式,确保在 bash
或 zsh
下执行:
{{sudo}}zypper remove openSUSE-repos-*
请注意,这可能会移除安装的包含 NVIDIA 等相关的使用 RIS 管理的第三方软件源。
查看需要恢复的 repo 文件:
ls -la /etc/zypp/repos.d/*.rpmsave
还原 repo 文件:
{{sudo}}for file in /etc/zypp/repos.d/*.rpmsave; do mv $file `echo $file | sed -s "s/\.rpmsave//"`; done
执行后需要刷新缓存。
请注意:该方法目前仍然可以使用,但如果官方给出了明确的路线图认为不再需要此种方法管理镜像源,则该方法失效。目前暂不明确不再提供还原的时间表。
禁用官方软件源
{{sudo}}zypper mr -da
添加镜像源,并启用更高优先级用以覆盖官方镜像(可更改 98
为更小的数字,越小优先级越高)
{{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/distribution/leap/$releasever/repo/oss/' mirror-oss {{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/distribution/leap/$releasever/repo/non-oss/' mirror-non-oss {{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/update/leap/$releasever/oss/' mirror-update {{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/update/leap/$releasever/non-oss/' mirror-update-non-oss
Leap 15.3 或更新版本还需添加 sle 和 backports 源
{{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/update/leap/$releasever/sle/' mirror-sle-update {{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/update/leap/$releasever/backports/' mirror-backports-update
Leap 15.3 或更新版本注:若在安装时没有启用在线软件源,sle 源和 backports 源将在系统首次更新后引入,请确保系统在更新后仅启用了六个所需软件源。可使用 zypper lr
检查软件源状态,并使用 zypper mr -d
禁用多余的软件源。
禁用官方软件源
{{sudo}}zypper mr -da
添加镜像源,并启用更高优先级用以覆盖官方镜像(可更改 98
为更小的数字,越小优先级越高)
{{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/tumbleweed/repo/oss/' mirror-oss {{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/tumbleweed/repo/non-oss/' mirror-non-oss {{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/update/tumbleweed/' mirror-factory-update
刷新软件源
{{sudo}}zypper ref
Tumbleweed 注:Tumbleweed 安装后默认会启用 oss, non-oss, update, 3 个官方软件源,
其中 oss 及 non-oss 源用于发布 Tumbleweed 的每日构建快照,快照中已包含系统所需的全部软件包及更新。
update 源用于推送工厂源 Factory 中安全和紧急更新,通常情况下分发 opensuse 镜像会完整同步该仓库。
禁用 update 源并不会使系统缺失任何功能,仅会导致极少数更新晚些推送,如有需求可以重新启用 update 源。
Slowroll 目前仍未正式发行,此发行版以 Tumbleweed 作为基础,但不可混用软件源。
部分镜像站可能并未同步或排除了此发行版。
禁用官方软件源
{{sudo}}zypper mr -da
添加镜像源,并启用更高优先级用以覆盖官方镜像(可更改 98
为更小的数字,越小优先级越高)
{{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/slowroll/repo/oss/' mirror-oss {{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/slowroll/repo/non-oss/' mirror-non-oss {{sudo}}zypper ar -p 98 -cfg '{{endpoint}}/update/slowroll/repo/oss/' mirror-oss-factory-update
刷新软件源
{{sudo}}zypper ref
以 openSUSE Leap 15.5 为例:
YaST控制中心
;软件
(Software)分组中的 软件源
(Software Repositories);服务
(Service)列为 openSUSE
的条目,选择并取消勾选 已启用(E)
(enabled(E))。此流程需要保留 名称
(Name)列为 repo-openh264
的仓库保持勾选;添加(A)
(Add(A)),类型选择为 指定 URL
,并点击下一步;软件源名称
(Repository Name)和 URL
填写为上文 Leap 或 Tumbleweed 中的仓库和对应连接,如:
软件源名称
(Repository Name):mirror-oss
URL
:{{endpoint}}/distribution/leap/15.5/repo/oss/
点击 下一步
保存并刷新仓库缓存。
此处给出通常情况下需要手工添加的仓库和发行版分支对应关系:
发行版 | 仓库名称 | URL | 备注 |
---|---|---|---|
Leap | OSS |
{{endpoint}}/distribution/leap/$releasever/repo/oss/ | - |
Leap | NON-OSS |
{{endpoint}}/distribution/leap/$releasever/repo/non-oss/ | - |
Leap | UPDATE |
{{endpoint}}/update/leap/$releasever/oss/ | - |
Leap | UPDATE-NON-OSS |
{{endpoint}}/update/leap/$releasever/non-oss/ | - |
Leap | SLE-UPDATE |
{{endpoint}}/update/leap/$releasever/sle/ | 仅使用 Backport 时需要添加 |
Leap | SLE-BACKPORT-UPDATE |
{{endpoint}}/update/leap/$releasever/backports/ | 仅使用 Backport 时需要添加 |
Tumbleweed | OSS |
{{endpoint}}/tumbleweed/repo/oss/ | - |
Tumbleweed | NON-OSS |
{{endpoint}}/tumbleweed/repo/non-oss/ | - |
Tumbleweed | UPDATE |
{{endpoint}}/update/tumbleweed/ | - |
Slowroll | OSS |
{{endpoint}}/slowroll/repo/oss/ | - |
Slowroll | NON-OSS |
{{endpoint}}/slowroll/repo/non-oss/ | - |
Slowroll | UPDATE |
{{endpoint}}/update/slowroll/repo/oss/ | - |