<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dnf on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/dnf/</link><description>Recent content in Dnf on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 15 Sep 2019 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/dnf/index.xml" rel="self" type="application/rss+xml"/><item><title>CentOS 8 EOL 善后：换源 vault.centos.org、时间同步与时区设置</title><link>https://liangweidonggood.github.io/p/centos-8-eol-yuan-shi-jian-shi-qu/</link><pubDate>Sun, 15 Sep 2019 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/centos-8-eol-yuan-shi-jian-shi-qu/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/centos-8-eol-yuan-shi-jian-shi-qu/image/cover.jpg" alt="Featured image of post CentOS 8 EOL 善后：换源 vault.centos.org、时间同步与时区设置" /&gt;&lt;h2 id="一为什么-2019-年要聊-centos-8"&gt;一、为什么 2019 年要聊 CentOS 8
&lt;/h2&gt;&lt;p&gt;CentOS 8.0 正式发布是 &lt;strong&gt;2019-09-24&lt;/strong&gt;——RHEL 8.0 GA 后的 CentOS 重建版。本文写于 2019-09-15，相当于 CentOS 8 正式发布前一周。&lt;strong&gt;但文章真正&amp;quot;管用&amp;quot;的时间是 2022 年 1 月 31 日之后&lt;/strong&gt;——那天 CentOS 团队把 CentOS 8 的所有包从 &lt;code&gt;mirror.centos.org&lt;/code&gt; 移到 &lt;code&gt;vault.centos.org&lt;/code&gt;，已经装好的 CentOS 8 跑 &lt;code&gt;yum&lt;/code&gt; 会全部报：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Error: Failed to download metadata for repo &amp;#39;appstream&amp;#39;: Cannot prepare internal mirrorlist: No URLs in mirrorlist
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;时间线&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2019-09-24：CentOS 8.0 GA&lt;/li&gt;
&lt;li&gt;2020-12-08：CentOS 宣布战略调整，CentOS 8 提前 EOL&lt;/li&gt;
&lt;li&gt;2021-12-31：CentOS 8 EOL（生命周期结束）&lt;/li&gt;
&lt;li&gt;2022-01-31：包从 &lt;code&gt;mirror.centos.org&lt;/code&gt; 移到 &lt;code&gt;vault.centos.org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;2021-05-12：Rocky Linux 8.3 RC1 发布&lt;/li&gt;
&lt;li&gt;2021-05-18：AlmaLinux 8.3 正式发布&lt;/li&gt;
&lt;/ul&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;新机器建议直接上 Rocky Linux 9 / AlmaLinux 9 / Oracle Linux 9&lt;/strong&gt;——跟 CentOS 8 / 7 生态兼容，迁移成本最低。本篇只解决&amp;quot;已经上了 CentOS 8 又不想重装&amp;quot;的善后问题。&lt;/p&gt;
&lt;h2 id="二centos-8-eol-后-yum-报错的修复"&gt;二、CentOS 8 EOL 后 yum 报错的修复
&lt;/h2&gt;&lt;p&gt;症状（2022-01-31 后）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Error: Failed to download metadata for repo &amp;#39;appstream&amp;#39;: Cannot prepare internal mirrorlist: No URLs in mirrorlist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;根因：CentOS 8 已经 EOL，包从 &lt;code&gt;mirror.centos.org&lt;/code&gt; 移走，但 &lt;code&gt;/etc/yum.repos.d/CentOS-*.repo&lt;/code&gt; 还指向 &lt;code&gt;mirror.centos.org&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="21-一次性-sed-改源"&gt;2.1 一次性 sed 改源
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sed -i -e &lt;span class="s2"&gt;&amp;#34;s|mirrorlist=|#mirrorlist=|g&amp;#34;&lt;/span&gt; /etc/yum.repos.d/CentOS-*
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sed -i -e &lt;span class="s2"&gt;&amp;#34;s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g&amp;#34;&lt;/span&gt; /etc/yum.repos.d/CentOS-*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这两条命令做的事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把所有 &lt;code&gt;mirrorlist=&lt;/code&gt; 注释掉（&lt;code&gt;#mirrorlist=&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;#baseurl=http://mirror.centos.org&lt;/code&gt; 替换成 &lt;code&gt;baseurl=http://vault.centos.org&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="22-验证"&gt;2.2 验证
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum clean all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum makecache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 &lt;code&gt;vault.centos.org&lt;/code&gt; 也访问不到（更老的版本），可以临时改 &lt;code&gt;https://mirrors.aliyun.com/centos-vault/8.x.x/...&lt;/code&gt; 阿里云镜像，但&lt;strong&gt;只限能联网的服务器&lt;/strong&gt;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;坑提醒&lt;/strong&gt;：&lt;code&gt;vault.centos.org&lt;/code&gt; 没有 HTTPS-only 限制，但&lt;strong&gt;没有签名验证&lt;/strong&gt;——意味着如果源被劫持，包可能被替换。&lt;strong&gt;生产环境建议尽快迁移到 Rocky/Alma/Oracle Linux&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="三centos-8-的-dnf-包管理器"&gt;三、CentOS 8 的 dnf 包管理器
&lt;/h2&gt;&lt;p&gt;CentOS 8 弃用了 &lt;code&gt;yum&lt;/code&gt;（虽然命令还能用），&lt;strong&gt;新工具是 dnf&lt;/strong&gt;——兼容 yum 4.x 系列，大部分命令一致。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 装包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install -y &amp;lt;package&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf search &amp;lt;keyword&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf info &amp;lt;package&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 列出已装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf list installed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 卸包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf remove &amp;lt;package&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 仓库管理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf config-manager --add-repo https://example.com/repo.repo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf config-manager --set-enabled &amp;lt;repo-id&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf config-manager --set-disabled &amp;lt;repo-id&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CentOS 8 默认有两个主仓库：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BaseOS&lt;/code&gt;：核心 OS 包（kernel、systemd、bash 等）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AppStream&lt;/code&gt;：应用流（多个 Python / Node.js 版本可并存）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="应用流module"&gt;应用流（Module）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查可用 python 模块&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf module list python
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 装 Python 3.9（默认）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf module install python39
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 切到 Python 3.6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf module reset python
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf module &lt;span class="nb"&gt;enable&lt;/span&gt; python36
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install python3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;坑提醒&lt;/strong&gt;：&lt;code&gt;dnf module&lt;/code&gt; 的&amp;quot;版本&amp;quot;切换是&lt;strong&gt;全系统&lt;/strong&gt;的——切换后所有 dnf 装的 Python 都用这个版本。&lt;strong&gt;多 Python 版本请用 conda 或源码编译&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="四时间同步ntpdate--chrony"&gt;四、时间同步：ntpdate / chrony
&lt;/h2&gt;&lt;p&gt;CentOS 7 用 &lt;code&gt;ntpdate&lt;/code&gt; + crontab。CentOS 8 改用 &lt;strong&gt;chrony&lt;/strong&gt;（&lt;code&gt;chronyd&lt;/code&gt; daemon），开机自启：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl status chronyd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Active: active (running)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chronyc sources -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查 NTP 源状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="41-想用回-ntpdate-风格"&gt;4.1 想用回 ntpdate 风格
&lt;/h3&gt;&lt;p&gt;2019-2020 那段时间国内服务器常用 &lt;strong&gt;wlnmp 源&lt;/strong&gt;（&lt;code&gt;https://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm&lt;/code&gt;）一次性装 &lt;code&gt;wntp&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rpm -ivh https://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf install wntp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ntpdate ntp1.aliyun.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;坑提醒&lt;/strong&gt;：&lt;code&gt;wlnmp-release&lt;/code&gt; 包没有 GPG 签名验证——商用生产环境慎用，仅适合临时调试。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="42-配阿里云-ntp"&gt;4.2 配阿里云 NTP
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vi /etc/chrony.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 注释掉默认的 pool，改成阿里云&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# pool 2.centos.pool.ntp.org iburst&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;server ntp1.aliyun.com iburst
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;server ntp2.aliyun.com iburst
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;server ntp3.aliyun.com iburst
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl restart chronyd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chronyc sources -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="五时区设置"&gt;五、时区设置
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;timedatectl&lt;/code&gt; 是 CentOS 7+ 标准的时区工具。&lt;/p&gt;
&lt;h3 id="51-看当前时区"&gt;5.1 看当前时区
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Local time: Thu 2026-06-04 12:34:56 CST&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Universal time: Thu 2026-06-04 04:34:56 UTC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# RTC time: Thu 2026-06-04 04:34:56&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Time zone: Asia/Shanghai (CST, +0800)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# NTP enabled: yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# NTP synchronized: yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# RTC in local TZ: no&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="52-改时区"&gt;5.2 改时区
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo timedatectl set-timezone Asia/Shanghai
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;date
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Thu Jun 4 12:34:56 CST 2026&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="53-列出所有时区"&gt;5.3 列出所有时区
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl list-timezones &lt;span class="p"&gt;|&lt;/span&gt; grep Asia
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Asia/Shanghai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Asia/Hong_Kong&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Asia/Tokyo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Asia/Singapore&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="54-手动改时间一般不要"&gt;5.4 手动改时间（一般不要）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo timedatectl set-time &lt;span class="s1"&gt;&amp;#39;2026-06-04 12:34:56&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;改完时间记得 &lt;code&gt;hwclock --systohc&lt;/code&gt; 把系统时间写回硬件时钟，否则重启就丢。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="六centos-8--rocky--almalinux-迁移"&gt;六、CentOS 8 → Rocky / AlmaLinux 迁移
&lt;/h2&gt;&lt;p&gt;如果想保住 CentOS 8 的环境又不想重装，官方提供 &lt;code&gt;migrate2rocky&lt;/code&gt; / &lt;code&gt;almalinux-deploy&lt;/code&gt; 脚本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Rocky Linux 迁移&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x migrate2rocky.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo bash migrate2rocky.sh -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# AlmaLinux 迁移&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install -y almalinux-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo almalinux-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;坑提醒&lt;/strong&gt;：迁移脚本会&lt;strong&gt;改一堆包&lt;/strong&gt;，包括内核、grub、repo。&lt;strong&gt;迁移前一定要做快照&lt;/strong&gt;（云盘 / LVM 快照），回退成本高。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="七典型坑速查"&gt;七、典型坑速查
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;现象&lt;/th&gt;
					&lt;th&gt;原因&lt;/th&gt;
					&lt;th&gt;处理&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;yum update&lt;/code&gt; 报 &amp;ldquo;No URLs in mirrorlist&amp;rdquo;&lt;/td&gt;
					&lt;td&gt;CentOS 8 EOL 后 mirror.centos.org 失效&lt;/td&gt;
					&lt;td&gt;走 §2.1 sed 改源&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;dnf install&lt;/code&gt; 报包冲突&lt;/td&gt;
					&lt;td&gt;Module 多版本并存&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;dnf module reset &amp;lt;mod&amp;gt;&lt;/code&gt; 再装&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;chronyc sources&lt;/code&gt; 显示 &lt;code&gt;??&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;NTP 服务器不可达&lt;/td&gt;
					&lt;td&gt;改 &lt;code&gt;chrony.conf&lt;/code&gt; 加阿里云 NTP&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;时间不准&lt;/td&gt;
					&lt;td&gt;没装 chronyd / 时区不对&lt;/td&gt;
					&lt;td&gt;装 chronyd + &lt;code&gt;timedatectl set-timezone&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;迁移 Rocky 失败&lt;/td&gt;
					&lt;td&gt;网络 / 仓库访问&lt;/td&gt;
					&lt;td&gt;配阿里云 Vault 源后重试&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="八下一步"&gt;八、下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想从 CentOS 8 直接迁到 Rocky 9 / Alma 9 → 走 &lt;code&gt;migrate2rocky&lt;/code&gt; 或重装（&lt;strong&gt;重装最稳&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;想继续留 CentOS 7 → 7 已 2024-06-30 EOL，&lt;strong&gt;尽快迁出&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想换更现代的发行版 → Ubuntu 22.04 LTS / Debian 12&lt;/li&gt;
