news 2026/9/16 1:29:31

麒麟Kylin V10系统yum源更换教程:从阿里云到本地源全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
麒麟Kylin V10系统yum源更换教程:从阿里云到本地源全攻略

不用我说你也知道,Linux 系统装完之后最闹心的就是软件源慢。尤其是刚装完麒麟 KylinV10 系统,兴致勃勃想装个 Nginx 或者 Docker,结果yum install卡在那里半天没反应,最后直接来个下载超时,那一刻真的想把屏幕拍烂。我之前在给客户部署服务器时就踩过这坑,默认官方源的服务器节点在国内访问并不稳定,高峰期下载速度能跌到几十 KB/s,装个编译器都像在拉老牛车。

这篇文章就专门来解决这个问题。我会从麒麟 V10 的“血统”讲起,把一个源从官方切换到第三方仓库的全流程掰开揉碎,一步步带你走完备份、换源、清缓存、验证,顺手把 EPEL 扩展仓库和离线本地源这些进阶玩法也安排上。整个过程不玩虚的,每条命令我都会解释为什么这么写,你跟着做就行。不管你是要给生产环境换源,还是自己在虚拟机里折腾,这套方法都适用,保证让你少踩几个坑,一次搞定。

1. 动手之前:先弄清麒麟 V10 的“血统”,再决定怎么换源

1.1 为什么麒麟 V10 可以换源,而且能和 CentOS/RHEL 的仓库兼容

很多人一开始就蒙圈:麒麟系统不是国产操作系统吗?它换源是不是只能换国产源?其实不是。银河麒麟服务器版 V10 的内核和基础软件包体系跟 RHEL/CentOS 8 高度兼容,它使用的是 RPM 软件包管理格式,底层默认走的是 dnf/yum 这套机制。这意味着,只要是符合 RHEL 8 规格的 yum 仓库,麒麟系统都能直接接入使用。

这背后的原理其实很好理解:yum 源的本质就是一个带元数据索引的 HTTP/FTP 文件服务器,里面放着 rpm 包和 repodata 目录(存的是包的元数据和校验信息)。系统在安装软件时,会去源里拉取 repodata,对比本地缓存,然后下载对应的 rpm 包进行依赖解析和安装。只要包格式一致、目录结构符合规范,仓库地址放在哪、由谁维护,其实并不关键。

所以,给麒麟 V10 换源,本质上就是换一个“包下载地址”。我们既可以用国内大厂维护的第三方镜像仓库,也可以用自己内网的 HTTP 服务器或本地 ISO 挂载路径。唯一要小心的,是仓库的系统版本匹配问题——麒麟 V10 的$releasever变量可能被解析成V10,而 CentOS 源用的是8,如果直接套用 CentOS 的 repo 文件,很可能出现路径 404 的情况。这个坑我会在后面专门讲怎么绕开。

1.2 换源前必备的三项检查和环境确认

在动手换源之前,先花两分钟确认自己手上的系统版本和架构。不同架构对应的 baseurl 路径不同,弄错了后面白折腾。下面是保姆级检查命令,直接抄:

# 查看系统版本信息 cat /etc/os-release # 查看内核架构,x86_64 还是 aarch64 uname -m # 查看当前已经配置了哪些 yum 源 yum repolist cat /etc/yum.repos.d/*.repo 2>/dev/null | head -50

我建议你重点看三个东西:VERSION是不是V10或带 SP 小版本、uname -m返回的是x86_64还是aarch64、以及/etc/yum.repos.d/目录下默认有哪些.repo文件。麒麟 V10 服务器版默认的 repo 文件通常叫kylin_x86_64.repoKylin-Server-10.repo或者类似的名称,里面配置的是系统自带的官方软件源。

另外,确认一下网络连通性。先 ping 一下公网地址,再试一下能不能访问镜像站:

ping -c 4 mirrors.aliyun.com curl -I --connect-timeout 5 https://mirrors.aliyun.com/

这一步能帮你区分“源慢”和“机器根本就没联网”这两种情况,省得后面排查问题的时候把时间浪费在错误方向上。

