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 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • 使用 sed 查找并替换包含非转义字符的变量

    我可以使用它来查找 fly 的所有实例 并将其替换为文件中的 insect sed i s fly insect g animals txt 如何找到 BASH 变量并将其替换为另一个 BASH 变量 例如 name echo fly ca
  • /sys/device/ 和 dmidecode 报告的不同 CPU 缓存大小

    我正在尝试获取系统中不同缓存级别的大小 我尝试了两种技术 a 使用 sys device 中的信息 这是输出 cat sys devices system cpu cpu0 cache index1 size 32K cat sys dev
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • 如何在线程创建和退出时调用函数?

    include
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • bash 子 shell 中出现陷阱“kill 0”的分段错误

    我正在尝试编写一个并行构建多个 Dockerfile 的小脚本 但是如果我想取消该脚本 我也想杀死子进程 这样做的结果是segmentation fault 不知道为什么 为了澄清我正在杀死脚本 C trap kill 0 SIGINT S
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String

随机推荐

  • 第二篇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 帮助文件 手册页