rpm软件包管理,YUM以及源码编译安装

2023-10-27

一、初始rpm软件包
1、软件包是由以下几个部分组成的:
1)二进制程序
2)配置文件:
组成方式有三种:单个文件
将主配置文件分割为多个小文件,并放置于某目录中
单个文件,在内部分割为多个段的
3)库文件:
静态库
动态库
4)帮助文件
手册页
文档(一般在/usr/share/doc)
2、应用程序一般存放的位置:
1)二进制程序
/bin/,/sbin/:
/usr/bin,/usr/sbin;
/usr/localbin,/usr/localsbin
2)库文件:
/lib
/usr/lib
/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
3) 配置文件/etc
例:/etc/httpd
4) 帮助文件:
/usr/share/man
/etc/man.config
/usr/share/doc
3、rpm格式与命名
bash-3.1-16.1.i386.rpm
bash 软件包名称
3.1-16.1 版本号
i386 硬件平台
rpm 扩展名

一个软件包为了管理上的方便,在制作成rpm包的时候,可以分多个功能相对独立的rpm包
name-version:主包
name-subname-version:子包
name-devel-version:库文件,头文件

4、Linux软件包的安装途径:
1)rpm
rpm
yum
2)源码
编译
3)编译好的二进制压缩,解压后配置使用

5、rpm 命令:
rpm -ivh 完整软件包名称
-i 安装
-v 显示安装信息
-h 以#号显示进度

(一般常用选项为 rpm -ivh 安装)


--replacepkgs 替换安装
--nodeps 忽略依赖关系
--force 强制安装(主要用在安装旧的软件代替新的软件)
--test 测试安装

rpm -e 软件包名称 卸载软件包

rpm -Uvh 完整软件包名称 无论旧版本软件是否安装,都安装新版本
rpm -Fvh 完整软件包名称 若旧版本软件没有安装,则放弃安装新版本

rpm -qa 查询系统已经安装所有的软件包
rpm -q 软件包名称 查询指定包是否安装
rpm -qa | grep 软件包名称 查询当前系统安装了哪些与软件包名称相关的包
rpm -qi 软件包名称 查询已安装软件包的详细信息
rpm -ql 软件包名称 查询已安装软件包安装到什么地方去了
rpm -qf 文件的绝对路径 查询该文件由哪个包产生
rpm -q --scripts 软件包名称 查询次rpm包内置脚本

rpm -qpi 完整软件包名称 查询未安装软件的详细信息 
rpm -qpl 完整软件包名称 查询未安装软件要安装的文件路径
rpm -qc 软件包名称 查询软件生成的配置文件 

-V 软件包名称 查询已安装软件的文件是否有修改
-K 完整软件包名 查询未安装软件的签名
-- nodigest 不检验单向加密相关内容
-- nosignature 不检验签名。
事先需要我们导入公钥的,公钥我们可以再官网得到
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 


rpm包的数据库:/var/lib/rpm
重建数据库
rpm --initdb 重建丢失的
rpm --rebuilddb 全部重建

二、rpm 解决了我们的编译问题,但是又有个比编辑跟头痛的问题出现了,要解决依赖关系,比如我要装A软件包,他说需要B,安装B又要C,如果都是软件包的话还好,有的可能是软件包产生的文件,这下就哭了,不过还好有yum的出现,解决了这个依赖问题,让我们看看yum怎么使用

1、提要yum就一定要先说下什么是yum源,也就是yum仓库,yum源里有我们需求的rpm包,但是他怎么解决的呢?
首先每个源都有个目录是repodata/ ,只有包含此目录为其子目录的路径才可以做yum源,里面包含的几个文件:
repomd.xml 保留时间戳
primary.xm.gz 当前yum仓库内每一个rpm包的名字及其彼此间的依赖关系;每个rpm包内部包含的文件。
filelist.xml.gz 所有rpm包的文件列表
other.xml.gz 其他信息

