Linux基础笔记16 | 软件包 RPM 详解

这篇具有很好参考价值的文章主要介绍了Linux基础笔记16 | 软件包 RPM 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RPM 软件包管理

软件包的分类

  • 二进制包(binary code):无须编译,可以直接安装使用
  • 源码包(source code):没有经过编译的包,需要借助 gcc、c++ 编译器编译后才能运行

软件包的区分

  • 二进制包:软件包存在 bin 可执行文件
  • 源码包:软件包的文件包含有.h、.c、.cpp等结尾的源码文件

RPM

CentOS 操作系统中一款默认软件管理的工具,红帽包管理工具(Red Hat PackageManager)

  • 对软件包实现快速安装、管理及维护
  • 适合的发行版:CentOS、RHEL、Fedora、SUSE
  • 通常用来管理以“.rpm”后缀结尾的软件包

RPM 包的格式

大多数而言:

  • name-version.rpm
  • name-version-noarch.rpm
  • name-version-arch.src.rpm

软件包格式说明:

  • name:软件名称
  • version:版本号,通用格式:“主.次.修正”“-n”表示发布版本号,第 n 次编译生成的
  • arch:使用的硬件平台(i386、i586、i686、x86_64、sparc、alpha 等)
  • .rpm:编译好的二进制包,直接使用rpm安装
  • .src.rpm:源代码包,源码编译生成
  • el*:软件包发行版本,el6表示适合6.x版本的发行版
  • devel:开发包
  • noarch:软件包可以在任何平台上安装

RPM 命令解析

命令/参数/选项 说明
rpm -qa 标准输出所有安装的软件包
rpm -q zip 检查软件包是否安装,如果安装返回版本信息
rpm -qi zip 标准输出软件包安装的版本信息
rpm -e zip 卸载软件包
rpm -e --nodeps zip 强制卸载
rpm -ivh ******.rpm 安装软件
rpm -Uvh ******.rpm 升级软件
rpm -ivh --nodeps ******.rpm 不验证依赖包安装软件
rpm -qa --last 按照安装时间显示所有安装的软件包(最新的在最上面)
rpm --help 帮助信息(查询更多使用方法)

源码包管理

标准的以“.zip、.tar”结尾的源代码包不能使用 RPM 工具去操作

安装步骤

  1. ./configure:预编译阶段,检测系统基础编译环境是否满足,生成 makefile 文件(通常一些软件的源码编译时候,还需要带一些参数选项进行一个编译过程,具软件的使用情况而定)
  2. make:编译,基于第一步生成的 makefile 文件,进行源代码的编译
  3. make install:安装,编译完毕之后将相关的可运行文件安装到系统中
  4. 一些特殊源码可以只是其中一个或者两个步骤

示例

编译安装 nginx

从 nginx 官网下载最新的源码包

http://nginx.org/en/download.html

下载地址:http://nginx.org/download/nginx-1.22.0.tar.gz

Linux基础笔记16 | 软件包 RPM 详解

解压源代码包

tar -xf nginx-1.22.0.tar.gz

Linux基础笔记16 | 软件包 RPM 详解

进入解压后的文件夹,进行预编译阶段

Linux基础笔记16 | 软件包 RPM 详解

处理报错信息

缺少 pcre-devel 编译环境,可以使用yum 安装即可(一般在进行源代码编译时候,会存在很多编译环境的问题,这个要按照实际情况来解决)

Linux基础笔记16 | 软件包 RPM 详解

继续预编译

完成预编译阶段后,会返回一些软件预编译的一些结果

Linux基础笔记16 | 软件包 RPM 详解

编译及编译安装

部分软件在编译安装时候,执行过程稍长

make && make install

Linux基础笔记16 | 软件包 RPM 详解

安装成功

Linux基础笔记16 | 软件包 RPM 详解

编译安装总结

  1. 预编译阶段可以对软件的安装目录、功能选择等参数进行配置,内容可以参考源代码根目录下的 README 或 INSTALL 等相关文件
  2. 编译步骤是将源代码编译成为可以被执行的文件,文件放置在当前的目录下,这个时候还没有被安装到预安装的目录下
  3. 编译安装步骤是进行最后的安装步骤,把之前所编译完成的数据安装到默认的目录下

YUM 软件包管理

YUM 简述

前端软件包管理器 YUM(Yellow dog Updater, Modified)

  • 适用于 CentOS、Fedora、RedHat、SUSE 等发行版
  • 用于管理 rpm 包
  • 从指定的服务器自动下载 RPM 包并且安装,自动处理并安装依赖性关系
  • rpm 包管理遇到有依赖的时候,需要逐个手动下载安装,yum 工具最大好处就是自动处理依赖,提升效率

