OpenEuler 22.03 LTS-SP1 配置Yum源与安装Tar命令完整指南

OpenEuler 22.03 LTS-SP1 配置Yum源与安装Tar命令完整指南

1. 项目概述与核心需求解析

最近在折腾一台新装的OpenEuler 22.03 LTS-SP1服务器,准备部署一个应用,第一步就卡在了最基本的文件打包解压上——系统里居然没有预装tar命令。这让我有点意外,毕竟tar在Linux世界里就像空气一样无处不在。但转念一想,OpenEuler作为一款面向企业级应用的操作系统,其最小化安装镜像为了追求极致的精简和安全,默认不包含一些“非必要”的工具,也是可以理解的。这恰恰是开源系统灵活性的体现:你需要什么,就自己装什么。所以,这个看似简单的“下载yum源并安装tar命令”的任务,实际上是我们与OpenEuler系统进行第一次“正式对话”的起点。它不仅仅是安装一个软件包,更是理解OpenEuler软件生态、掌握其包管理机制的关键一步。无论你是运维工程师、开发者,还是刚接触OpenEuler的爱好者,搞定这件事,就等于拿到了打开系统能力宝库的第一把钥匙。

这个过程的核心逻辑非常清晰:系统需要一个软件(tar),而软件存放在远程的仓库(yum源)里。我们的任务就是告诉系统仓库在哪里(配置yum源),然后从仓库里把软件取下来并安装好。听起来简单,但在OpenEuler的环境下,有几个细节需要我们特别注意:系统版本(22.03 LTS-SP1)对应的官方源地址是什么?网络环境是否能顺畅访问这些地址?如果官方源速度慢,有没有可靠的国内镜像源可以替代?安装过程中可能会遇到哪些依赖问题?把这些都想明白了,操作起来才能一气呵成。接下来,我就把这次从零开始配置yum源到成功安装tar的完整过程,以及中间踩过的坑和总结的经验,详细地分享出来。

2. 环境准备与网络连通性检查

在动手配置任何东西之前,确保你的操作环境是正确和连通的,这是避免后续一系列莫名错误的基础。我这次使用的是一台物理服务器,通过最小化安装方式部署的OpenEuler 22.03 LTS-SP1。首先,我们需要确认两件事:第一,系统的确切版本;第二,系统能否访问外部网络。

2.1 确认系统版本

虽然我们知道是22.03 LTS-SP1,但最好通过命令再确认一下,因为不同的子版本或架构(如aarch64, x86_64)可能会影响软件源的路径。打开终端,输入以下命令:

cat /etc/os-release

这个命令会输出系统的详细信息。你需要重点关注这几行:

  • NAME="openEuler":确认是OpenEuler系统。
  • VERSION="22.03 (LTS-SP1)":确认是22.03 LTS-SP1版本。
  • ID="openEuler":系统ID。
  • VERSION_ID="22.03":版本ID。

另一个更直接查看内核和架构的命令是:

uname -a

输出中的x86_64aarch64就是你的系统架构,这在后续寻找对应架构的软件包时很重要。

2.2 检查网络连通性

没有网络,配置yum源就是无源之水。OpenEuler最小化安装后,网络不一定自动启用(尤其是服务器使用静态IP时)。我们先检查网卡状态和IP地址:

ip addr

或者使用老牌的:

ifconfig

(如果ifconfig命令找不到,恰恰说明net-tools包没装,这又是一个可以后续通过yum安装的工具)。

看到有网卡(比如eth0ens33)并且分配了IP地址(inet后面的地址),说明网络接口是起来的。接着,测试是否能访问外网,最直接的就是ping一下一个知名的公共地址,比如OpenEuler的官方镜像站或一个公共DNS:

ping -c 4 repo.openeuler.org

或者

ping -c 4 114.114.114.114

注意:有些云服务器或企业内网环境出于安全策略,可能禁用了ICMP协议(即ping不通)。但这不代表网络不通。更可靠的测试方法是使用curl尝试获取一个HTTP页面的头信息。不过,在最小化系统里,curl很可能也没装。这时,可以尝试用telnet测试特定端口(如80端口),但telnet通常也不是默认安装的。

