一分钟快速构建本地yum/dnf软件仓库——以OpenEuler服务器为例

一、无网环境搭建离线软件仓库

1.1、无网环境搭建离线软件仓库实操流程

bash 复制代码
#无网环境如何搭建离线软件仓库实操流程

#1-先到openEuler的官网下载对应版本的【Offline Everything ISO】(离线完整镜像)
#openEuler的官网镜像下载地址是【https://www.openeuler.openatom.cn/zh/download/】
#如【openEuler 24.03 LTS SP2】的【Offline Everything ISO】下载地址是【https://repo.openeuler.openatom.cn/openEuler-24.03-LTS-SP2/ISO/x86_64/openEuler-24.03-LTS-SP2-everything-x86_64-dvd.iso】

#2-将下载好的离线完整镜像拷贝到指定目录下(如:/data)然后在指定目录创建挂载的目录(如:openeuler2403data)
cd /data
mkdir openeuler2403data
ll -h
mount -o loop openEuler-24.03-LTS-SP2-everything-x86_64-dvd.iso /data/openeuler2403data/
df -hT

#3-可进入挂载的目录查看内容,并在该挂载目录下启动一个http服务(指定端口为8000)
cd /data/openeuler2403data/
ll
nohup python3 -m http.server & 8000

#4-查看刚刚启动的离线仓库8000端口是否正常启动,然后放开防火墙的8000端口后再浏览器访问(服务器IP:8000)
netstat -antlp | grep 8000
systemctl status firewalld
firewall-cmd --list-port
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port
ip a

1.2、给需要使用离线软件仓库的系统配置源

bash 复制代码
#给需要使用离线软件仓库的系统配置源实操流程
#1-进入系统源目录,备份原有的源
cd /etc/yum.repos.d/
cp -p openEuler.repo openEuler.repo.old

#2-编辑源
vi openEuler.repo
#系统本地【openEuler.repo】配置为离线软件仓库的内容
[localyum]
name=openEuler2403LTSSP2
baseurl=http://192.168.1.100:8000
enable=1
gpgcheck=0

#3-清理缓存并重新生成
yum clean all
yum makecache


#-测试安装mysql(若正常安装,且Repository显示为【localyum】则表示没有问题)
yum install mysql -y

到这里恭喜你表示在当前系统配置的离线软件仓库可以正常使用。

二、Linux的源码包、二进制包、RPM包、软件仓库

2.1、Linux的源码包、二进制包、RPM包

|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 内容 | 源码包 | 二进制包 | RPM包 |
| 简介 | 源码包里面包含程序的源代码文件 (如.h .c .cpp等)不可直接使用;需要在你的计算机中编译后才会生成可运行程序,且需要计算机中配有对应的gcc编译器环境,编译安装时间较长。 | 二进制包是已经编译好可以直接在设备上运行的程序软件包 (标志特点是:通常包含名为bin的目录;且软件包的内容是二进制【0、1】代码,用16进制显示) | 背景:在Linux操作系统中,因为要实现各种功能就要安装各种程序,从而就会存在各种复杂的依赖关系;且各种程序会不断迭代优化,就会有不同的版本,这样就导致了程序的安装、配置和卸载比较繁琐; 为了解决以上这些问题RedHat公司最初就针对自己的系统开发了一套RPM系统来管理这些程序,可实现一键式对使用rpm文件标准打包的程序进行安装、升级和卸载。 因RPM管理程序遵循GPL协议,使用简单方便,逐渐受到其他Linux发行版的采用,PRM管理程序的出现,让Linux中的程序安装、升级都十分简单,极大的降低了Linux的使用门槛。 【yum(Yellowdog Update Manager)是RPM的前端工具,可自动解决安装rpm包产生的依赖关系】(yum可自动判断rpm包的依赖,然后一次性把所有需要安装的N个rpm统一下载安装、升级、卸载) |
| 安装步骤 | 《0》解压下载好的源码文件; 《1》进入源码目录配置【./config】; 《2》编译【make】; 《3》安装【make install】 | 有两种格式: 《1》xxx-devel-xxx.x86_64.rpm格式包则使用【rpm -ivh xxx.rpm】命令安装; 《2》xxx-版本-linux-xxx-x86_64.tar.gz格式包则使用【tar -zxvf xxx.tar.gz】命令解压后即可使用。 通常二进制包默认指的就是RPM包,而RPM包是二进制的一个子集。 | 有两种格式: 《1》包名-版本-release.arch.rpm 《2》包名-版本-release.arch.src.rpm release:表示rpm包的发行号,可能还包含适应的操作系统; arch:表示主机平台,noarch表示包可以安装到任何平台上,是通用的; 注意:源码rpm包即*.src.rpm结尾的这类软件包是包含了源代码的rpm包,使用rpm -ivh来进行安装,生成源程序和SPEC文件,能够直接生成RPM包,而tar形式源码包是不支持生成RPM包的 |
| 名词解释 | 《1》配置【./config】( ①可对程序安装路径、所需功能进行指定; ②可检测当前系统环境是否符合安装要求; ③可将指定的功能与当前系统环境监测信息都写入Makefile文件中,用于后续的编译)。 《2》编译【make】( ①将程序源代码翻译为设备可以识别的语言(即生成可执行的二进制文件,类似windows上的.exe文件); ②编译若出错,则需要定位问题解决后,则需先清除【make clean】缓存,然后在次执行编译操作; 编译时花费的时间较为长久;)。 《3》安装【make install】( ①真正的程序安装(即将编译好的二进制程序安装到对应的目录中,类似windows上点击exe程序安装操作); ②安装若出错,则需要先清除【make clean】缓存,并且还需删除配置【./config --prefix参数指定的安装目录】)。 | 可使用UE编辑器,打开bin目录下的任意文件查看,这些文件里面的内容都是机器可识别的二进制【0、1】代码(通常是以16进制显示)。 | 《1》RPM包的优点: ①RPM对程序包管理简单,只需一个简单的命令即可实现软件包的安装、升级和卸载; ②安装速度比源码包快很多。 《2》RPM包的缺点: ①由于是已经编译好的二进制包,因此无法看到源码; ②功能是固定的,无法灵活自定义配置功能; ③RPM包有很强的依赖性,大部分的包需要安装很多依赖包; ④卸载软件包的时候,若涉及依赖,有可能会卸载掉系统或其他程序所需的软件,导致崩溃。 |
[Linux中的源码包、二进制包、RPM包]