1.3 备份官方源配置,给自己留条后路

换源前第一件事不是改文件,而是备份。系统自带的官方源虽然慢,但它是经过麒麟官方测试验证的,万一你换的第三方源在某个包上出现兼容性问题,至少还能一键切回官方源,不至于让服务器瘫在那里。备份命令很简单:

mkdir -p /etc/yum.repos.d/bak cp -r /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ ls /etc/yum.repos.d/bak/

如果你想做得更彻底一点,也可以把整个/etc/yum.repos.d/目录直接压缩备份:

tar czvf yum.repos.d.bak.tar.gz /etc/yum.repos.d/

备份完以后,我会建议你先把默认的官方源文件移到一个临时目录里,避免第三方源和官方源混在一起,出现“同一个包多个源都在提供”的冲突提示。后面验证没问题了,你再看是不是需要恢复部分官方源。

2. 第三方仓库怎么选:阿里云、清华、中科大源横向对比

2.1 几个主流镜像站的仓库地址速查

国内大大小小的 Linux 镜像站不少,但对于麒麟 V10 这种兼容 CentOS/RHEL 8 的系统,我实际用过比较稳的就这几家:阿里云、清华 TUNA、中科大 USTC。它们的共同点是带宽大、同步频率高、在国内大部分运营商网络下速度都能跑满。

镜像站麒麟仓库地址适用网络环境备注
阿里云https://mirrors.aliyun.com/kylin/KYLIN-V10/全国通用,带宽充足有专门的麒麟目录,路径清晰
清华 TUNAhttps://mirrors.tuna.tsinghua.edu.cn/kylin/KYLIN-V10/教育网骨干,高校网络优先镜像同步非常及时
中科大 USTChttps://mirrors.ustc.edu.cn/kylin/KYLIN-V10/教育网和电信网络都很快稳定性不错,历史久

除了上面这三个,腾讯云、华为云也有自己的镜像站,如果你正好在那朵云上买了服务器,用同云厂商的镜像源其实是最优解,因为走内网流量不消耗公网带宽,下载速度直接起飞。

2.2 官方源为什么慢,第三方镜像站的优势到底在哪

一句话解释:官方源服务器通常部署在核心机房,对国内的网络优化不够。你的服务器发起的每个请求都要跨运营商跳转,中途还可能经过国际链路,延迟高、丢包率也不小。国内镜像站则不同,它们一般在国内多个 IDC 有节点,走的是 BGP 多线接入,各地访问体验都相对均衡。

更重要的是,镜像站不只是“帮你下载快”,它们有完整的同步机制。比如阿里云每天会定时从上游仓库拉取最新的 rpm 包和 repodata 元数据,你在镜像站上看到的其实是一个“快照副本”。对于日常装软件、更新补丁来说,这个快照的实时性完全够用,比你直连官方源却慢到吐血要舒服得多。

我在实际使用中还会优先选阿里云,因为它除了提供麒麟仓库,还同时维护了 EPEL 仓库,方便后面配置扩展源。如果一次性把baseepel都指向同一个镜像站,还能减少不同源之间的网络差异,排查问题的时候也简单很多。

2.3 不同应用场景的选源建议

  • 生产服务器:建议优先选阿里云源,或者如果你服务器本身就在阿里云/腾讯云上,直接选云厂商内网镜像源。这类源稳定性和带宽都有保障,出问题也好找客服。
  • 开发测试虚拟机:清华 TUNA、中科大 USTC 都可以,速度和同步频率都在线,日常装包足够用。
  • 教育网内网环境:清华 TUNA 或者中科大 USTC 优先,它们在教育网内有节点,部分场景甚至能走 IPv6,速度更快。
  • 无法连外网的内网/离线环境:这时候只能做本地源,用 ISO 文件或者内网 HTTP 服务器来搭,我在第 6 章单独展开讲。

3. 手把手实操:把官方源换成阿里云源

3.1 查看当前 repo 文件,确认官方源的写法