如果ping不通,你需要检查:

  1. 网络配置/etc/sysconfig/network-scripts/目录下的网卡配置文件(如ifcfg-eth0)是否正确配置了IP地址、网关、DNS。
  2. 网络服务:使用systemctl status networknmcli(如果安装了NetworkManager)查看网络服务状态。
  3. 防火墙:OpenEuler默认使用firewalld。虽然它一般不会阻止出站流量,但可以暂时关闭检查:systemctl stop firewalld(生产环境慎用,测试后记得开启)。

我的实操心得:在物理服务器上,我遇到过网卡命名不是eth0而是enp3s0这类预测性命名的情况,配置时需要找准名字。另外,如果服务器在数据中心,可能需要联系机房配置网络或提供网关信息。确保/etc/resolv.conf文件中有可用的DNS服务器地址(如nameserver 8.8.8.8),这对域名解析至关重要。

3. OpenEuler 22.03 LTS-SP1 的Yum源配置详解

网络通了,我们就可以进入正题——配置yum源。Yum(或DNF,是其下一代工具)是RPM系Linux(如CentOS, Fedora, OpenEuler)的包管理器。它需要一个配置文件(repo文件)来知道去哪里下载软件包。OpenEuler官方提供了丰富的软件源,我们需要根据版本和架构选择合适的。

3.1 官方源与国内镜像源选择

OpenEuler的官方软件源地址是https://repo.openeuler.org/。但是,直接从官方源下载对于国内用户来说速度可能不理想。幸运的是,国内有很多高校和机构提供了镜像服务,速度会快很多。常见的国内镜像站有:

  • 华为云镜像https://mirrors.huaweicloud.com/openeuler/
  • 清华大学镜像https://mirrors.tuna.tsinghua.edu.cn/openeuler/
  • 中科大镜像https://mirrors.ustc.edu.cn/openeuler/

我个人的习惯是优先使用华为云或清华大学的镜像,速度和稳定性都很好。你可以通过浏览器先访问一下镜像站地址,看看目录结构是否正常,确认镜像站是否同步了22.03 LTS-SP1的仓库。

3.2 配置本地Yum源文件

在OpenEuler中,yum源的配置文件存放在/etc/yum.repos.d/目录下,后缀为.repo。我们可以直接创建一个新的repo文件。这里以使用华为云镜像为例。

  1. 备份原有源(可选但推荐):进入配置目录,查看已有文件。

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

    你可能会看到一些已有的.repo文件,例如openEuler.repo。我建议先将其备份,而不是直接修改,这样出问题可以快速回滚。

    mkdir -p /etc/yum.repos.d/backup mv *.repo /etc/yum.repos.d/backup/ # 移动所有现有repo文件到备份文件夹
  2. 创建新的源配置文件:我们为系统主仓库(OS)和一切额外软件仓库(Everything)分别配置。使用vivim编辑器创建文件(如果没装vim,可以用vi,它是最小化安装通常包含的)。

    vi /etc/yum.repos.d/openEuler_mirror.repo
  3. 编辑repo文件内容:将以下内容粘贴进去。请特别注意替换$releasever$basearch这两个变量。在OpenEuler 22.03 LTS-SP1上,$releasever通常是22.03-LTS-SP122.03$basearch是你的架构(x86_64aarch64)。最稳妥的方式是直接写死。

    • 对于 x86_64 架构:
    [OS] name=openEuler $releasever - OS baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP1/OS/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP1/OS/$basearch/RPM-GPG-KEY-openEuler [everything] name=openEuler $releasever - Everything baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP1/everything/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler
    • 对于 aarch64 架构,只需将上面$basearch对应的路径部分替换为aarch64即可。

    参数解释

    • [OS]:仓库ID,唯一即可。
    • name:仓库描述,可读性名称。
    • baseurl:软件仓库的实际地址,这是核心配置。
    • enabled=1:启用此仓库。
    • gpgcheck=1:启用GPG签名检查,确保软件包未被篡改。强烈建议开启
    • gpgkey:GPG公钥的地址,用于校验签名。
  4. 保存并退出编辑器(在vi中,按Esc,输入:wq,回车)。

重要注意事项baseurl的路径一定要精确。你可以先在浏览器里访问一下你配置的URL,确保能看到一个包含repodata目录的页面。如果URL拼写错误,yum会报错Cannot retrieve repository metadata (repomd.xml)

