Linux rpm软件包管理

1. linux软件管理概念:

Linux整个体系的关键不在于系统本身,而是在于可以基于Linux系统去安装和配置企业中相关的软件、 数据及应用程序,所以对软件的维护是运维工程师的重中之重。 

 

2. 软件管理的三种方式:

rpm管理:

yum管理:

源码方式管理:

Linux软件包管理大致可分为二进制包、源码包,使用的工具也各不相同。

Linux常见软件包分为两种,分别是源代码包(Source Code)、二进制包(Binary Code),源代码包是没有经过编译的包,需要经过GCC、C++编译器环境编译才能运行,二进制包无需编译,可以直接安装使用。

通常而言,可以通过后缀简单区别源码包和二进制包,例如.tar.gz、.zip、.rar结尾的包通常称之为源码包,以.rpm结尾的软件包称之为二进制包。

真正区分是否为源码还是二进制还得基于代码里面的文件来判断,例如包含.h、.c、.cpp、.cc等结尾的源码文件,称之为源码包,而代码里面存在bin可执行文件,称之为二进制包。

 

2.1 RPM管理:

2.1.1 rpm工作原理:

当我们使用rpm工具安装软件包时,它会首先找到软件包中的一个记录文件,该文件记录了这个软件安装时需要的依赖包,如果包已经存在,则可以顺利安装,如果不存在,则提示缺少相应的依赖。

 

RPM优点:

(1)软件已经编译打包,所以传输和安装方便,让用户免除编译。

(2)在安装之前,会先检查系统的磁盘、操作系统版本等,避免错误安装。

(3)在安装好之后,软件的信息都已经记录在linux主机的数据库上,方便查询、升级和卸载。

 

RPM缺点:

(1)软件包安装的环境必须与打包时的环境一致。(rpm包非常吃版本,32位不能装64位)

(2)必须安装了软件的依赖软件。

 

2.1.1.1 安装httpd rpm包 

http://mirrors.163.com/centos/7/os/x86_64/Packages/  --这个网站是用来下载rpm包的

[root@localhost ~]# yum install wget

Loaded plugins: product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

local                                                                                                   | 4.1 kB  00:00:00

.......................................................

 

[root@localhost ~]# wget http://mirrors.163.com/centos/7/os/x86_64/Packages/httpd-2.4.6-90.el7.centos.x86_64.rpm

--使用wget命令获取163网站上的httpd软件包

--2020-02-24 14:32:56--  http://mirrors.163.com/centos/7/os/x86_64/Packages/httpd-2.4.6-90.el7.centos.x86_64.rpm

Resolving mirrors.163.com (mirrors.163.com)... 59.111.0.251

Connecting to mirrors.163.com (mirrors.163.com)|59.111.0.251|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 2844388 (2.7M) [application/x-redhat-package-manager]

Saving to: ?.ttpd-2.4.6-90.el7.centos.x86_64.rpm?

 

100%[=====================================================================================>] 2,844,388   5.41MB/s   in 0.5s   

 

2020-02-24 14:32:56 (5.41 MB/s) - ?.ttpd-2.4.6-90.el7.centos.x86_64.rpm?.saved [2844388/2844388]

 

[root@localhost ~]# ls

anaconda-ks.cfg  fstab  httpd-2.4.6-90.el7.centos.x86_64.rpm  redhat.bak

 

[root@localhost ~]# rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm

warning: httpd-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

error: Failed dependencies:

/etc/mime.types is needed by httpd-2.4.6-90.el7.centos.x86_64

httpd-tools = 2.4.6-90.el7.centos is needed by httpd-2.4.6-90.el7.centos.x86_64

--i是安装 v是展示详细信息 h是指显示安装进度,可以看到软件包依赖性出现问题,需要这个工具包httpd-tools,所以必须先安装httpd-tools。

 

[root@localhost ~]# wget http://mirrors.163.com/centos/7/os/x86_64/Packages/httpd-tools-2.4.6-90.el7.centos.x86_64.rpm