换源之前,先看看官方 repo 文件的格式,这样你后面写第三方源的时候有参考。执行下面的命令:

cat /etc/yum.repos.d/kylin_x86_64.repo

如果文件名不一样,用ls /etc/yum.repos.d/先看一下目录里有什么。典型的官方仓库内容大概是这样的:

[kylin] name=Kylin Linux $releasever - Official baseurl=http://archive.kylinos.cn/kylin/KYLIN-V10/$basearch/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin

注意看baseurlgpgkey这两个字段。前者是仓库的实际下载地址,后者是公钥文件路径。不同版本的麒麟文件路径可能略有区别,你以实际输出为准,但大致结构就是这样的。

3.2 备份并清理原 repo 文件

上一步看完了,接下来就把官方源的文件移出去。我不建议直接删,因为你后续可能还想留一个官方源做备用。稳妥做法是移到一个独立目录:

mkdir -p /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/

移完以后再确认一下目录里只剩bak子目录,没有别的.repo文件:

ls -la /etc/yum.repos.d/

这一步的目的是避免新旧源混用。如果不做清理就直接添加新源,yum repolist里会同时出现官方源和第三方源,万一同一个软件包在两个源里版本不同、优先级不同,安装时就会出现“多个包提供同一依赖”的报警,徒增烦恼。

3.3 写入阿里云源配置

现在创建新的 repo 文件。用vi或者vim都行,文件名我习惯起得一眼就能认出来,就叫aliyun-kylin.repo

vim /etc/yum.repos.d/aliyun-kylin.repo

文件内容如下,直接复制进去:

[kylin] name=Kylin Linux V10 - Aliyun baseurl=https://mirrors.aliyun.com/kylin/KYLIN-V10/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin

这里有几个地方我要解释一下,因为后面报错大多数都出在这些细节上:

第一,$basearch变量会自动替换成x86_64aarch64,这个不用你手动改。但我建议你写完以后,用下面的命令实际展开看看路径到底对不对:

python3 -c "import yum; print(yum.YumBase().conf.yumvar['basearch'])"

不过更直观的办法是直接用浏览器或 curl 打开https://mirrors.aliyun.com/kylin/KYLIN-V10/x86_64/,看这个目录到底存不存在,有没有repodata子目录。

第二,gpgkey指向本机公钥文件。如果系统里没有这个文件,后面执行yum makecache时就会报Public key for xxx.rpm is not installed的错误。检查一下:

ls -l /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin

如果文件不存在,可以从镜像站下载后导入。命令是:

curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin https://mirrors.aliyun.com/kylin/KYLIN-V10/RPM-GPG-KEY-kylin rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin

3.4 清理缓存并生成新缓存

配置写完之后,一定要执行缓存清理。这是很多人换源之后依然碰到旧源报错的关键原因——本地已经缓存了官方源的 repodata 元数据,yum 在解析时优先读缓存,结果还在访问旧地址。命令如下:

yum clean all yum makecache

执行过程中如果看到类似Metadata cache createdLast metadata expiration check的输出,说明新源已经生效。如果碰到报错,先别慌,绝大多数情况下就是第 3.3 节里的路径或者公钥问题,第五章我会把所有高频报错集中列出。

3.5 验证新源是否生效

缓存生成完毕后,做一轮基础验证。先用下面的命令看仓库列表:

yum repolist

正常输出会包含kylin这一条,状态显示启用。然后随便装个常用的软件包试试水,比如htop或者wget

yum install -y htop

如果安装过程流畅、速度明显提升,那恭喜你,换源这一步就大功告成了。另外再用yum list available | wc -l统计一下源里可用包的数量,做到心里有数。

4. 进阶操作:挂上 EPEL 扩展仓库,并设置优先级避免依赖冲突

4.1 麒麟 V10 为什么还需要 EPEL 源

麒麟官方源里的软件包走的是“基础稳定”路线,收录的包以系统组件和常用服务为主。但实际工作中你会发现,很多常用软件在官方源里没有,或者版本旧得让人想骂人。比如装htoptreejqpython3-pip这类小而美的工具,官方源可能不全,这时候 EPEL 仓库就派上用场了。