YUM 工作原理

组成

  • YUM 服务端:通过 HTTP 或者 FTP 服务发布
  • YUM 客户端:客户端安装的所有 RPM 包都来自 YUM 服务端,使用yum安装软件或者搜索文件时,会查找/etc/yum.repos.d 下以.repo 结尾文件,CentOS 默认的文件是:CentOS-Base.repo,该文件配置了 YUM 服务端的镜像地址,每次安装、升级 RPM 包,YUM 客户端都会查找这些文件
  • YUM 客户端如果没有外网,可以构建光盘或者内部的 YUM 源,客户端安装软件,默认会把 YUM 源地址、头部信息、软件包、数据库信息、缓存文件存储在/var/cache/yum中,每次使用 YUM 时候,优先通过 cache 查找相关软件包,cache 中不存在的时候,才会访问外网 YUM 源
[root@iZrgngz5lz7qzsZ ~]# ll /var/cache/yum/
total 4
drwxr-xr-x 3 root root 4096 Sep  5 19:32 x86_64
[root@iZrgngz5lz7qzsZ ~]#

yum 命令指南

企业常用命令

  • -y:表示安装与卸载出现 yes 时,自动确认 yes
  • -q:表示不显示安装过程
命令/参数/选项 说明
yum install zip 交互式安装软件
yum install zip -y 自动确定安装软件
yum search zip 搜索软件包
yum list zip 显示指定软件包的安装情况
yum list 显示所有已经安装及可被安装的软件
yum remove zip -y 删除程序包
yum update 内核升级(企业环境慎用)
yum update zip 更新软件
yum check-update 检查可更新的软件
yum info zip 显示安装包信息
yum provides “*/sz” 列出该命令由什么包提供的
yum deplist zip 查看该程序的依赖情况
yum clean packages 清除缓存目录下的安装包
yum clean headers 清除缓存目录下的头部信息
yum clean all 清除缓存目录下的软件包以及旧的头部信息
yum install --downloadonly --downloaddir=/tmp zip 只下载该软件的 rpm 包,并保存在指定目录下

YUM 源构建

基于 iso 镜像构建本地源

  • 该方式只限于本机可以使用,部分软件也无法安装,因为里面的安装包并不完整

基于 iso 镜像构建本地源就是利用光盘里面的软件包实现 YUM 安装软件

CentOS-7-x86_64-Everything-2009:针对这个版本的镜像包,集成了很多软件,可以当作本地源

将镜像文件放在服务器

Linux基础笔记16 | 软件包 RPM 详解

将镜像文件挂载到/mnt目录下

mount /home/CentOS-7-x86_64-Everything-2009.iso /mnt

Linux基础笔记16 | 软件包 RPM 详解

Linux基础笔记16 | 软件包 RPM 详解

临时改名/etc/yum.repos.d 下面的配置文件

这步目的是为了验证本地 YUM 源的使用

Linux基础笔记16 | 软件包 RPM 详解

新建一个 .repo 文件

内容如下:

[yum]												
name = CentOS7
baseurl = file:///mnt
enabled=1
gpgcheck=1
gpgkey=file://mnt/RPM-GRG-KEY-CentOS-7
  • name:源名称
  • baseurl:iso 镜像挂载目录
  • gpgcheck:是否检查 GPG-KEY
  • enabled:是否启用
  • gpgkey:指定加载目录下的 GPG-KEY文件验证

Linux基础笔记16 | 软件包 RPM 详解

测试结果(完毕)

yum clean all

yum makecache

yum install tcpdump -y

Linux基础笔记16 | 软件包 RPM 详解

Linux基础笔记16 | 软件包 RPM 详解

Linux基础笔记16 | 软件包 RPM 详解

基于 HTTP 构建 YUM 源

构建基于内网的 HTTP 方式的 YUM 源,企业中更常见

  • 服务端:192.168.204.110
  • 客户端:192.168.204.109

先挂载镜像文件

Linux基础笔记16 | 软件包 RPM 详解

安装一个 nginx,并可以实现访问

Linux基础笔记16 | 软件包 RPM 详解

在 nginx 默认的 /目录下增加一个文件夹

mkdir centos

Linux基础笔记16 | 软件包 RPM 详解

复制/mnt 下的相关文件到 centos 目录下

(复制时间稍微有点长)