--2020-02-24 14:45:10--  http://mirrors.163.com/centos/7/os/x86_64/Packages/httpd-tools-2.4.6-90.el7.centos.x86_64.rpm

Resolving mirrors.163.com (mirrors.163.com)... 59.111.0.251

Connecting to mirrors.163.com (mirrors.163.com)|59.111.0.251|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 92944 (91K) [application/x-redhat-package-manager]

Saving to: ?.ttpd-tools-2.4.6-90.el7.centos.x86_64.rpm?

 

100%[=====================================================================================>] 92,944      --.-K/s   in 0.02s   

 

2020-02-24 14:45:10 (4.21 MB/s) - ?.ttpd-tools-2.4.6-90.el7.centos.x86_64.rpm?.saved [92944/92944]

 

[root@localhost ~]# rpm -ivh httpd-tools-2.4.6-90.el7.centos.x86_64.rpm

warning: httpd-tools-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

   1:httpd-tools-2.4.6-90.el7.centos  ################################# [100%]

 

 

[root@localhost ~]# rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm

warning: httpd-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

error: Failed dependencies:

/etc/mime.types is needed by httpd-2.4.6-90.el7.centos.x86_64

--可以看到,缺少/etc/mime.type这个文件,这个文件在mailcap-2.1.41-2.el7.noarch.rpm包里面,再次从163获取  mailcap-2.1.41-2.el7.noarch.rpm解决httpd的依赖性问题

[root@localhost ~]# wget http://mirrors.163.com/centos/7/os/x86_64/Packages/mailcap-2.1.41-2.el7.noarch.rpm

--2020-02-24 15:03:54--  http://mirrors.163.com/centos/7/os/x86_64/Packages/mailcap-2.1.41-2.el7.noarch.rpm

Resolving mirrors.163.com (mirrors.163.com)... 59.111.0.251

[root@localhost ~]# rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm

warning: mailcap-2.1.41-2.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

   1:mailcap-2.1.41-2.el7             ################################# [100%]

 

[root@localhost ~]# rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm  --可以看到已经成功安装上httpd解决了依赖 httpd-tools-2.4.6-90.el7.centos.x86_64.rpm,mailcap-2.1.41-2.el7.noarch.rpm 这两个软件包的问题

warning: httpd-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

   1:httpd-2.4.6-90.el7.centos        ################################# [100%]

 

[root@localhost ~]# rpm -qp --requires httpd-2.4.6-90.el7.centos.x86_64.rpm  --查看安装httpd需要依赖的文件和软件包

warning: httpd-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

/etc/mime.types

system-logos >= 7.92.1-1

httpd-tools = 2.4.6-90.el7.centos

 

使用rpm包安装,安装的目录是分散的,有的在/etc下面,那些是配置文件,有的在/var下面是日志等文件。

 

使用rpm安装了httpd,但是多了一个apache用户。在使用rpm在安装包的时候,创建了对应于服务的用户。

[root@localhost ~]# rpm -q --scripts httpd

preinstall scriptlet (using /bin/sh):

# Add the "apache" group and user

/usr/sbin/groupadd -g 48 -r apache 2> /dev/null || :

/usr/sbin/useradd -c "Apache" -u 48 -g apache \

-s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null || :

postinstall scriptlet (using /bin/sh):

 

 

2.1.2 rpm常用命令:

2.1.2.1 查询包是否已安装和查询已安装的包

[root@node-2 ~]# rpm -q tk

package tk is not installed

[root@node-2 ~]# rpm -q httpd

httpd-2.4.6-88.el7.centos.x86_64

# 查询所有已经安装的软件包

[root@node-2 ~]# rpm -qa

t1lib-5.1.2-14.el7.x86_64

python-urlgrabber-3.10-8.el7.noarch

setup-2.8.71-7.el7.noarch

gpm-libs-1.20.7-5.el7.x86_64

pth-2.0.7-23.el7.x86_64

# 统计操作系统已经安装得所有包数量:

[root@localhost ~]# rpm -qa |wc -l

624

 

2.1.2.2 根据文件反向查找包:

# 可以通过which arp 找到命令路径,然后通过qf查询该文件时由哪个包提供得

[root@localhost ~]# which arp

/usr/sbin/arp

[root@localhost ~]# rpm -qf /usr/sbin/arp

 

2.1.2.3 查软件安装路径:

[root@node-2 ~]# rpm -ql httpd

/etc/httpd

/etc/httpd/conf

/etc/httpd/conf.d

/etc/httpd/conf.d/README

 

2.1.2.3 查软件的配置文件路径

[root@localhost ~]# rpm -qc httpd

/etc/httpd/conf.d/autoindex.conf

/etc/httpd/conf.d/userdir.conf

/etc/httpd/conf.d/welcome.conf

 

2.1.2.4 查询一个未安装软件包的文件路径:

# 查询一个未安装软件包安装后会在系统生成的文件列表

[root@node-2 Packages]# rpm -qpl tk-8.5.13-6.el7.x86_64.rpm

/usr/bin/wish

/usr/bin/wish8.5

/usr/lib64/libtk8.5.so

/usr/lib64/tk8.5

/usr/lib64/tk8.5/pkgIndex.tcl

/usr/share/doc/tk-8.5.13

 

2.1.2.5 查询软件的版本信息:

[root@node-2 ~]# rpm -qi httpd

Name : httpd

Version : 2.4.6

Release : 88.el7.centos

Architecture: x86_64

Install Date: Mon 25 Mar 2019 05:44:57 AM EDT

Group : System Environment/Daemons

Size : 9817309

License : ASL 2.0

 

2.1.2.6 安装软件包:

# 安装软件包,需要切换到软件包所在的目录或者使用绝对路径安装,否则报错如下:

[root@node-2 ~]# rpm -ivh tk-8.5.13-6.el7.x86_64.rpm

error: open of tk-8.5.13-6.el7.x86_64.rpm failed: No such file or directory

# 需要先安装依赖,否则报错如下:

[root@node-2 Packages]# rpm -ivh tk-8.5.13-6.el7.x86_64.rpm

error: Failed dependencies:

libXft.so.2()(64bit) is needed by tk-1:8.5.13-6.el7.x86_64

libtcl8.5.so()(64bit) is needed by tk-1:8.5.13-6.el7.x86_64

tcl = 1:8.5.13 is needed by tk-1:8.5.13-6.el7.x86_64

tcl >= 1:8.5.13-5 is needed by tk-1:8.5.13-6.el7.x86_64

 

2.1.2.7 安装软件包(忽略依赖):

rpm -ivh --nodeps httpd-2.4.10-el7.x86_64.rpm

# 不太建议,这样安装的包往往会有问题

 

2.1.2.8 升级软件包:

# 需要当前目录有这个软件包才行,否则也会报错

rpm -Uvh httpd-2.4.6-88.el7.centos.x86_64.rpm

 

2.1.2.9 卸载软件包:

rpm -e httpd

 

2.1.2.10 强制卸载

rpm -e --nodeps httpd

 

2.1.2.11 测试安装:

# 一个软件包是否能够安装在系统上,不真正安装

rpm -ivh --test httpd-2.4.6-88.el7.centos.x86_64.rpm

 

2.1.2.12 rpm数据库命令:

# 初始化系统的rpm数据库:

rpm --initdb

# 重建系统的rpm数据库

rpm --rebuilddb

# 向系统导入软件包的公钥

rpm --import

 

2.1.2.13 查询软件包得执行脚本:

# 查询未安装包的脚本:

rpm -qp --scripts httpd-2.4.6-90.el7.centos.x86_64.rpm

# 查询已安装包的脚本:

rpm -q --scripts httpd

 

2.1.2.14 查询软件包得依赖文件:

rpm -qp --requires httpd-2.4.6-90.el7.centos.x86_64.rpm

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值