&lt;li&gt;想学 K8s 时间同步最佳实践 → 容器里&lt;strong&gt;别用宿主机的本地时间&lt;/strong&gt;，用 NTP 或 sidecar&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.centos.org/2020/12/future-is-centos-stream/" target="_blank" rel="noopener"
 &gt;CentOS 8 EOL 公告&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://vault.centos.org/" target="_blank" rel="noopener"
 &gt;vault.centos.org 镜像&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://rockylinux.org/" target="_blank" rel="noopener"
 &gt;Rocky Linux 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://almalinux.org/" target="_blank" rel="noopener"
 &gt;AlmaLinux 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://chrony.tuxfamily.org/documentation.html" target="_blank" rel="noopener"
 &gt;Chrony 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/configuring-time-synchronization_configuring-basic-system-settings" target="_blank" rel="noopener"
 &gt;Red Hat: Configuring NTP with chrony&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2024-视角centos-8-时代早已过去rocky--alma-9-才是未来"&gt;2024 视角：CentOS 8 时代早已过去，Rocky / Alma 9 才是&amp;quot;未来&amp;quot;
&lt;/h2&gt;&lt;p&gt;本文写于 &lt;strong&gt;2019-09-15&lt;/strong&gt;（CentOS 8 GA 前一周），&lt;strong&gt;2024 视角下 CentOS 8 已 EOL 3 年&lt;/strong&gt;。本文的方法在 vault 源上仍管用，但&lt;strong&gt;新项目早应该迁到 Rocky / Alma 9&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="一centos-8-eol-时间线回顾"&gt;一、CentOS 8 EOL 时间线回顾
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2019-09-24&lt;/strong&gt;：CentOS 8.0 GA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2020-12-08&lt;/strong&gt;：CentOS 战略调整公告（CentOS 8 提前 EOL，CentOS 转向 Stream）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2021-12-31&lt;/strong&gt;：CentOS 8 EOL（生命周期结束，比原计划 2029-05 提前 7.5 年）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2022-01-31&lt;/strong&gt;：包从 &lt;code&gt;mirror.centos.org&lt;/code&gt; 移到 &lt;code&gt;vault.centos.org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024-06-30&lt;/strong&gt;：CentOS 8 走完 6 个月的 ELS（Extended Lifecycle Support）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2024 视角&lt;/strong&gt;：&lt;strong&gt;CentOS 8 完全没有安全更新&lt;/strong&gt;——&lt;strong&gt;必须迁出&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="二vaultcentosorg-2024-状态"&gt;二、&lt;code&gt;vault.centos.org&lt;/code&gt; 2024 状态
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2024-06-30 后&lt;/strong&gt;：vault.centos.org 仍可访问，但&lt;strong&gt;仅供归档查询&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生产环境仍用 CentOS 8&lt;/strong&gt; = &lt;strong&gt;裸奔在公网&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不推荐&lt;/strong&gt;继续用 vault.centos.org 做生产源——&lt;strong&gt;无 GPG 签名验证&lt;/strong&gt;（包可能被劫持）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="三dnf-包管理器的2024-现状"&gt;三、dnf 包管理器的&amp;quot;2024 现状&amp;quot;
&lt;/h3&gt;&lt;p&gt;2019 那篇介绍了 CentOS 8 的 dnf 4.x。&lt;strong&gt;2024 视角&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;dnf 5&lt;/strong&gt;（2024-03 在 Fedora 40 首次 GA，&lt;strong&gt;RHEL 9.4+ 默认&lt;/strong&gt;）—— &lt;strong&gt;完全重写&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;基于 &lt;strong&gt;libsolv&lt;/strong&gt;（比 dnf 4 的 hawkey 快 10 倍）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python 3.12+&lt;/strong&gt; 替代 Python 3.6&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新命令&lt;/strong&gt;：&lt;code&gt;dnf install&lt;/code&gt; 改成 &lt;code&gt;dnf install&lt;/code&gt;（不变）但有 &lt;code&gt;dnf5 install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更严格的依赖解析&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2024 dnf 5 用法&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf5 --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 5.1.12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf5 install nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf5 remove nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf5 search python
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="四chrony-在-2024-仍是-ntp-默认"&gt;四、chrony 在 2024 仍是 NTP 默认
&lt;/h3&gt;&lt;p&gt;2019 那篇的 chrony 配置 2024 仍管用。&lt;strong&gt;2024 新增&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;chrony 4.5+&lt;/strong&gt;（2024-02 起）：&lt;strong&gt;支持 NTS&lt;/strong&gt;（Network Time Security）—— 加密的 NTP 协议。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# /etc/chrony.conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启用 NTS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ntsserver ntp1.aliyun.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ntsserver time.cloudflare.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NTS 比传统 NTP 更安全&lt;/strong&gt;（防中间人篡改时间）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="五timedatectl-的现代用法"&gt;五、timedatectl 的&amp;quot;现代&amp;quot;用法
&lt;/h3&gt;&lt;p&gt;2019 那篇给的 &lt;code&gt;timedatectl set-timezone Asia/Shanghai&lt;/code&gt; 2024 仍管用。&lt;strong&gt;2024 增强&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NTP 同步 + RTC 同步&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 看同步状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl show-timesync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# SystemNTPServers=ntp1.aliyun.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# SystemNTPSynchronized=yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# RTCInLocalTZ=no&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 强制 RTC 用 UTC（避免时区混乱）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl set-local-rtc &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="六centos-stream-8--rocky--alma-8-的迁移"&gt;六、CentOS Stream 8 → Rocky / Alma 8 的迁移
&lt;/h3&gt;&lt;p&gt;2019 那篇只是&amp;quot;保留旧系统&amp;quot;。&lt;strong&gt;2024 主流&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;migrate2rocky.sh&lt;/strong&gt; 脚本（Rocky Linux 官方）：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CentOS Stream 8 → Rocky Linux 8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x migrate2rocky.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo bash migrate2rocky.sh -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uname -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Rocky Linux 8.x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;almalinux-deploy&lt;/strong&gt; 脚本（AlmaLinux 官方）：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install -y almalinux-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo almalinux-deploy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="七centos-stream-的真实价值"&gt;七、CentOS Stream 的&amp;quot;真实价值&amp;quot;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2019 那篇&lt;/strong&gt; CentOS Stream 8 还没出。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CentOS Stream 8/9&lt;/strong&gt;（2021+）：&lt;strong&gt;RHEL 的&amp;quot;上游开发版&amp;quot;&lt;/strong&gt;—— 比 RHEL 早 1-2 个 minor 版本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024 视角&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;生产环境&lt;/strong&gt;：&lt;strong&gt;不用 CentOS Stream&lt;/strong&gt;（不稳定），用 Rocky / Alma 9。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开发环境&lt;/strong&gt;：CentOS Stream 9 可以体验&amp;quot;未来 RHEL&amp;quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI/CD 测试&lt;/strong&gt;：&lt;strong&gt;RHEL UBI&lt;/strong&gt;（Universal Base Image，2020+）—— 在容器里跑 RHEL。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="八almalinux--rocky--oracle-三选一"&gt;八、AlmaLinux / Rocky / Oracle 三选一
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rocky Linux&lt;/strong&gt;：CIQ 公司主导，&lt;strong&gt;社区最活跃&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AlmaLinux&lt;/strong&gt;：CloudLinux 公司主导，&lt;strong&gt;外企用得多&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracle Linux&lt;/strong&gt;：Oracle 公司主导，&lt;strong&gt;企业级支持&lt;/strong&gt;（&lt;strong&gt;UEK 内核&lt;/strong&gt;自研）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024 市场份额&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;Rocky Linux ~ 35%&lt;/li&gt;
&lt;li&gt;AlmaLinux ~ 30%&lt;/li&gt;
&lt;li&gt;Oracle Linux ~ 20%&lt;/li&gt;
&lt;li&gt;CentOS Stream ~ 15%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="九centos-8-的运维遗物dnf-module"&gt;九、CentOS 8 的&amp;quot;运维遗物&amp;quot;：&lt;code&gt;dnf module&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;2019 那篇提到 &lt;code&gt;dnf module&lt;/code&gt;。&lt;strong&gt;2024 状态&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;dnf module&lt;/code&gt; 在 Rocky / Alma 9 仍存在&lt;/strong&gt;（继承自 RHEL 8 AppStream）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024 趋势&lt;/strong&gt;：&lt;strong&gt;用 &lt;code&gt;pyenv&lt;/code&gt; / &lt;code&gt;conda&lt;/code&gt; / &lt;code&gt;uv&lt;/code&gt; 装 Python&lt;/strong&gt;，不用 &lt;code&gt;dnf module install python39&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用流（Module）示例&lt;/strong&gt;（2024 仍可用）：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Node.js 多版本（dnf module）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf module list nodejs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf module &lt;span class="nb"&gt;enable&lt;/span&gt; nodejs:18
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf install nodejs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="十centos-8-eol-后的实践教训"&gt;十、CentOS 8 EOL 后的&amp;quot;实践教训&amp;quot;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2019 → 2024 五年间&lt;/strong&gt;，CentOS 经历了：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GA&lt;/strong&gt;（2019-09）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;战略调整&lt;/strong&gt;（2020-12）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提前 EOL&lt;/strong&gt;（2021-12）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完全归档&lt;/strong&gt;（2024-06）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;教训&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;不要把生产系统&amp;quot;绑死&amp;quot;在单一发行版&lt;/strong&gt;—— 用 Docker / 容器化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;订阅 Red Hat&lt;/strong&gt; 或 &lt;strong&gt;商业支持&lt;/strong&gt;（Alma / Rocky / Oracle）—— 别用&amp;quot;免费无支持&amp;quot;的 CentOS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新项目永远用&amp;quot;未来 5 年有支持&amp;quot;的发行版&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024 推荐&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;服务器：&lt;strong&gt;Rocky / Alma / Oracle 9&lt;/strong&gt;（支持到 2027-2029）&lt;/li&gt;
&lt;li&gt;桌面 / 开发：&lt;strong&gt;Ubuntu 24.04 LTS&lt;/strong&gt;（支持到 2029-04）&lt;/li&gt;
&lt;li&gt;容器：&lt;strong&gt;Distroless / Alpine / UBI&lt;/strong&gt;（无 OS 依赖）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>