RHEL6基础二十二之RHEL软件包管理①rpm

Linux系统中安装软件的三种方法
在Linux系统中安装软件有三种方法:源代码安装、RPM包安装、YUM安装。

源码安装:由于在Linux系统中使用的绝大多数软件都是开源软件,软件作者在发布软件时直接提供的就是软件的源代码。用户在取得应用软件的源码文件后,可以根据自身需求对软件进行修改或定制,然后在自己的系统上重新编译,即可生成能在该系统上执行的程序文件。通过源码安装,用户可以获得最新的应用程序,可以定制更灵活、丰富的功能,而且使软件可以跨越计算机平台,在所有版本的Linux系统中都能使用。但源码安装方式过于复杂,耗时又长,对用户的软件开发能力要求也比较高。

RPM(RedHat Packet Manager)的软件包管理系统:RPM是一种已经编译并封装好的软件包,用户可以直接安装使用。通过RPM,用户可以更加轻松方便地管理系统中的所有软件。RPM软件包只能在使用RPM机制的Linux操作系统中使用,如RHEL、Fdeora、Suse等。在Linux世界中,还有另外一种名为DEB的软件包管理机制,可以在Debian、Ubuntu等系统中使用。相比较而言,还是RPM安装包应用更为广泛,基本已成为Linux系统中软件安装包事实上的标准。
YUM(Yellow dog Updater,Modified)安装:RPM软件包之间存在着复杂的依赖关系。在多数情况下,一个软件都是由多个相互依赖的RPM软件包组成的,而大部分的RPM包又有相互之间的依赖关系。例如,安装A软件需要B软件的支持,而安装B软件又需要C软件的支持,那么在安装A软件之前,必须先安装C软件,再安装B软件,最后才能安装A,有时甚至还可能会出现死循环。YUM安装是一个基于RPM却胜于RPM的软件管理工具,它的最大优点是可以自动解决RPM软件包间的依赖性问题,从而可以更轻松的管理Linux系统中的软件。从RHEL5开始,Red Hat就推荐用yum作为软件安装的首选方式。
可以同时配置多个资源库(Repository) ,简洁的配置文件(/etc/yum.conf) ,自动解决增加或删除rpm包时遇到的倚赖性问题,使用方便,保持与RPM数据库的一致性

RPM

RPM(redhat package manager)软件包是将程序源代码经过编译和封装以后形成的包文件,在软件包里会封装软件的程序、配置文件、帮助手册等组件。yum是目前在RHEL系统中安装软件的首选方式,传统的rpm则主要是用作查询,如查询系统中是否已经安装了某个软件等

144740840.png

RPM软件包的安装与卸载152238727.png

150113407.png

[root@justin Packages]# rpm -ivh --test zsh-4.3.10-5.el6.i686.rpm
warning: zsh-4.3.10-5.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
[root@justin Packages]#

卸载软件建议使用rpm,尽量不使用yum来卸载,因为yum卸载时候会把依赖的包一起卸载可能导致其他软件无法正常使用

[root@localhost ~]# rpm -e --nodeps `rpm -qa|grep java`


软件包信息查看

092123723.png

如:

    查看某个文件时由哪个软件包生成:rpm -qf 文件名

例如查看semanage命令由哪个安装包生成:

[root@Zabbix_server home]# which semanage
/usr/sbin/semanage
[root@Zabbix_server home]# rpm -qf /usr/sbin/semanage 
policycoreutils-python-2.0.83-19.39.el6.i686
[root@Zabbix_server home]#

    查看软件包在系统中生成的所有文件的位置:rpm -ql 软件包名

[root@Zabbix_server home]# rpm -ql policycoreutils-python
/usr/bin/audit2allow
/usr/bin/audit2why
/usr/bin/chcat
/usr/bin/sandbox
/usr/bin/sepolgen-ifgen
/usr/bin/sepolgen-ifgen-attr-helper

    查看软件包配置文件所在位置:rpm -qc 软件包名 

[root@Zabbix_server home]# rpm -qc httpd
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf

    查看软件包的安装信息:rpm -qi