EPEL(Extra Packages for Enterprise Linux)是红帽系发行版的一个社区维护扩展仓库,里面收录了大量 RHEL/CentOS 官方源之外的软件包,对系统兼容性也做了测试。因为麒麟 V10 和 RHEL 8 生态兼容,所以epel-8的包在麒麟上用基本没问题。注意,这里我推荐的是 EPEL 8,因为麒麟 V10 服务器版对应的是 RHEL 8 体系,不是 7,搞错了会导致依赖解析失败。

4.2 手动配置阿里云的 EPEL 仓库

麒麟官方源可能没有epel-release这个包,所以最靠谱的办法是手动写 EPEL 的 repo 文件。镜像站选阿里云,和 base 源保持一致:

vim /etc/yum.repos.d/epel-aliyun.repo

写入如下内容:

[epel] name=EPEL for RHEL 8 - Aliyun baseurl=https://mirrors.aliyun.com/epel/8/Everything/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8

这里的一个小细节是:我把$releasever直接写成了固定的8。因为麒麟的/etc/os-releaseVERSION_ID不是8,如果baseurl里写$releasever,yum 展开后路径会变成epel/V10/...,而这个目录在镜像站上根本不存在,必然 404。想省心的话,所有跨发行版的仓库配置都把版本号写死,这是我从实践中总结出来的血泪教训。

写完后同样执行:

yum clean all yum makecache

然后跑一下yum repolist,确认新增的epel仓库已经启用。

4.3 用 priorities 插件让 base 源优先,防止依赖版本覆盖

同时启用官方/第三方 base 源和 EPEL 源后,最怕发生的事就是:同一个软件包在两个源里都有,yum 在解析依赖时选了一个版本,装完以后系统行为和我们预期不一致。解决这个问题的标准做法是给源设置优先级。

在 dnf/yum 体系下,需要安装优先级插件:

yum install -y yum-plugin-priorities

如果是 dnf 后端,也可以装 dnf 的对应插件:

yum install -y dnf-plugin-priorities

装完之后,在/etc/yum.repos.d/下的每个 repo 文件末尾加一行priority=N。N 数字越小,优先级越高。比如我希望kylin源里的包优先于 EPEL 源,就分别在两个文件里加:

# aliyun-kylin.repo [kylin] name=Kylin Linux V10 - Aliyun baseurl=https://mirrors.aliyun.com/kylin/KYLIN-V10/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin priority=1
# epel-aliyun.repo [epel] name=EPEL for RHEL 8 - Aliyun baseurl=https://mirrors.aliyun.com/epel/8/Everything/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8 priority=99

设置完以后,yum 在遇到同一个软件包时,会优先从kylin源里找;只有kylin源里没有,才会去epel源找。这样一来,既能保证系统核心组件按官方源版本更新,又能享受 EPEL 源里丰富的软件包,两全其美。

4.4 用一个小测试验证优先级配置

配置完了,咱们验证一下。用yum info查看某个同时在多个源里存在的包,优先级的差别会直接反映在选择上。比如python3-pip如果在两个源里都有,你可以执行:

yum --showduplicates list python3-pip

如果输出里只显示来自kylin源的版本,说明优先级已经生效。如果一个包只在 EPEL 里有,那它会正常走 EPEL,也不会受影响。做完这步,你的 yum 源环境就算基本成型了。

5. 常见问题排查:从 404 到 gpg key 失败的现场实录

5.1 “404 Not Found” 的前因后果

这个报错在换源时出现的频率最高。先复制一段我在一台麒麟 V10 服务器上实际看到过的错误:

Errors during downloading metadata for repository 'epel': - Status code: 404 for https://mirrors.aliyun.com/epel/V10/Everything/x86_64/repodata/repomd.xml

看到V10这个字段,你就知道问题出在哪了:baseurl里用了$releasever,而麒麟系统的$releasever解析出来不是8而是V10,导致路径变得不伦不类。解决办法也很简单:把 repo 文件里的$releasever换成对应的数字版本,或者干脆写死完整路径。

