`
A牛哥哥
  • 浏览: 150201 次
社区版块
存档分类
最新评论

centos软件包管理之rpm的使用

阅读更多
centos使用的二进制软件包扩展名为 .rpm , 同时rpm也是一个命令,专门用来安装,升级,查询和卸载这些二进制软件包.

一,rpm包的命名规则
比如包全名 httpd-2.2.15-15.el6.centos.l.i686.rpm, 分解如下:
httpd------软件包名
2.2.15-----软件版本
15---------当前版本的发布次数
el6.centos-适合的linux平台
i686-------适合的硬件平台

其中特别说明一下:
包全名是httpd-2.2.15-15.el6.centos.l.i686.rpm, 但是包名是httpd,记得这个概念,下面会提到.

el6-----EL 即 Enterprise Linux,就是企业级 Linux,,由于RedHat 的EL 已经成了行业标准了,所以一般 EL 表示都是 RedHat的EL, 6 就是指所有的 RHEL 6.x 系列版本.
有的包写的是el6.noarch ,表示适用任何平台,有的没有写适合的linux平台,也表示适用任何平台

i686----i386,i486,i686....只要不是x64就是32位的系统用的.


一,rpm包的依赖性
树形依赖: a依赖于b, b依赖于c,这种情况就要反过来装,先装c,再装b,再装a
环形依赖: a->b->c->a ,环形依赖时把依赖的包全部准备好,用rpm -ivh a b c 一次性安装

这种仅仅是依赖另一个rpm包的问题好解决,直接下载对应的rpm包安装即可,
不好解决的是库依赖,即报错  xxxx.so is needed by 或者 xxxx.so.2 is needed by , 他们并不是一个rpm包, 而是某个rpm包里面的一个函数库,要想得到这个库,就得安装对应的rpm包, 可是我们根本不知道这个库属于哪个rpm包, 怎么解决?
1, 官方给出了一个可以查询的网站: www.rpmfind.net ,专门根据库名称查询rpm包名称.
2, 使用yum来安装软件,缺失的库yum会自动下载对应的软件包并且安装

二,rpm包的安装:
rpm -ivh 包全名
比如 rpm -ivh  httpd-2.2.15-15.el6.centos.l.i686.rpm
i 即install ,安装
v 即verbos, 输出安装的详细信息,log等
h 即hash,显示安装进度

三,rpm包的升级
rpm -Uvh 包全名
-U 即upgrade ,大写的U, 升级
此命令是非在线升级,意义不大, 也可作为安装命令使用,效果等同于 rpm -ivh.

四,rpm的卸载
rpm -e 包名
注意,卸载使用的是包名,不是全名,比如 rpm -e httpd
-e 即 erase
rpm的卸载同样有依赖性, a依赖于b, b依赖于c, 要卸载c的话要先卸载a和b


五,rpm包的查询(查询某软件是否安装等)
不论是通过rpm还是yum安装的, 都可以用rpm命令来查询已安装的软件包.
1,查是否安装(已知包名)
rpm -q 包名
q 即query ,查询
如 rpm -q httpd

2,如果不知道包名呢?
rpm -qa | grep 关键字
a 即 all ,表示查询所有已安装的软件包名,然后用管道过滤下

3,查询已安装包的版本,发行日期,安装日期等详细信息?
rpm -qi 包名
i 即infomation
比如 rpm -qi httpd

4,查询未安装包的详细信息呢?
rpm -qip 包全名
p 即 package
由于还未安装,所以加上-p参数后要用包全名进行查询

5,查询已安装包中各个文件被安装到了哪个目录
rpm -ql 包名
如 rpm -ql httpd
l 即 list
会列出包中每一个文件安装后的绝对路径.

6,查未安装软件包将要被安装到哪个目录.
每个rpm包的安装位置其实是在别人打包时就指定好了的,所以安装前和安装后都能查询.
rpm -qlp 包全名
如 rp -qlp  httpd-2.2.15-15.el6.centos.l.i686.rpm
p 即 package

7,反查某个文件属于哪个包
注意这个文件必须是包安装时产生的,而不是这个包运行时产生的日志文件等,比如想知道httpd这个命令属于哪个包,或者/var/www/incons/tar.png 这个图片属于哪个包(httpd-2.2.15-15.el6.centos.l.i686.rpm安装后会有这个文件)都是可以查的,但是httpd在运行时产生的日志文件,我们不能根据它产生的日志文件反查包,因为这个日志文件不属于这个包.
rpm -qf  文件绝对路径及名称
如 rpm -qf  /var/www/incons/tar.png
执行后会显示包全名httpd-2.2.15-15.el6.centos.l.i686.rpm

如 rpm -qf /etc/yum.conf
执行后会显示包全名yum3.2.29-30.el6.centos.noarch

8,查依赖性
在安装之前或安装后我们都可以查这个包的依赖性
如果安装之前查询依赖:
rpm -qRp 包全名
如 rpm -qRp httpd-2.2.15-15.el6.centos.l.i686.rpm
R 即requires ,大写的
p 即package

如果安装后查询依赖
rpm -qR 包名
如 rpm -qR httpd

六, rpm包文件校验
比如httpd安装好了后,某个文件被其他人修改或者删除了,我想知道是哪个文件被改或删了.
rpm -V 已安装的包名
-V 即verify
比如rpm -V httpd
如果执行后没有任何输出,说明该包安装后,任何文件都没有变化
如果输出有内容,说明有文件被修改或删除等, 具体的是修改还是删除呢?
可以了解下输出的第一列有8个项,代表8种含义,有值的表示此项有变化,如果是点表示此项未变化,此8项信息一次是:
S 文件大小是否变化
M 文件类型或权限变化
5 MD5校验变化,证明文件内容被修改
D 从代码是否改变
L 文件的路径变化
U 文件所有者变化
G 文件的所属组变化
T 修改时间变化

七, 从rpm包中提取文件
假设某个文件被改的面目全非想还原,某个文件误删想恢复,都可以从rpm包直接提取出这个文件
rpm2cpio  包全名 | cpio -idv .要提取的文件路径和名称
rpm2cpio-----是一个包格式转换命令,将rpm格式的包转换成cpio格式
转换成cpio格式之后传送给管道,再用cpio命令处理,cpio的参数 -idv 解释如下:
-i cppy-in 模式,还原
-d 还原时自动新建目录
-v 显示还原过程

cpio-------是一个标准工具,用于创建软件档案文件和从档案文件中提取文件

注意: 提取的文件路径前面有个点,表示提取到当前目录, 假设你在 /home目录下执行从mmm.rpm包中提取/usr/local/xx.conf 的文件,命令如下:
rpm2cpio mmm.rpm | cpio -idv ./usr/local/xx.png
执行后,会产生一个/home/usr/local/xx.png的文件, 即在当前目录(/home)下自动创建新的目录/usr/local 并且还原xx.png这个文件

假设我们把ls这个命令误删除了,想要恢复这个命令,过程如下:
1,你首先得知道ls这个命令属于哪个包,所以在别的机器上反查一下包全名
rpm -qf /bin/ls
查出包全名为coreutils-8.4-19.el6.i686.rpm

2,下载这个包
3,还原,执行命令如下,假设是在/opt目录下执行的:
rpm2cpio coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
那么会产生一个 /opt/bin/ls 的文件

4,将提取的文件移动到真正的目录中
mv /opt/bin/ls /bin/ls





分享到:
评论

相关推荐

    Centos7 gcc相关的rpm软件包

    在安装这些RPM软件包后,开发者能够在CentOS 7环境中使用最新的GCC工具集,同时还能享受到SELinux带来的安全增强。这使得开发者可以在不牺牲安全性的情况下,充分利用最新编译器的优势,提高代码质量和运行效率。在...

    centos 6.5 扩展rpm软件包

    在Linux系统管理中,RPM(Red Hat Package Manager)是一种广泛使用的软件包管理系统,尤其在CentOS这样的基于RHEL(Red Hat Enterprise Linux)的发行版中。标题提到的"centos 6.5 扩展rpm软件包"指的是为CentOS ...

    centos6 openssh9.4rpm包

    2. 使用`sudo`或以root权限运行RPM安装命令,例如`sudo rpm -Uvh centos94_centos6.rpm`,其中`centos94_centos6.rpm`是实际的RPM文件名。 3. 安装后,启动或重启sshd服务以应用更改,命令可能是`sudo systemctl ...

    yum-3.2.29-40.el6.centos.noarch.rpm和yum-3.2.29-30.el6.noarch.rpm

    在Linux系统中,`yum`(Yellowdog Updater, Modified)是基于RPM包管理的命令行工具,用于安装、更新、卸载和管理RPM软件包。它为用户提供了方便的方式来处理依赖关系,简化了软件包的安装过程。本文将深入探讨`yum`...

    centos7所需rpm.rar

    RPM是一种用于安装、卸载、查询、验证和管理软件包的标准格式,尤其在基于Fedora、RHEL(包括CentOS)的系统中广泛应用。在无法访问互联网或内网环境中,无法直接使用`yum`命令(Yellowdog Updater, Modified)来...

    centos7 rpm安装ntp

    首先,理解RPM是Red Hat家族操作系统(包括CentOS)中用于管理软件包的工具,它可以安装、升级、查询和删除软件包。NTP服务的RPM包可以从各种源获取,包括官方镜像站点、第三方仓库或者通过下载链接,如提供的博客...

    CentOS_glibc及依赖RPM包.zip

    RPM(Red Hat Package Manager)是一种广泛用于Linux发行版的软件包管理系统,包括CentOS。RPM包是预编译的二进制文件,包含软件及其依赖关系,使得用户可以方便地安装、升级和卸载软件。RPM包管理系统通过元数据来...

    centos7 ssh8.6 rpm安装包

    在IT领域,特别是服务器管理,CentOS 7操作系统是一个广泛使用的Linux发行版。SSH(Secure Shell)和SSL(Secure Sockets Layer)是两个至关重要的安全协议,用于远程管理和数据传输。本文将详细介绍如何在CentOS 7...

    centos5 centos6 epel.rpm包下载

    在Linux世界中,CentOS是一种广泛使用的开源操作系统,它基于Red Hat Enterprise Linux (RHEL)。CentOS 5和CentOS 6是两个较...对于初学者和经验丰富的系统管理员来说,理解和使用EPEL都是提高工作效率的关键技能之一。

    Centos SND软件包111111

    在CentOS中,软件包通常通过RPM(Red Hat Package Manager)格式进行分发和管理,".rar" 文件则表明这个软件包是用WinRAR或其他压缩工具打包的,这可能是为了跨平台方便下载和传输。 要安装这个"SND"软件包,首先你...

    yum-3.4.3-150.el7.centos.noarch.rpm

    基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,...

    掌握linux软件包管理方法。熟悉图形模式下软件管理工具的使用。

    首先,RPM是Linux世界中最常见的软件包管理器之一,尤其在基于Red Hat的系统如Fedora、CentOS等中广泛使用。RPM命令用于安装、查询、验证、升级和卸载软件包。在描述中提到的`-i`、`-ivh`参数,是RPM命令安装软件包...

    常用的linux centos7.x rpm

    Linux CentOS 7.x 系统广泛使用RPM(Red Hat Package Manager)作为其软件包管理器,用于安装、升级和管理软件。RPM是Linux世界中的一个重要组成部分,它简化了软件的分发和维护,使得用户可以方便地处理各种软件...

    CentOS中文输入法rpm安装包

    RPM是Linux系统中广泛使用的软件包管理器,用于安装、升级、查询和卸载软件。 【描述解析】 描述提到"CentOS中文输入法,安装前提是已经支持中文环境",意味着在安装中文输入法之前,系统需要具备显示和处理中文字符...

    yum-3.4.3-168.el7.centos.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    centos7 gcc/g++离线rpm包

    CentOS 7是一个基于RPM包管理系统的Linux发行版,因此安装GCC及其相关组件通常需要通过yum或dnf命令在线安装。然而,在没有网络连接或者网络环境受限的情况下,离线安装GCC和G++就显得尤为重要。本资源提供了适用于...

    Linux软件包管理

    - **定义**:RPM 是一种广泛用于 Red Hat 及其衍生版本(如 CentOS、Fedora 等)中的软件包管理器。 - **功能**: - 安装软件包:`rpm -ivh <package>.rpm` - 卸载软件包:`rpm -e <package>` - 查询已安装的...

    CentOS Openssh 8.8 RPM安装包

    RPM(Red Hat Package Manager)是Linux系统中广泛使用的软件包管理系统,用于安装、升级和管理软件。RPM格式的安装包在CentOS这样的基于RPM的发行版中非常常见,它们通常包含了软件的所有依赖关系,使得安装过程...

    zlib1.2.11RPM包,基于CentOS7制作

    “RPM”标签表明这个软件包遵循RPM规范,适合于使用RPM包管理系统的Linux发行版,如CentOS、Fedora等。“CentOS”标签则明确了这个软件包的目标使用环境。“zlib升级”意味着这个RPM包用于更新已安装的zlib到最新...

Global site tag (gtag.js) - Google Analytics