cp -R /mnt/Packages/* /usr/share/nginx/html/centos/

Linux基础笔记16 | 软件包 RPM 详解

进入目录下,使用 createrepo 生成本地源

cd /usr/share/nginx/html/

createrepo centos/

Linux基础笔记16 | 软件包 RPM 详解

利用 HTTP 发布 YUM 源

配置一下,让可以访问到 centos 目录即可

Linux基础笔记16 | 软件包 RPM 详解

在客户端(内网的另一个环境)配置一个测试的 .repo 文件

内容如下:http.repo

[base]												
name = "CentOS7 HTTP YUM"
baseurl = http://192.168.204.110/centos/
enabled = 1
gpgcheck = 0
[updates]												
name = "CentOS7 HTTP YUM"
baseurl = http://192.168.204.110/centos/
enabled = 1
gpgcheck = 0

客户端测试

yum clean all

yum makecache

yum install tcpdump -y

Linux基础笔记16 | 软件包 RPM 详解

Linux基础笔记16 | 软件包 RPM 详解

从服务端的 nginx 日志可以看出客户端访问的记录

Linux基础笔记16 | 软件包 RPM 详解

如何扩展服务端的包呢?

尝试安装一下 ntfs-3g 软件包,但是发现没有这个包

Linux基础笔记16 | 软件包 RPM 详解

我们需要从外网下载这个软件包,并放在服务端的 centos 目录下

cd /usr/share/nginx/html/centos/
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-libs-2022.5.17-1.el7.x86_64.rpm
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-devel-2022.5.17-1.el7.x86_64.rpm

Linux基础笔记16 | 软件包 RPM 详解

更新软件包

cd /usr/share/nginx/html/
createrepo --update centos/

Linux基础笔记16 | 软件包 RPM 详解

客户端验证一下:OK的

yum clean all
yum makecache
yum install -y ntfs-3g-devel.x86_64 ntfs-3g-libs.x86_64

Linux基础笔记16 | 软件包 RPM 详解

同步外网的 YUM 源

针对上面的【基于 HTTP 的企业内部 YUM 源】,可以使用外网的 YUM 源,来同步到本地的,更加完善企业内部的 YUM 源的软件包

  • 获取外网 YUM 源软件的方式推荐使用:reposync,可以同步几乎所有的 YUM 源

比如我在客户端想升级一下 NetworkManager

提示没有更新的包,就需要同步下外网的 YUM 软件了

Linux基础笔记16 | 软件包 RPM 详解

在服务端操作:下载阿里云的 CentOS7 的 YUM 源文件

wget https://mirrors.aliyun.com/repo/Centos-7.repo

Linux基础笔记16 | 软件包 RPM 详解

服务端配置一下

yum clean all
yum makecache

Linux基础笔记16 | 软件包 RPM 详解

安装 reposync 命令

yum provides "*/reposync"
yum install -y yum-utils-1.1.31-54.el7_8.noarch

Linux基础笔记16 | 软件包 RPM 详解

获取外网所有的 YUM 软件包

## -r 指定 repolist id;不加 -r 表示获取外网所有的包
## -p 指定下载软件的路径
## 这玩意有点多,1W多个软件包,需要一定的空间和时间
reposync -r base -p /usr/share/nginx/html/centos/
reposync -r updates -p /usr/share/nginx/html/centos/

Linux基础笔记16 | 软件包 RPM 详解

Linux基础笔记16 | 软件包 RPM 详解

更新服务端软件包

cd /usr/share/nginx/html/
createrepo --update centos/

Linux基础笔记16 | 软件包 RPM 详解

客户端再次验证一下升级 NetworkManager :OK的

这个地方有点问题,折腾了很久,下面记录一下这个过程

通过上述升级服务端的软件包以后:发现搜索出来的包还是旧版本

Linux基础笔记16 | 软件包 RPM 详解

服务端访问一下软件包目录:发现多了2个文件夹:考虑是不是因为升级的时候将升级的包放在了其他位置

Linux基础笔记16 | 软件包 RPM 详解

然后对 updates 目录下重新做了操作:createrepo Packages/

Linux基础笔记16 | 软件包 RPM 详解

改了一下客户端的 repo 文件

Linux基础笔记16 | 软件包 RPM 详解

然后重新生效了一下源:

Linux基础笔记16 | 软件包 RPM 详解

最后成功升级:OK

Linux基础笔记16 | 软件包 RPM 详解文章来源地址https://www.toymoban.com/news/detail-483836.html