3.3 清理并重建Yum缓存

配置好repo文件后,yum需要下载仓库的元数据(软件包列表、依赖关系等)到本地缓存。首先清理旧的缓存(特别是我们移动了旧repo文件),然后建立新缓存。

yum clean all

这个命令会清除所有缓存数据,包括软件包文件和元数据。

yum makecache

或者

yum makecache fast

这个命令会下载并创建新的元数据缓存。makecache fast通常只下载最新的变化,但在首次配置或更换源后,使用makecache更彻底。

执行过程解析:当你运行yum makecache时,终端会显示正在下载repomd.xml等文件。这个文件是仓库的索引。下载成功后,会显示类似 “Metadata cache created.” 的提示。如果这一步出错,最常见的原因就是baseurl配置错误或者网络无法访问该地址。

4. 使用Yum查找与安装Tar命令

缓存建立成功,意味着yum已经知道了从哪里获取软件以及有哪些软件可用。现在,安装tar就变得非常简单。

4.1 查找Tar软件包

在安装之前,我们可以先搜索一下,确认仓库里是否有我们需要的包,以及它的确切名称。

yum search tar

这个命令会列出所有名称或描述中包含“tar”的软件包。输出可能会很多,你可能会看到tar,tar-lang,tar-doc等。我们需要的核心包就是tar

为了获取更精确的信息,可以使用:

yum info tar

这个命令会显示tar包的详细信息,包括版本、发布号、仓库来源、大小、描述以及最重要的——依赖关系。你会看到它来自我们刚刚配置的OSeverything仓库。

4.2 执行安装命令

安装命令非常简单:

yum install tar -y
  • yum install:安装命令。
  • tar:要安装的软件包名称。
  • -y:这是一个可选但非常实用的参数,意思是当yum询问“Is this ok [y/N]?”时,自动回答“yes”。在脚本或希望无人值守安装时特别有用。如果你是第一次操作,想看清楚yum要做什么,可以不加-y,手动确认。

安装过程深度解析:当你按下回车后,yum会做一系列工作:

  1. 依赖解析:yum会从本地缓存中读取tar包的元数据,发现它可能依赖其他包(例如,tar可能依赖aclattr这两个库来处理文件特殊属性)。yum会自动计算出需要安装的所有包(包括依赖包)的列表。
  2. 事务检查:yum会模拟一次安装事务,检查是否有冲突(比如新包要安装的文件与已安装包冲突),磁盘空间是否足够等。
  3. 显示事务摘要:在终端里,你会看到一个表格,列出了将要安装的包(Install)、升级的包(Upgrade)以及总下载大小和安装后的大小。这就是让你确认的步骤(如果没加-y)。
  4. 下载软件包:从配置的baseurl指向的镜像站下载所有需要的.rpm包文件。这里会显示下载进度和速度。
  5. 安装与脚本执行:下载完成后,yum会调用RPM工具依次安装每个包。安装过程包括:将文件解压到系统对应目录(如/usr/bin/tar)、执行包内预定义的脚本(如创建用户、注册服务等,tar包比较简单,一般没有这类脚本)、更新RPM数据库(记录这个包已安装)。
  6. 完成:最后显示 “Complete!” 表示安装成功。

4.3 验证安装结果

安装完成后,第一时间验证是否成功。

which tar

预期输出:/usr/bin/tar。这说明系统已经在环境变量PATH指定的路径中找到了tar命令。

tar --version

这个命令会输出tar的版本信息,例如tar (GNU tar) 1.34。看到具体的版本号,就证明安装完全成功,并且可以正常使用了。

我的实操心得:在最小化系统上,yum install命令本身所依赖的python3libxml2sqlite等组件是系统最基础的部分,肯定是存在的。所以安装tar这个过程通常非常顺畅。关键在于前面的源配置。如果yum install报错,90%的问题出在源配置或网络连通性上。

5. 安装过程常见问题与排查技巧实录

即使步骤清晰,在实际操作中也可能遇到各种“拦路虎”。下面是我在多次配置中遇到的典型问题及其解决方法,整理成表,方便你快速排查。

