ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

银河麒麟V10换源实操:解决apt安装慢与更新失败

银河麒麟V10换源实操:解决apt安装慢与更新失败 1. 为什么换源麒麟官方源的痛点和镜像源到底在解决什么问题先说说我为什么折腾这个事。银河麒麟V10系统装好之后第一件事永远是装软件。不管你用的是桌面版还是服务器版默认带的软件源都是从官方仓库拉取速度非常不稳定。尤其在内网环境或者办公室带宽本身就不大的情况下apt install一个软件下载进度条能卡在那里半天不动。我甚至遇到过下载到一半直接超时断掉最后包管理器报错还得重新来。这种情况不是麒麟独有的所有基于 Debian/Ubuntu 架构的发行版都会遇到。银河麒麟V10本身兼容 Ubuntu 的软件包管理机制底层用的是apt和dpkg所以换源的核心思路跟 Ubuntu 基本一脉相承。区别在于麒麟的仓库地址、系统版本代号、以及官方推荐的镜像源列表跟 Ubuntu 官方是两回事不能直接照搬 Ubuntu 的源配置否则容易出现源路径 404或者签名校验不通过的问题。这里先把这个逻辑讲透。换源本质上就是把/etc/apt/sources.list或者/etc/apt/sources.list.d/里配置的下载地址从官方仓库改成国内访问更快的镜像源。这些镜像源做的事情很简单定期同步麒麟官方仓库的全部软件包文件和元数据提供一个地理位置更近、带宽更充足的下载入口。你的机器向镜像源发起请求镜像源把软件包返回给你这个过程和访问官方仓库在逻辑上没有区别只是物理路径变了。所以换源解决的核心问题有两个延迟和带宽国内访问境外或异地服务器延迟高镜像源一般部署在骨干网节点速度有质的提升。稳定性官方源偶尔会出现抽风尤其是国内网络环境下经常出现连接超时、TLS 握手失败、中断。镜像源因为链路更短丢包率低稳定性好得多。还有一个很多人忽略的问题银河麒麟V10 的版本代号跟 Ubuntu 不是完全一致的。比如麒麟V10 桌面版基于 Ubuntu 的某个版本制作但你在源配置里写的却是kylin代号而不是 Ubuntu 的focal或bionic。这一点后面我会详细展开。另外热词里反复出现“银河麒麟安装软件命令”也说明很多用户是在装软件的过程中才意识到源的问题。其实最常用的命令就那几个apt update刷新软件列表apt install 软件包名安装软件apt search 关键字查找软件apt remove 软件包名卸载软件。这些命令在换源前后都会用到而且换完源之后你会发现同一个命令的响应速度天差地别。2. 换源前必须确认的四件事系统版本、架构、网络环境、现有源备份2.1 确认系统版本和代号这一步错了后面全白搭银河麒麟V10 分为桌面版和服务器版桌面版面向个人用户服务器版面向机房部署两者虽然都是 V10但底层的软件源配置不一定兼容。服务器版还分 SP1、SP2、SP3 等修订版本不同小版本的源路径也可能有差异。进入系统之后先跑这条命令cat /etc/os-release输出结果里会明确告诉你系统名称、版本号、ID。比如常见的输出包括NAMEKylin VERSIONV10 (SP3) IDkylin VERSION_IDV10-SP3 PRETTY_NAMEKylin V10 SP3看到这些信息之后心里就有数了。接下来看基础系统是什么执行cat /etc/apt/sources.list或者直接列出源目录里所有的源文件ls /etc/apt/sources.list.d/ cat /etc/apt/sources.list.d/*.list麒麟默认的源配置通常会指向类似archive.kylinos.cn的官方地址。这个地址本身是能用的问题只是速度和稳定性。你要做的是找到一个速度更快的替代品同时确保替代品的仓库结构里包含了当前系统需要的全部组件。在动手之前最稳妥的办法是把当前的源文件完整备份一份。很多人跳过这一步结果改完源之后发现某个软件装不上想回退却找不回原来的配置只能到处问人“麒麟默认的源内容是什么”。备份很简单sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo cp -r /etc/apt/sources.list.d /etc/apt/sources.list.d.bak如果源文件不在默认位置用find /etc/apt -name *.list先找出来再备份。2.2 确认系统架构x86 和 ARM 的源路径不一样银河麒麟V10 同时支持 x86_64 和 ARM64aarch64两种架构这个参数直接决定了源路径里应该写什么。比如你在 x86 机器上用了 ARM 的源apt update 会直接报错因为仓库元数据里根本没有 x86 的包。确认架构的方法uname -m输出x86_64就说明是 64 位 Intel/AMD 架构输出aarch64说明是 ARM 架构。记住这个结果后面配置源的时候会用到。还有一个容易被忽略的情况银河麒麟V10 服务器版在部分国产 CPU如飞腾、鲲鹏、龙芯上运行龙芯是 mips64el 架构跟 ARM 又不一样。但日常使用中绝大多数人遇到的是 x86_64 和 aarch64 两种这里优先讲这两个。2.3 确认网络状态和 DNS 是否正常换源之后 apt update 失败很多时候不是源本身的问题而是网络环境压根没通。先做一个基础测试ping -c 4 mirrors.ustc.edu.cn如果 ping 不通再看 DNS 解析nslookup mirrors.ustc.edu.cn如果 nslookup 报错说明 DNS 配置不对这时候不管换哪个源都是白费。内网环境还有可能被防火墙挡了 80/443 端口这种情况就算源配置写得再标准也无济于事。网络确认没问题之后才进入真正的换源环节。3. 实操换源图形界面、命令行、以及针对麒麟的特殊处理3.1 图形界面换源适合刚入门、不习惯记命令的用户银河麒麟桌面版自带“软件更新设置”图形工具入口通常在“开始菜单 → 设置 → 软件和更新”或者直接在终端执行kylin-software-center不同版本界面略有差异但逻辑差不多。打开之后找到“下载服务器”或“软件源”选项卡里面会列出官方源和一些镜像源选项。你只需要选择速度最快的那个点击确认系统会自动刷新软件列表。这个方式最直观不需要记忆任何命令对新手极度友好。但它有个天然局限图形界面里预置的镜像源列表有限不一定包含你想用的源。比如你想用清华源或阿里源图形界面里可能没有这个选项这时候就得走命令行。还有一个细节图形界面工具修改源之后它改的可能是/etc/apt/sources.list也可能是在/etc/apt/sources.list.d/下新建了一个独立文件。修改完成后最好检查一下避免后面手动操作时搞不清楚配置在哪。3.2 命令行换源最稳定、最可控的方式命令行的方式分两种情况一种是源文件里只有一个公开源直接全部替换另一种是源配置分散在多个文件里需要逐个处理。以最常见的桌面版为例默认源文件内容是deb https://archive.kylinos.cn/kylin/KYLIN-V10 desktop main universe multiverse deb-src https://archive.kylinos.cn/kylin/KYLIN-V10 desktop main universe multiverse我推荐替换为清华镜像源。编辑文件sudo vim /etc/apt/sources.list把内容替换为deb https://mirrors.tuna.tsinghua.edu.cn/kylin/KYLIN-V10 desktop main universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/kylin/KYLIN-V10 desktop main universe multiverse注意这里desktop是桌面版的组件路径。如果你用的是服务器版这个位置要改成server或对应的版本标识具体要看镜像站提供的目录结构。建议先用浏览器打开https://mirrors.tuna.tsinghua.edu.cn/kylin/看里面有哪些目录再决定路径怎么写。ARM 架构的机器清华源同样提供了对应的仓库路径比如deb https://mirrors.tuna.tsinghua.edu.cn/kylin/KYLIN-V10-SP1 main universe multiverse这里路径里的KYLIN-V10-SP1是具体版本目录名得按照你系统实际版本来选。判断方法还是那句打开镜像站目录对着系统版本找。如果你不想用清华源中国科学技术大学源、阿里源也都是稳定选择。中科大源地址格式deb http://mirrors.ustc.edu.cn/kylin/KYLIN-V10 desktop main universe multiverse阿里源地址格式deb http://mirrors.aliyun.com/kylin/KYLIN-V10 desktop main universe multiverse实际测试下来三个源在麒麟软件包的同步完整度上差别不大主要看你的网络环境在哪里更快。我在华东地区阿里和清华的速度都很可观中科大略慢一点但也能用。改动完成后执行sudo apt update看到Get: ...的行快速滚动最后提示Reading package lists... Done没有报错说明源配置正确。这时候再装一个软件测试速度比如sudo apt install htop下载速度如果达到几兆每秒说明换源成功。3.3 麒麟 V10 特有的源配置形态有时不止一个源文件有些版本的麒麟源信息写在/etc/apt/sources.list.d/kylin.list里默认的sources.list文件反而是空的。这种情况让人摸不着头脑很多人改了半天sources.list发现没用原因就在这里。排查方法很简单ls -l /etc/apt/sources.list.d/ cat /etc/apt/sources.list.d/*.list看到哪个文件里包含deb开头的行就改哪个文件。改完之后记得同步备份防患于未然。还有一种情况是源文件里有条件禁用逻辑比如某些源默认是注释状态用#号屏蔽掉只启用其中一部分。你在改的时候要把需要的行取消注释不需要的删掉或注释掉。这是 Linux 包管理的通用规则麒麟也遵循这一点。3.4 双管齐下换完软件源顺手解决 pip 和 conda 的源热词里频繁出现pip换源和conda换源说明很多人装 Python 包时也被卡过。麒麟系统自带的 Python 环境使用 pip 安装第三方库时默认访问官方 PyPI 源速度同样感人。pip 换源的方法mkdir -p ~/.pip vim ~/.pip/pip.conf写入[global] index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple [install] trusted-host mirrors.tuna.tsinghua.edu.cn保存后pip 安装速度会有明显的提升。注意如果机器上有多个 Python 环境比如虚拟环境或者 conda 环境需要每个环境下都配置一份 pip.conf或者直接配置在系统级/etc/pip.conf。conda 换源的方法conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes或者直接修改~/.condarc文件。这里有一个坑清华源已经停止对部分旧版 anaconda 仓库的同步如果你的 conda 版本太旧add 之后会提示 404。解决办法是换成官方仓库加镜像的组合方式或者升级 conda 版本。4. 换源之后立刻会碰到的三个经典坑公钥失效、更新失败、包依赖错乱4.1 报错 “The following signatures couldnt be verified because the public key is not available”这个报错在换源后第一次apt update时最常见。原因很简单新源的发布者公钥没有导入到系统中。原来的源用的是麒麟官方的公钥现在换了源源站可能使用了不同的密钥签名 Release 文件你就需要手动导入新公钥。解决方法sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 报错里给出的KEY_ID比如报错信息里可能写着NO_PUBKEY 3B4FE6ACC0B21F32那你把3B4FE6ACC0B21F32换成对应 KEY_ID 执行就好。有些镜像站会提供自己的公钥文件直接下载安装wget -qO- https://mirrors.tuna.tsinghua.edu.cn/kylin/kylin-key.gpg | sudo apt-key add -不同站的公钥文件路径不一样先看站的说明文档。这个方法相对麻烦一点但胜在稳定。这里要注意apt-key在新版 Debian/Ubuntu 中已被标记为废弃但在麒麟 V10 上仍然可用。万一你的系统里apt-key命令不存在可以用另一种方式sudo apt-get install -y wget gpg wget https://mirrors.tuna.tsinghua.edu.cn/kylin/kylin-keyring.gpg sudo gpg --no-default-keyring --keyring /usr/share/keyrings/kylin-archive-keyring.gpg --import kylin-keyring.gpg然后把源文件里deb行改成deb [signed-by/usr/share/keyrings/kylin-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/kylin/KYLIN-V10 desktop main universe multiverse这样 apt 就会用指定的密钥文件来验证源签名。4.2 报错 “Failed to fetch …… 404 Not Found”这个报错基本上可以断定是源路径写错了。要么是版本代号对不上要么是组件名写错。比如你写的路径里没有desktop这个目录源站返回 404apt 就会报这个错。处理流程分三步第一步打开浏览器访问镜像站对应的 kylin 目录看清楚实际的目录结构。第二步对照系统版本找到与你匹配的目录名。第三步修改sources.list中的路径重复sudo apt update。还有一种情况是镜像站本身同步不完整某些软件包还没有从上游同步过来。这种不是你的问题换个镜像站就好。我在实测中发现不同镜像站对麒麟仓库的同步频率不一样有时候清华源同步慢但中科大已经同步完成。遇到 404 可以先换源站试试别急着认定自己配错了。4.3 报错 “Package has unmet dependencies”这个报错说明你的系统里部分软件包的版本和源里提供的版本不一致。换源之后新源里的某个软件包版本比当前系统里的低或者依赖的库版本不对apt 就会提示依赖关系无法满足。这种情况通常发生在混合使用多个源的时候。比如你同时启用了官方源和镜像源某些包从官方源装某些包从镜像源装两边版本不一致最后就乱套了。最简单的解决办法是sudo apt --fix-broken install让 apt 自动处理依赖。如果还不行可以试试sudo apt update --fix-missing再不行就需要手动指定版本安装了。我这里强调一个原则尽量保持单一软件源。不要同时启用两个不同源的同一套仓库否则迟早会踩依赖坑。4.4 别忽略的隐藏坑源里没有某个软件包和内核/系统组件有关麒麟 V10 不是纯粹的 Ubuntu它定制了内核、桌面环境和部分系统组件。有些 Ubuntu 源里有的软件包麒麟的源里不一定有。如果你换成了 Ubuntu 原版源apt update 能成功但装某些内核模块、桌面插件时可能找不到包。最典型的例子是linux-image和linux-headers这类内核包。麒麟 V10 的内核版本跟 Ubuntu 官方的内核版本不完全一致如果你强行用 Ubuntu 的源去更新内核很可能把系统搞崩。所以换源时优先选择专门提供麒麟仓库的镜像站而不是用 Ubuntu 源强行替代。这一点在热词里反复出现的“银河麒麟v10命令大全”“银河麒麟ssh升级”这些需求里也有体现——SSH 升级和内核升级一样牵涉到系统底层用错源轻则升级失败重则系统起不来。5. 换源解决不了的问题应用商店、离线安装、wine 包这种源外问题换源能解决“下载速度慢”但解决不了“软件根本不在仓库里”。这是我踩过多次坑之后总结出来的规律。麒麟的应用商店软件中心有一套独立的软件分发机制部分商业软件和第三方适配软件只通过应用商店分发不走 apt 源。你换上再快的源在应用商店里搜不到的东西还是搜不到。热词里有一批常见需求“银河麒麟离线安装nginx”“银河麒麟安装qt”“银河麒麟pageoffice怎么安装”“银河麒麟系统v10 微信”。这些软件有一个共同点要么是通过应用商店安装要么需要手动下载安装包离线安装要么涉及 wine 兼容层适配。它们和 apt 源没有直接关系指望换源解决这些问题是不现实的。以离线安装为例在一台能上网的机器上把.deb包下载下来拷贝到内网机器上然后sudo dpkg -i 软件包名.deb如果报依赖错误再补装依赖sudo apt-get -f install这个过程中源有没有换不重要重要的是你的.deb包和系统架构匹配。x86 系统的包不能装到 ARM 系统上这一点和换源时确认架构是同样的逻辑。再比如微信的安装麒麟系统上经常用 Wine 兼容层来运行 Windows 版微信。这个场景下你需要关心的不是 apt 源而是 wine 版本、容器环境和微信安装包的路径。热词里提到“微信文件管理安装路径银河麒麟桌面操作系统v10数据盘路径改成数据盘”这已经涉及到数据挂载路径的配置了换了源也解决不了。所以我的建议是把换源当成入门第一步而不是万能钥匙。换完源之后系统能顺畅装软件了再遇到“仓库里没有的包”就老老实实走应用商店、离线包、或者第三方适配的路线逐个击破。6. 换源后的最终验证清单和长期维护建议换源成功之后建议做一次系统级的刷新和验证确认整个包管理链路是健康的。我的习惯是做四件事第一更新软件列表和升级系统包sudo apt update sudo apt upgrade -y这一步会把所有可升级的软件包更新到源里的最新版本。注意第一次升级的包数量可能很大时间取决于网络速度耐心等就好。第二安装一个开发常用的软件包验证源功能正常sudo apt install build-essentialbuild-essential包含 gcc、g、make 等编译工具装这个包能验证源里的软件包完整性。第三检查源配置是否被意外的文件覆盖apt-cache policy这个命令会列出当前所有启用的源地址确认走的是你配置的镜像源而不是其他残留配置。第四定期关注镜像站同步状态。国内镜像站偶尔会出现同步延迟或者故障表现就是 apt update 报错或者软件包版本落后。如果遇到这种情况不要急于折腾配置去镜像站官网查一下公告很多时候是同步任务出了问题过一段时间自己就恢复了。长期维护上还有一条建议源配置文件不要乱动。把备份文件sources.list.bak保留在/etc/apt/目录下不影响系统运行关键时刻能救命。还有如果哪天你从桌面版换到服务器版或者系统小版本升级记得重新检查一遍源配置因为版本代号可能变了旧的源路径可能已经失效。最后再说一个实践中的体会。很多人换源失败不是方法不对而是太着急。改完源立刻 runapt update看到几个红字就慌以为搞坏了系统。其实 apt 的输出信息已经很明确了报错说找不到公钥你导入公钥就行报错说 404你检查路径就行报错说依赖不满足你跑修复命令就行。一步一步来Linux 包管理这套体系没有玄学所有问题都有逻辑可循。我自己在麒麟 V10 上换源至少折腾过五六次从最初的图形界面点到命令行手动改再到后来给内网服务器批量配置源现在基本闭着眼睛都能完成。希望这篇文章能让你少走一些弯路一次就把源配好。
返回列表