到了这里,关于Linux基础笔记16 | 软件包 RPM 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 银河麒麟专用服务器RPM软件包打包方式。

    1、在/root目录下创建rpmbuild目录 在rpmbuild目录下创建如下文件夹。  2、我的目标机器是arm架构,所以我需要将arm架构编译的软件打成tar.gz格式放到SOURCES文件下; 建议文件名为 \\\"文件名-版本号.tar.gz\\\",便于与SPEC文件中配置对应上 ;  3、编辑SPEC文件;格式如下;更改Name和Versi

    2024年02月12日
    浏览(130)
  • Linux Snap软件包详解

    Linux snap 是一种软件打包和分发格式,用于在不同的Linux操作系统上安装和运行应用程序。它不仅包括应用程序本身,还包括其依赖项和运行环境,因此可以保证在任何支持 snap 的 Linux 系统中都能够以相同的方式运行(有点像 docker )。 snap 还具有自动更新功能,使得应用程序可

    2024年02月08日
    浏览(41)
  • 构建patch补丁并提交git和rpm软件包验证

    目录 一:建立patch补丁和提交git 二.rpm软件包验证 进入项目页面,复制ssh链接,git clone到本地 例如: 在根目录创建rpmbuild文件夹,并在内创建SPEC和SOURCES文件: 将项目中的.spec文件拷贝到SPEC文件夹中,将项目的所有文件拷贝到SOURCES文件中: 例如,项目文件夹名为proj: 进入

    2024年02月10日
    浏览(40)
  • linuxOPS基础_linux软件包安装

    上图是windows下的软件包 Linux下也有很多可以安装的软件,而这些软件的安装包可细分为两种,分别是 源码包 和 二进制包 。 ① RPM软件包安装 = 软件名称.rpm ② YUM包管理工具 = yum install 软件名称 -y ③ 源码安装 = 下载软件的源代码 = 编译 = 安装(最麻烦的,但是也最稳定)

    2024年02月08日
    浏览(40)
  • 【Linux环境基础开发工具】软件包管理器-yum

    今天我打算介绍如何在Linux环境下载软件, Linux作为一个操作系统,就像windows一样,当然是存在软件的。 目录 写在前面 怎么在Linux环境安装软件 源代码安装 rpm安装包安装 yum安装 如何理解Linux的生态 如何使用yum安装软件 如何更换yum源 总结: 写在最后: 一般来说,Linux下有

    2024年02月08日
    浏览(64)
  • Linux软件包名称含AMD,ARM,x64的详解

    下载clickhouse-backup时看到不同软件包,有的是x86,有的是amd64,有的是arm64,这些有啥区别呢? clickhouse-backup-2.4.2-1.x86_64.rpm clickhouse-backup_2.4.2_amd64.deb clickhouse-backup_2.4.2_arm64.deb x86 和 ARM 都是CPU设计的一个架构。x86 用的是复杂指令集。ARM用的是精简指令集。 x86_64简称x64是基于

    2024年02月03日
    浏览(47)
  • 【Linux系列P4】Linux需要什么?编辑器?软件包?一文帮你了解掌握 [yum]&[vim]———基础开发工具篇

    前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向未接触过Linux的老铁,主要内容含 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门!  订阅专栏阅读: YY 的《Linux》系列 ❀❀❀❀❀ 【Linux系列-P1】 Linux环境的搭建 【Linux系列-P2】Linux的基本

    2024年02月06日
    浏览(60)
  • Linux:概述 、安装 、文件与目录结构 、vim编辑器 、网络配置 、远程登录 、系统管理 、基础命令 、软件包管理 、克隆虚拟机 、shell编程

    2.1.1、Linux是什么? Linux是一个操作系统(OS) 所谓的操作系统就是直接用来操作计算机底层硬件的软件。 2.1.2、Linux的出现 官网: https://www.centos.org/ 进入官网进行下载 有很多的镜像,以阿里云的为例: 3.3.1、下载 官网: https://www.vmware.com/ 这是下载的企业版,30天试用期,可

    2024年02月05日
    浏览(65)
  • Linux软件包管理

    Linux软件包管理 gcc 编译程序主要经过四个过程: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ui7wlR9e-1691465983118)(png/2019-10-11-11-51-23.png)] 如上图gcc编译过程 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U8OkM0eq-16914

    2024年02月13日
    浏览(99)
  • Linux命令——软件包管理

      博主最近项目上线,操作了linux系统,感觉命令很容易遗忘,因此总结一下,本文记录的是linux中相关的软件包管理命令   如果是新建立的虚拟机,可能需要安装某些软件,这时不知道系统是否已经安装,就需要用到以下这些命令 语法:yum list 作用:查询系统已经安装

    2024年02月05日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包