问题现象可能原因排查命令与解决思路
运行yum makecacheyum install时报错:Could not resolve host: mirrors.huaweicloud.com1. DNS解析失败。
2. 网络不通,无法访问外网。
1.cat /etc/resolv.conf检查DNS配置。可临时添加nameserver 8.8.8.8
2.ping -c 4 114.114.114.114测试基础网络。检查网卡IP和网关。
报错:Cannot retrieve repository metadata (repomd.xml)1.baseurl路径错误,访问不到repodata目录。
2. 镜像站该目录下确实没有对应版本的仓库。
3. 网络代理或防火墙阻止访问。
1. 用浏览器或curl -I <baseurl>测试URL可达性。仔细核对版本号(22.03-LTS-SP1)和架构。
2. 访问镜像站首页,查看是否有对应版本目录。
3. 检查环境变量http_proxy,https_proxy是否设置了不合适的代理。
报错:GPG key retrieval failedGPG check FAILED1.gpgkey地址错误或不可访问。
2. 服务器时间不正确,导致GPG签名验证失败。
1. 同baseurl检查,确保gpgkeyURL能下载到公钥文件。
2. 运行date检查系统时间。如果偏差大,使用chronydntpdate同步时间(需先安装)。对于测试环境,可临时在repo文件中设置gpgcheck=0(不推荐,安全风险)
报错:No package tar available.1. 仓库未正确启用 (enabled=0)。
2. 仓库里确实没有叫tar的包(极不可能)。
3. 缓存是旧的,未包含新配置的源信息。
1. 检查repo文件中[OS][everything]段落下的enabled值是否为1。
2. 运行yum search tar看是否有结果。如果没有,用yum repolist all查看所有仓库状态,确认你的源是否在列表且状态为enabled
3. 执行yum clean all && yum makecache彻底刷新缓存。
下载速度极其缓慢1. 使用的官方源境外地址,网络延迟高。
2. 本地网络带宽不足。
1. 更换为国内镜像源(华为云、清华、中科大)。
2. 在repo文件的baseurl前添加proxy=http://your-proxy-ip:port(如果需要且你知道代理地址)。
安装时提示Error: Nothing to do1.tar包已经安装。
2. 指定的包名不对。
1. 运行 `rpm -qa
依赖解析失败,提示Error: Package: xxx requires yyy1. 仓库不完整,缺少某个依赖包。
2. 多个仓库间存在依赖冲突。
1. 确保启用了everything仓库,它包含的包最全。
2. 尝试使用yum install tar --skip-broken跳过损坏的依赖,但可能影响功能。
3. 检查是否混用了其他版本(如21.03)的源,导致依赖关系混乱。统一使用22.03-LTS-SP1的源。

独家避坑技巧

  1. “先看再配”原则:在编辑repo文件前,一定要用浏览器或curl命令先访问一下你打算填写的baseurl,确保你能看到一个文件列表,并且里面有repodata/这个目录。这是避免repomd.xml错误的最有效方法。
  2. “架构和版本要抠死”:OpenEuler的仓库路径对版本和架构非常敏感。22.0322.03-LTS-SP1的路径可能不同,x86_64aarch64的包也完全不同。直接从镜像站页面复制路径是最稳妥的。
  3. 善用yum的调试信息:当命令出错时,可以加上-v(详细模式)或-d(调试模式,级别1-10)来获取更多信息。例如yum install tar -v会显示更详细的处理过程,有助于定位问题。
  4. 离线环境的准备:对于完全无法连接外网的生产环境,上述方法行不通。你需要在一台有网络的同版本同架构系统上,使用yumdownloaderrepoquery工具下载tar及其所有依赖的.rpm包,然后拷贝到离线服务器上用rpm -ivh *.rpmyum localinstall *.rpm进行安装。这个过程(制作离线包)本身又是一个话题,但核心思想是解决依赖关系。

6. 拓展:Yum/DNF的进阶使用与软件包管理

成功安装tar只是包管理操作的开始。掌握yum(以及OpenEuler 22.03可能默认或推荐使用的下一代工具dnf,两者命令高度兼容)的常用命令,能让你在系统维护中游刃有余。下面我列举一些最常用的操作,并解释其背后的逻辑。

6.1 搜索与查询:找到你需要的软件

  • 模糊搜索yum search <关键词>。当你只知道软件的部分功能或名字片段时使用。
  • 精确信息yum info <包名>。在安装前详细了解一个包。
  • 列出已安装rpm -qa | grep <关键词>yum list installed | grep <关键词>。查看某个软件是否已安装及其版本。
  • 查看文件归属rpm -qf /usr/bin/tar。如果你知道一个命令的完整路径,这个命令可以反查出它是属于哪个软件包安装的。这在排查“这个文件是哪里来的”问题时非常有用。

6.2 安装、更新与移除

  • 安装yum install <包名1> <包名2>。可以一次性安装多个包。
  • 重新安装yum reinstall <包名>。当软件文件意外损坏时,可以重新安装覆盖。
  • 更新
    • yum update:更新所有已安装的包到仓库中的最新版本。生产环境慎用,建议先测试。
    • yum update <包名>:仅更新指定的包。
  • 移除
    • yum remove <包名>:删除软件包,但会保留配置文件。
    • yum autoremove:删除那些当初作为依赖被安装,但现在没有任何其他软件依赖的“孤儿”包。这是清理系统的好习惯。

6.3 组操作:批量管理功能套件

OpenEuler的仓库中除了单个软件包,还定义了“软件包组”(Group),将提供特定功能的一组相关包打包在一起,例如“开发工具”、“系统管理工具”等。

  • yum grouplist:列出所有可用的和已安装的组。
  • yum groupinfo "Development Tools":查看“开发工具”这个组里包含哪些具体的包。
  • yum groupinstall "Development Tools":一键安装整个“开发工具”组,这对于快速搭建编译环境非常高效。

6.4 历史与回滚

yum history是一个强大的功能,它记录了所有yum事务(安装、更新、删除)的日志。

  • yum history list:列出所有历史事务,每个事务有一个ID。
  • yum history info <ID>:查看某个事务的详细信息,包括安装了哪些包,删除了哪些包。
  • yum history undo <ID>撤销指定ID的事务。例如,你刚刚安装了一个包导致问题,可以立即undo这次安装操作。这是比手动remove更安全的方式,因为它会尝试恢复到事务之前的确切状态。
  • yum history rollback <ID>回滚到指定ID之前的状态。undo是撤销单个事务,rollback是撤销从指定ID之后的所有事务。

我的体会:对于服务器管理,尤其是生产环境,yum history是你的“后悔药”。在进行任何可能影响系统稳定性的批量操作前,先看一眼history list,操作后如果出现问题,undo通常是第一选择。同时,养成在重要操作前创建系统快照或备份的习惯,是更高级的保障。

7. 从Tar安装延伸到系统初始化建议

通过安装tar这件小事,我们实际上完成了一次标准的OpenEuler软件包管理操作。对于一个刚安装好的最小化OpenEuler系统,除了tar,还有哪些工具是“基础设施”级别的,建议优先安装呢?这里我分享一个我个人常用的初始化软件清单,你可以通过一条命令批量安装:

yum install -y vim-enhanced wget curl net-tools tree lsof bash-completion psmisc
  • vim-enhanced:比默认vi更强大的编辑器。
  • wget & curl:命令行下载工具,不可或缺。
  • net-tools:包含ifconfig,netstat等传统网络工具,很多老管理员习惯使用。
  • tree:以树状图列出目录内容,直观。
  • lsof:列出打开的文件,排查“文件被谁占用”问题的神器。
  • bash-completion:为bash命令提供自动补全功能,提升效率。
  • psmisc:包含pstree,killall等有用的进程管理工具。

安装完这些,你的命令行操作环境会舒适很多。当然,根据你的具体角色(开发、运维、数据库管理员),还需要安装对应的专业工具链,比如gcc,make,git,mariadb-server等。这时,你已经可以熟练地通过配置yum源,用yum install来获取它们了。

整个流程走下来,从检查网络到配置源,再到安装验证,其实每一步都蕴含着Linux系统管理的基本思想:明确需求、配置资源、执行操作、验证结果。遇到问题,则按照网络、配置、依赖、冲突的层次去逐层排查。把安装tar这个过程琢磨透了,以后在OpenEuler或者任何RPM系Linux上安装其他软件,都会是同样的套路,你完全可以举一反三,从容应对。