[root@Zabbix_server home]# rpm -qi httpd
Name        : httpd                        Relocations: (not relocatable)
Version     : 2.2.15                            Vendor: CentOS
Release     : 30.el6.centos                 Build Date: Fri 04 Apr 2014 07:55:03 AM CST
Install Date: Wed 23 Jul 2014 06:59:33 AM CST      Build Host: c6b10.bsys.dev.centos.org
Group       : System Environment/Daemons    Source RPM: httpd-2.2.15-30.el6.centos.src.rpm
Size        : 2905719                          License: ASL 2.0
Signature   : RSA/SHA1, Fri 04 Apr 2014 08:04:37 AM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[root@Zabbix_server home]#

    查看软件包安装到哪里:rpm -qpl 软件包名

查看软件是否安装

[root@justin Packages]# rpm -q vsftpd
vsftpd-2.2.2-11.el6.i686
[root@justin Packages]# rpm -qa vsftpd
vsftpd-2.2.2-11.el6.i686
[root@justin Packages]# rpm -e vsftpd
[root@justin Packages]# rpm -q vsftpd
package vsftpd is not installed
[root@justin Packages]# rpm -qa vsftpd
[root@justin Packages]# rpm -qa | wc -l
1104
[root@justin Packages]#

查看已安装软件的信息

094402768.png

查询已经安装的软件包文件列表

095448713.png

如何查看rpm包里有什么内容
rpm -qlp
如何查看rpm包的安装脚本
rpm -qp --scripts
如何查看rpm包的依赖性关系
rpm -qp --requires
如何查看rpm包详细信息
rpm -qi
如何安装rpm包
rpm -ivh
如何更新软件
rpm -Uvh
如何卸载软件
rpm -e
如何在安装过程中指定相对安装路径
rpm -ivh --nodeps --force --root=你指定的路径
如何在安装过程中忽略依赖性关系
rpm -ivh --nodeps --force
如何查看rpm包的更新记录
rpm -qp --changelog
如何重新编译rpm包
rpm -ba spec配置文件


在Linux中安装软件时,会自动分门别类地向相应的目录中复制对应的程序文件,并进行相关设置。在Linux系统中,典型的应用程序通常由以下几部分组成:

文件类型
保存位置
普通执行程序文件
/usr/bin
服务器执行和管理程序文件 /usr/sbin
应用程序配置文件 /etc/
日志文件
/var/log
应用程序文档文件 /usr/share/doc
应用程序帮助手册文件 /usr/share/man

查询文件由哪个程序生成

[root@justin Packages]# rpm -qf /etc/vsftpd/
vsftpd-2.2.2-11.el6.i686
[root@justin Packages]# rpm -qf /etc/passwd
setup-2.8.14-16.el6.noarch
[root@justin Packages]# rpm -qf /usr/share/
filesystem-2.4.30-3.el6.i686
[root@justin Packages]#

说明:当系统中的某个程序文件损坏或丢失时,通过“rpm -qf”的查询结果,可以重新安装相应的软件包

[root@justin Packages]# which touch
/bin/touch
[root@justin Packages]# rpm -qf /bin/touch
coreutils-8.4-19.el6.i686
[root@justin Packages]# rm -rf /bin/touch
[root@justin Packages]# touch file1
-bash: touch: command not found
[root@justin Packages]# rpm -i coreutils-8.4-19.el6.i686.rpm
warning: coreutils-8.4-19.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
    package coreutils-8.4-19.el6.i686 is already installed
[root@justin Packages]# rpm -i coreutils-8.4-19.el6.i686.rpm --force
warning: coreutils-8.4-19.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
[root@justin Packages]# touch file1
touch: 无法创建"file1": 只读文件系统
[root@justin Packages]# init 6
[root@justin Packages]#
Connection closed by foreign host.
Type `help' to learn how to use Xshell prompt.
Xshell:\>
Connecting to 10.15.72.194:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Tue Oct 29 22:34:02 2013 from 10.15.72.73
[root@justin ~]# touch file1
[root@justin ~]#

安装coreutils时候提示已经安装,这时候需要用到参数--force强制重新安装下,重新强制安装成功后使用touch命令会提示无法创建,只读的文件系统,只时候需要重启下系统就可以了

查询软件包配置文件信息

[root@justin Packages]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[root@justin Packages]#



你可能感兴趣的:(rpm,软件包)