2.2、Linux的软件源/软件仓库

|--------|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | Linux的软件源 | Linux的软件仓库(repository) |
| 1 | Linux的软件源就是软件的来源,是存放各种软件包的软件仓库或者官方发布的ISO文件 | 多数Linux发行版都有自己的软件安装、配置方案,且还有自己的软件包管理系统。 为了让用户不用四处查找软件包,多数Linux发行版会将一些常用的软件都集中存放在一台指定域名的服务器上,方便用户查询、下载和安装,这就是"软件仓库"。 常见的软件仓库管理软件有【yum】【apt】【zypper】,这些软件仓库管理软件的配置文件格式通常是【*.repo】,软件仓库管理软件可以自动从配置文件的【baseurl】地址查询并获取下载安装用户所需的RPM软件包。 |
| 2 | | 软件仓库分为两种: 《1》在线网络访问:拥有各种软件的二进制包或源码包,软件种类较为丰富完整,提供多种获取方式(如:http、https、ftp等),一般是Linux发行版官方提供这种软件仓库。 《2》离线本地访问:官方发行版本的离线ISO文件【该ISO文件中包含经过官方筛选的软件】,挂载出来后也是一个软件仓库(如本文搭建的openEuler24.03LTS-SP2)。 |
[Linux的软件源/软件仓库]

三、Linux中常见的CPU架构

|--------|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | 常见CPU架构 | 说明 |
| 1 | i386 | 是因特尔(Intel)80386处理器的架构,也是最早的32位CPU架构; 在Linux中通常是指任何能够运行在80386或更高级别处理器上的操作系统或应用程序。 |
| 2 | i486 | 是因特尔(Intel)80486处理器的架构,**也是32位的CPU架构,**但是比i386更加先进,拥有更多的指令和更好的性能。 |
| 3 | i586 | 是因特尔(Intel)奔腾(Pentium)处理器的架构,又称为P5,也是32位CPU架构。提供MMX指令集 |
| 4 | i686 | 是因特尔(Intel)奔腾(Pentium)Pro处理器的架构,**又称为P6,也是32位的CPU架构,支持超标量架构和更多的MMX指令;**主要是用于兼容多种兼容 686 的处理器,包括英特尔 32 位 x86 处理器,如 8086(iAPX 86)、8088(iAPX 88)、80186(iAPX 186)、80286(iAPX 286)、80386(i386)、80486(i486),最高至 Pentium 4 以及 AMD 制造的兼容 32 位芯片,其他供应商。 (i686封装非常适合配备686兼容处理器的系统,这些处理器包括各种Intel和AMD芯片。如果我们在老硬件上运行Linux或需要兼容特定的32位软件,选择i686软件包是明智的选择。此外,它对老旧设备提供了更广泛的支持,并且可能比64位对应设备更节省系统资源。 尽管 i686 用于较老硬件,x86_64用于新硬件,但现代 Linux 发行版正逐渐放弃对 i686 架构的支持。这是因为如今64位系统的普及,使得维护32位系统的实际性降低)。 i686 包包含针对 32 位系统优化的软件和库。它特别适合运行不适合64位架构的老旧应用程序。许多遗留软件和库专门为 i686 架构构建,因此它对于保持向后兼容性至关重要。 |
| 5 | AMD64 | 是AMD公司推出的64位扩展x86架构,又称为x86_64(即:允许操作系统和应用程序利用64位CPU处理器的优势【如:更大的内存和寻址空间】) |
| 6 | x86 | **在Linux中通常是用来指代【32】位的系统;**也指英特尔8086微处理器家族的CPU架构 |
| 7 | x86_64 | 是英特尔(Intel)64位CPU架构,又称为x64;对标的是AMD64,它提供64位计算的支持。 在Linux中通常时用来指代【64】位的系统。这些64位CPU处理器的优势是可以与32位完全向后兼容 (x86_64包包含针对64位系统优化的软件和库。它利用了增强的内存寻址能力,为利用64位架构的现代应用提供了更好的性能。此外,由于x86_64与amd64同义,并表示原始x86架构的64位扩展,因此它保持了与32位架构的向后兼容,使得遗留软件能够无缝执行现代64位应用) x86_64封装适用于支持64位架构处理器的系统。如果我们有一台配备64位硬件的现代计算机,利用x86_64软件包将释放系统的全部潜力,使我们能够利用更多的内存和更好的性能。 |
| 8 | ARM64 | 是指ARM架构的64位版本,又称为AArch64;ARM架构是一种精简指令计算架构(RISC),通常用在移动设备和嵌入式系统,在能效控制方面做得十分出色。 |
| |||
| | 向后兼容 | 即向历史兼容(也就是说新版本能够读取运行旧版本的数据【如:win10可向后兼容win7的软件;office2024能够向后兼容打开office2010的文件;64位的CPU能够向后兼容32位的CPU开发的应用程序】) |
| | 向前兼容 | 即向新版本或新事物兼容(新版本生成的数据,能够在旧版本上运行处理【如:office2010能够处理office2024产生的文件,就是向前兼容】) |
[Linux中常见的CPU架构]