另外还有一种 404 情况,是因为你的系统架构是aarch64,但镜像站当前还没同步完整的 arm64 目录,或者目录名不叫aarch64而叫arm64。遇到这种情况,最好先浏览器打开镜像站根目录,把目录树结构看一遍再写 baseurl,比瞎猜快得多。

5.2 repomd.xml 下载失败,该往哪个方向查

repomd.xml是 yum 仓库的索引文件,几乎每个源路径下都有。报错常见形式是:

Cannot download repomd.xml: Cannot download repodata/repomd.xml

排查方向按顺序来:

  1. 先确认一下源路径在浏览器里能不能打开,看目录是否存在;
  2. 确认 DNS 能不能正常解析镜像站域名:nslookup mirrors.aliyun.com
  3. 确认防火墙或安全组有没有封 443 端口;
  4. 确认 curl 能否正常访问源地址:curl -I https://mirrors.aliyun.com/

大部分时候问题出在第 1 和第 2 项。如果 curl 都访问不到,那就是网络层面的问题,换源本身解决不了,得先把网络打通。

5.3 GPG 公钥导入失败

报错提示通常长下面这样:

The downloaded RPM was not signed or has an invalid signature Public key for xxx.rpm is not installed

这种情况要么是你gpgcheck=1但本地没导入对应公钥,要么是仓库地址和公钥不匹配。解决步骤:

# 查看系统已导入的 gpg key rpm -qa gpg-pubkey* # 从镜像站手动下载公钥并导入 curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

导入完以后重新yum makecache,基本就能消掉这个报错。如果实在不想折腾,又是在内网测试环境,也可以把gpgcheck=1临时改成gpgcheck=0,但生产环境我不建议这么干,毕竟包签名校验是软件供应链安全里很重要的一环。

5.4 makecache 反复失败,缓存脏数据怎么处理

有时候你明明配置没问题,但yum makecache就是报错,而且报错信息指向旧的仓库地址。十有八九是本地dnf缓存里残留了旧元数据。这招我实测有效:

yum clean all rm -rf /var/cache/dnf/* yum makecache

/var/cache/dnf这个目录是 dnf 的本地元数据缓存,把它整个删掉再重建,能让 yum 彻底忘掉旧状态。

5.5 问题速查表

现象可能原因解决思路
404 路径错误$releasever被解析成 V10 / 目录名不匹配将版本号写死为 8,或按镜像站实际目录调整 baseurl
repomd.xml 无法下载网络不通 / DNS 解析失败curl 测试源地址,检查安全组和 DNS
gpg key 未安装本地缺少对应公钥手动下载公钥文件并rpm --import
makecache 反复失败dnf 缓存脏数据yum clean all+ 删除/var/cache/dnf/*
多个源提供同一个包源未设置优先级安装 yum-plugin-priorities 并配置 priority 参数
下载速度慢选的镜像站不适合当前网络换云厂商内网源,或用 curl 测速对比不同镜像站

6. 离线/内网环境的另一个思路:本地 yum 源搭建

6.1 什么时候会用到本地源

很多生产环境出于安全考虑,服务器处于内网隔离区,无法访问外网镜像站。还有一类场景是:你手头有一批同样架构、同样版本的麒麟机器,如果每台都去外网拉包,既慢又浪费带宽。这时候在局域网里搭一个本地 yum 源,把所有机器统一指向内网地址,安装效率能提升一个量级。

本地源有两种常见形式:一种是用麒麟的 ISO 镜像文件直接挂载出来当源,适合弥补补充基础软件包;另一种是从已装好软件的机器上同步 rpm 包,或者把外网源的关键包预下载下来,再通过createrepo生成元数据,做成一个内部仓库。第一种最简单,我用它举例。

6.2 ISO 挂载 + createrepo 制作本地仓库

假设你手上有Kylin-Server-V10-SP1-x86_64.iso这个镜像文件,先在局域网的一台服务器上执行挂载:

mkdir -p /mnt/cdrom mount -o loop Kylin-Server-V10-SP1-x86_64.iso /mnt/cdrom

挂载好以后,如果镜像里自带repodata目录,那它本身就是合格的源,直接写 repo 文件就能用。但如果你想积累更多包,把别的机器上装过的 rpm 都收集到一个目录里,再用createrepo扫描生成元数据,这样后续所有机器都能从这个目录安装。命令流程:

# 安装 createrepo 工具(如果系统里还没有) yum install -y createrepo # 创建本地仓库目录,把 rpm 包放进去,然后生成元数据 mkdir -p /data/localrepo cp /path/to/rpms/*.rpm /data/localrepo/ createrepo /data/localrepo/

createrepo会在/data/localrepo/下生成一个repodata目录,里面就是 yum 元数据。这一步之后,这个目录就可以直接作为仓库地址使用了。

6.3 把本地源写进 repo 文件

在每台需要使用本地源的机器上,创建/etc/yum.repos.d/local.repo

[local] name=Local Repository baseurl=file:///data/localrepo/ enabled=1 gpgcheck=0

注意baseurlfile://协议前缀,gpgcheck 我建议先设为 0,因为内网自建的包可能没有对应的公钥签名。如果你更讲究,也可以把/mnt/cdrom挂载目录直接作为 baseurl 指向。之后同样执行:

yum clean all yum makecache

测试yum repolist,看到local仓库出现,说明本地源搭建完成。


基于我个人的使用体验,给刚接触麒麟系统的朋友一个实在建议:换完源以后,不要急着把所有源一锅端全部使用,先保留一个你最信任的第三方源作为主力,其他源设成备用,再配好优先级。这样系统既能保持稳定,又能在需要额外软件包时灵活补充。我自己在这套流程上翻过几次车,弯路走多了以后深深体会到:yum 源这件事,说到底是“路径、公钥、缓存”三个关键词的活,把这三样搞明白了,什么源都能玩得转。希望这篇文章能帮你在麒麟 V10 上少踩坑,顺顺利利把软件装齐。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 1:29:25

Linux上安装RustFS:DEB与RPM包完整实战指南

在 Linux 上装一个软件,听起来好像不是什么大事,下载、解压、运行,三步走完。可一旦这个软件是存储组件,是要塞进生产环境长期跑下去的,事情就没那么简单了。最近我在帮团队评估 RustFS,准备把它作为对象存…

作者头像 李华
网站建设 2026/9/16 1:29:17

用MATLAB构建海底地形模型:坐标提取、插值与重采样全流程

简介:面向涉海专业课程设计与毕业设计的MATLAB海底地形模拟器小型源码包,适合具备基础MATLAB操作经验、希望快速搭建水下地形三维仿真原型的读者。资源共6个文件,以4个M脚本为核心,分别承担地图坐标提取、分辨率转换、地形生成与主…

作者头像 李华
网站建设 2026/9/16 1:29:00

JWT 验签不过?Codex 连上 TaoToken 后能一次查清 Signature 和 exp

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 1:28:50

二叉树算法实战:遍历与构造技巧解析

1. 二叉树算法实战:从基础遍历到构造应用今天我想和大家分享几个二叉树相关的经典算法题目,这些题目在面试和日常编码中经常出现。作为一名经历过多次算法面试的老手,我深知掌握这些题目对提升编程能力的重要性。我们将从513题"找树左下…

作者头像 李华
网站建设 2026/9/16 1:28:36

DESeq2差异分析可视化:5分钟绘制发表级火山图与热图

拿到DESeq2的差异分析结果,不少人卡在最后一公里——表格里几万行基因,padj、log2FoldChange一堆数字,完全不知道从哪看起,更别说画出一张能放进文章里的图。其实差异分析本身只是第一步,把结果看懂、把图做出来才是真…

作者头像 李华
网站建设 2026/9/16 1:28:09

SAP PP触发EWM生成PMR的业务逻辑与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华