2、yum的配置文件:
/etc/yum.conf yum的配置文件,包含一些缓存目录的设置,日志等等。
/etc/yum.repos.d/ 怎么找yum仓库就是通过这文件的
/etc/yum/pluginconf.d/ yum的插件
这里我们主要介绍/etc/yum.repos.d/这目录,在这里以*.repo接尾的文件都是定义的yum的相关信息:
[rhel-debuginfo] yum源的信息
name=Red Hat Enterprise Linux $releasever - $basearch - Debug yum的名字
baseurl=ftp://192.168.0.254/pub/Server yum仓库的位置
enabled=1 是否开启yum,1开启,0 关闭
gpgcheck=1 是否开启效验,1开启,0关闭
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 效验公钥的位置

3、yum常用命令

yum repolist 显示当前系统所有可用yum源
yum list installed 显示已安装过的包
yum list available 显示可安装的包。
yum list updates 显示可升级的包
yum clean all 清除yum缓存
yum grouplist 列出组的信息
yum groupinfo "组名称" 查看组的内容
yum groupinstall "组名称" 安装组,有空格时候加""号
yum groupremove "组名称" 卸载组 
yum info 软件包 查看软件包的信息
yum search 软件包 查找软件包

yum install 软件包 安装自动解决依赖关系  

yum remove 软件包 卸载软件包并且也卸载依赖关系,不明确依赖关系慎用

yum localinstall rpm软件包 在本地安装rpm软件包,并在yum仓库解决依赖关系

–nogpgcheck 不效验

4、如何制作yum源:
yum install createrepo 首先现在个createrepo的软件包
createrepo dir 用createrepo 加存放rpm包的路径即可

baseurl=file:///tmp/myyum 在yum配置文件里更下下yum源的路径,这里的file:///tmp/myyum = file:// + /tmp/myyum/(rpm路径); file指本地路径

事后清下缓存即可。

三、虽然rpm和yum都很不错但是有的时候还是需要源码安装更适合自己的服务要求。

首先说下压缩的命令

1)gzip:
压缩后以.gz结尾,并且删除源而文件
gzip:压缩
gunzip 解压缩
zcat 不用解压查看压缩后的内容

 gzip 1-9 FILE,也已指定压缩级别,默认6
 -d 解压缩 = gunzip
 zcat FILE

2)bzip2:
压缩后以.bz2结尾
bzip2 压缩,也可以指定级别1-9
-k 保留原文件
bunzip2 解压缩
bzcat 不用解压缩查看压缩内容

 另:gzip,bzip2 无法有效压缩目录

3)zip:可以压缩目录,需要先指定压缩名字

 zip FILENAME.zip FILE1 FILE2 dir... 压缩
 unzip 解压缩
 -d 指定解压到哪

4)tar 只归档(打包目录),不压缩

 tar -cf FILENAME.tar FILE1 FILE2 .. 归档
 -xf FILENAME.tar 展开
 -tf FILENAME.tar 不展开查看内容列表
(显示详细信息可以加-v参数,例:-cvf

 z: 以gzip 压缩并归档
 j: 以bzip2 压缩并归档
 例:tar -zcvf FILENAME.tar.gz FILE1 FILE2 用gzip压缩并归档
 tar -zxvf FILENAME.tar.gz 展开打包压缩文件
 以bzip2压缩,解压缩将z换成j即可

5)源码安装
解压好文件后,进入解压后的目录中依次执行以下命令即可:
./configure 测试环境生成Makefile文件
make 编译
make install 安装

补充:源前提条件linux系统必须先安装gcc
yum -y install gcc

./configure --help
–prifix= 指定安装路径
–sysconfdir= 指定配置文件的安装路径
make
make install

(当我们指定路径以后,可能系统会找不到路径所以做以下操作)
PATH=$PATH:/usr/lcoal/apache/bin
导出库文件路径:

/etc/ld.so.conf
1、/etc/ld.so.conf.d/*.conf 并将当前软件的库文件所在目录添加至此文件
2、ldconfig 重新读库 -v 查看过程

头文件:
#ln -s /usr/local/apache/incllude/ /usr/include
手册页:/etc/man.conf:中添加 MAN路径
man -M /usr/local/apache/man httpd 临时

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rpm软件包管理,YUM以及源码编译安装 的相关文章

  • 迭代 bash 脚本中的变量名称

    我需要在一堆文件上运行一个脚本 这些文件的路径被分配给train1 train2 train20 我想 为什么不使用 bash 脚本使其自动执行呢 所以我做了类似的事情 train1 path to first file train2 pa
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 如何判断 Bash 中是否存在文件?

    这会检查文件是否存在 bin bash FILE 1 if f FILE then echo File FILE exists else echo File FILE does not exist fi 我如何只检查文件是否存在not ex
  • jq:将对象数组转换为对象

    我收到了来自curl的回复 格式如下 list value 1 id 12 value 15 id 13 value 4 id 14 给定 id 之间的映射 如下所示 12 newId1 13 newId2 14 newId3 我想做这个
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 分叉/多线程进程|重击

    我想让我的代码的一部分更加高效 我正在考虑让它分叉成多个进程 并让它们一次执行 50 100 次 而不是只执行一次 例如 伪 for line in file do foo foo2 foo3 done 我希望这个 for 循环运行多次 我
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su

随机推荐

  • 第二篇web前端面试自我介绍(刚毕业的菜鸟)

    各位面试官 大家好 我叫汤慧来自湖南益阳专业是电子商务web前端方向我今天应聘的职位是web前端开发 在校期间我主修的课程是HTML CSS JavaScript及JQuery 在课余我喜欢通过逛论坛博客github来了解一些前端的前沿的开
  • 为什么要进行单元测试?

    进行单元测试有许多不同的方法 一些主要目的是 验证功能 单元测试确保代码做正确的事情并且不做任何不应该做的事情 大多数错误发生在这里 防止代码回归 当我们发现错误时 添加单元测试来检查场景可以防止代码更改在将来重新引入错误 记录代码 通过正
  • STM32-定时器详解

    前言 定时器作为微控制器不可缺少的外设 在STM32中也是如此 相信不少初学者学到定时器的时候对STM32的学习热情就大打折扣甚至想要放弃了 因为这一部分知识确实比较复杂 但是 如果你在之前对GPIO 串口通信 外部中断的学习中把这些外设掌
  • 数字水印技术

    数字水印技术涉及多个学科知识 其中主要包括图像存储处理原理 密码学 数字图像在计算机里的储存 从结构上讲 分为位图和矢量图 在位图中 图像由许多的屏幕小点组成 这些小点对应显存中的 位 位 决定了像素的图形属性 如像素的颜色 灰度 明暗对比
  • 代码审查和合并请求:团队合作中的关键

    在现代软件开发中 团队合作是不可或缺的一部分 为了确保代码质量 减少错误以及促进知识共享 代码审查和合并请求成为了开发团队中的关键实践 在本文中 我们将深入探讨代码审查和合并请求的重要性 流程以及最佳实践 代码审查的重要性 代码审查是一种通
  • JVM面试题学习笔记1:

    1 谈谈你对JVM的理解 我们写的java文件到通过编译器编译成java字节码文件 class文件 这个过程是java编译过程 而我们的java虚拟机执行的就是字节码文件 即一堆16进制的字节 答 Java虚拟机是一个可以执行Java字节码
  • Vogue 中的 GAN 时尚图像生成分步指南

    介绍 本文将探讨生成对抗网络 GANs 及其在图像生成方面的卓越能力 GANs已经彻底改变了生成建模领域 通过对抗性学习为通过创造性的方法来创建新内容提供了创新性的途径 在本指南中 我们将带你踏上一段迷人的旅程 从 GAN 的基本概念开始
  • STM32+ESP8266 AT测试、透传、DHT11、APP操作以及源代码

    前言 本文主要应用于STM32F103 ESP8266 AT测试 透传 DHT11 APP操作以及源代码链接 1 1简介 ESP8266 是串口型 WIFI 速度比较低 不能用来传输图像或者视频这些大容量的数据 主要应用于数据量传输比较少的
  • unity使用PhotonEngine实现多人联机游戏开发(二)

    unity使用PhotonEngine实现多人联机游戏开发 二 上一篇由于Mac没电了 写的有点仓促 可能逻辑不是太好 有些说明有遗漏 先来补充一下 申请免费光子云的正确步骤应该是先去全球官网注册账号 接着建立photon cloud ap
  • 报错问题集锦

    一 idea 1 idea集成插件连接数据库报错 https www cnblogs com shaoyang0123 p 11751076 html 二 maven 1 spring boot maven plugin插件一直下载失败问题
  • spring boot elasticsearch搭建

    首先创建一个 maven项目 点击file gt new gt project 选择maven gt next 起个名字 直接点击 gt finish 导入pom
  • RocketMQ下载安装、集群搭建保姆级教程

    目录 1 下载安装 2 配置 3 测试 4 集群配置 4 1 规划 4 2 环境准备 4 3 节点配置 4 3 1 master1 4 3 2 slave2 4 3 3 master2 4 3 4 slave1 4 4 启动 4 5 测试
  • 【OJ比赛日历】快周末了,不来一场比赛吗? #09.16-09.22 #12场

    CompHub 1 实时聚合多平台的数据类 Kaggle 天池 和OJ类 Leetcode 牛客 比赛 本账号会推送最新的比赛消息 欢迎关注 以下信息仅供参考 以比赛官网为准 目录 2023 09 16 周六 3场比赛 2023 09 17
  • RunTime Error : cuda out of memory

    cuda out of memory 分为两种情况 第一种 CUDA out of memory Tried to allocate 16 00 MiB 错误信息 CUDA out of memory Tried to allocate 1
  • 2023-01-20 网工进阶(三十九)MPLS 虚拟专用网络---概述、路由交互、CE接入PE方法、基本组网方案详解、团体属性、防环、MCE组网、伪连接方案、跨域组网详解、各种组网方案配置举例

    概述 VPN Virtual Private Network 虚拟专用网络 指的是在一个公共网络中实现虚拟的专用网络 从而使得用户能够基于该专用网络实现通信的技术 MPLS VPN也是VPN技术中的一种 本文特指BGP MPLS IP VP
  • github提交代码出现remote: Support for password authentication was removed on August 13, 2021.?

    今天我往github上提交代码 输入用户名密码以后总是出现 remote Support for password authentication was removed on August 13 2021 意思是 2021年8月13日之后
  • 批量删除文件夹中指定类型的文件os.remove

    批量删除文件夹中指定类型的文件os remove import os def delFiles filePath for root dirs files in os walk filePath print root dirs files f
  • 9个点的所有解锁图_Android九宫格手势锁设定和解锁

    最近在做APP的自动化测试 采用的是Appium方案 在测试过程中遇到了九宫格滑动解锁的问题 通过查阅相关资料 我做了一个通用的方法来处理九宫格在一个view中显示的情况 这种情况我们只能通过定位每一个点的相对坐标来滑动 这里先获取整个九宫
  • node环境下运行js代码缺少window环境原因与解决方案

    node环境下运行js代码缺少window环境原因与解决方案 目录 报错信息与截图 报错原因 解决方案 报错信息与截图 ReferenceError window is not defined 外链 报错原因 使用node环境直接运行js文
  • rpm软件包管理,YUM以及源码编译安装

    一 初始rpm软件包 1 软件包是由以下几个部分组成的 1 二进制程序 2 配置文件 组成方式有三种 单个文件 将主配置文件分割为多个小文件 并放置于某目录中 单个文件 在内部分割为多个段的 3 库文件 静态库 动态库 4 帮助文件 手册页