所讲内容:

 rpm软件包管理    

 yum安装软件包

源码编译安装软件包

安装srpm软件包

 

一、 rpm软件包管理

1、什么是rpm

rpm是RPM Package Manager(RPM软件包管理器)的缩写,一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用。

2、rpm的主要功能

安装、卸载、升级和管理软件

组件查询功能

验证功能

软件包GPG和MD5数字签名的导入、验证和发布

软件包依赖处理

选择安装

网络远程安装功能

3、rpm命令参数介绍

-e 卸载rpm包

-q 查询已安装的软件信息

-i 安装rpm包

-u 升级rpm包

--replacepkgs 重新安装rpm包

--justdb 升级数据库,不修改文件系统

--percent 在软件包安装时输出百分比

--help 帮助

--version 显示版本信息

-c 显示所有配置文件

-d 显示所有文档文件

-h 显示安装进度

-l 列出软件包中的文件

-a 显示出文件状态

-p 查询/校验一个软件包文件

-v 显示详细的处理信息

--dump 显示基本文件信息

--nomd5 不验证文件的md5支持

--nofiles 不验证软件包中的文件

--nodeps 不验证软件包的依赖关系

--whatrequires 查询/验证需要一个依赖性的软件包

--whatprovides 查询/验证提供一个依赖性的软件包

一般在日常使用时以上参数都是配合使用,以下为一些常用参数

-ivh:安装显示安装进度

-Uvh:升级软件包-

-qpl:列出RPM软件包内的文件信息

-qpi:列出RPM软件包的描述信息

-qf:查找指定文件属于哪个RPM软件包

-Va:校验所有的RPM软件包,查找丢失的文件

-e:删除包

4、rpm使用

4.1初始化rpm数据库

在安装和查询某个包时是需要通过查询rpm数据库来完成的下面两个为rpm数据库初始化命令

[root@localhost ~]# rpm –initdb      ##rpm数据库初始化
[root@localhost ~# rpm –rebuilddb   ##重新构建rpm数据库。这个操作需要时间较长

 

如果rpm无法正常使用可以通过这两个命令来解决

4.2rpm查询功能

命令格式

rpm {-q|--query} [select-options] [query-options]

4.2.1查询系统已经安装的软件

语法:rpm -q 软件名

[root@localhost ~]# rpm -q lrzsz
lrzsz-0.12.20-27.1.el6.x86_64

 

如果输出软件包名称则软件包已安装,输出lrzsz没有安装说明软件包没有安装

4.2.2查询系统所有已经安装的包

语法:rpm –qa

[root@localhost~]# rpm –qa

此命令会把系统所有安装的包都列出来可以配合管道命令过滤出某个软件

4.2.3查询一个已经安装的文件属于哪个软件包

语法:rpm -qf 文件名   ###文件名需要写绝对路径

[root@localhost ~]# rpm -qf /usr/bin/which
which-2.19-6.el6.x86_64

4.2.4查询已安装软件包都安装到何处

语法:rpm -ql 软件名 或 rpm rpmquery -ql 软件名

例:

[root@localhost ~]# rpm -ql which
/etc/profile.d/which2.sh
/usr/bin/which
/usr/share/doc/which-2.19
/usr/share/doc/which-2.19/AUTHORS
/usr/share/doc/which-2.19/COPYING
/usr/share/doc/which-2.19/EXAMPLES
/usr/share/doc/which-2.19/NEWS
/usr/share/doc/which-2.19/README
/usr/share/info/which.info.gz
/usr/share/man/man1/which.1.gz
或
[root@localhost ~]# rpmquery -ql which
/etc/profile.d/which2.sh
/usr/bin/which
/usr/share/doc/which-2.19
/usr/share/doc/which-2.19/AUTHORS
/usr/share/doc/which-2.19/COPYING
/usr/share/doc/which-2.19/EXAMPLES
/usr/share/doc/which-2.19/NEWS
/usr/share/doc/which-2.19/README
/usr/share/info/which.info.gz
/usr/share/man/man1/which.1.gz

4.2.5查询一个已安装软件包的信息

语法rpm -qi 软件名

[root@localhost ~]# rpm -qi which
Name        : which                        Relocations: (not relocatable)
Version     : 2.19                              Vendor: CentOS
Release     : 6.el6                         Build Date: Fri 23 Sep 2011 06:47:56 PM CST
Install Date: Wed 13 May 2015 11:23:39 AM CST      Build Host: c6b18n1.dev.centos.org
Group       : Applications/System           Source RPM: which-2.19-6.el6.src.rpm
Size        : 73004                            License: GPLv3
Signature   : RSA/SHA1, Mon 26 Sep 2011 12:26:13 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.xs4all.nl/~carlo17/which/
Summary     : Displays where a particular program in your path is located
Description :
The which command shows the full pathname of a specified program, if
the specified program is in your PATH.

4.2.6查看一下已安装软件的配置文件

语法rpm -qc 软件名

[root@localhost ~]# rpm -qc ntp
/etc/ntp.conf
/etc/ntp/crypto/pw
/etc/sysconfig/ntpd

4.2.7查看一个已经安装软件的文档安装位置

语法rpm -qd 软件名

[root@localhost ~]# rpm -qd ntp
/usr/share/doc/ntp-4.2.6p5/COPYRIGHT
/usr/share/doc/ntp-4.2.6p5/ChangeLog
/usr/share/doc/ntp-4.2.6p5/NEWS
/usr/share/man/man5/ntp.conf.5.gz
/usr/share/man/man5/ntp_acc.5.gz
/usr/share/man/man5/ntp_auth.5.gz
/usr/share/man/man5/ntp_clock.5.gz
/usr/share/man/man5/ntp_decode.5.gz
/usr/share/man/man5/ntp_misc.5.gz
/usr/share/man/man5/ntp_mon.5.gz
/usr/share/man/man8/ntp-keygen.8.gz
/usr/share/man/man8/ntpd.8.gz
/usr/share/man/man8/ntpdc.8.gz
/usr/share/man/man8/ntpq.8.gz
/usr/share/man/man8/ntpstat.8.gz
/usr/share/man/man8/ntptime.8.gz
/usr/share/man/man8/tickadj.8.gz

4.2.8查看一下已安装软件所依赖的软件包及文件

语法rpm -qR 软件名

[root@localhost ~]# rpm -qR ntp
/bin/bash  
/bin/sh  
/bin/sh  
/bin/sh  
/sbin/chkconfig  
/sbin/chkconfig  
/sbin/service  
/sbin/service  
config(ntp) = 4.2.6p5-1.el6.centos
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.11)(64bit)  
libc.so.6(GLIBC_2.12)(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libc.so.6(GLIBC_2.7)(64bit)  
libcap.so.2()(64bit)  
libcrypto.so.10()(64bit)  
libcrypto.so.10(OPENSSL_1.0.1)(64bit)  
libcrypto.so.10(libcrypto.so.10)(64bit)  
libedit.so.0()(64bit)  
libm.so.6()(64bit)  
libm.so.6(GLIBC_2.2.5)(64bit)  
librt.so.1()(64bit)  
librt.so.1(GLIBC_2.2.5)(64bit)  
ntpdate = 4.2.6p5-1.el6.centos
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1

以上对已安装软件的查询下面介绍对未安装软件包的查询

 

4.2.9查看一个软件包的用途、版本等信息

语法rpm -qpi file.rpm

[root@localhost Packages]# rpm -qpi zlib-1.2.3-29.el6.x86_64.rpm 
Name        : zlib                         Relocations: (not relocatable)
Version     : 1.2.3                             Vendor: CentOS
Release     : 29.el6                        Build Date: Fri 22 Feb 2013 07:02:17 AM CST
Install Date: (not installed)               Build Host: c6b9.bsys.dev.centos.org
Group       : System Environment/Libraries   Source RPM: zlib-1.2.3-29.el6.src.rpm
Size        : 152305                           License: zlib and Boost
Signature   : RSA/SHA1, Sun 24 Feb 2013 01:41:52 AM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.gzip.org/zlib/
Summary     : The zlib compression and decompression library
Description :
Zlib is a general-purpose, patent-free, lossless data compression
library which is used by many different programs.

4.2.10查看一件软件包所包含的文件

语法:rpm -qpl file.rpm

[root@localhost Packages]# rpm -qpl zlib-1.2.3-29.el6.x86_64.rpm 
/lib64/libz.so.1
/lib64/libz.so.1.2.3
/usr/share/doc/zlib-1.2.3
/usr/share/doc/zlib-1.2.3/ChangeLog
/usr/share/doc/zlib-1.2.3/FAQ
/usr/share/doc/zlib-1.2.3/README

4.2.11查看软件包的文档所在的位置

语法rpm -qpd file.rpm

例:

[root@localhost Packages]# rpm -qpd zlib-1.2.3-29.el6.x86_64.rpm 
/usr/share/doc/zlib-1.2.3/ChangeLog
/usr/share/doc/zlib-1.2.3/FAQ
/usr/share/doc/zlib-1.2.3/README

4.2.12查看一个软件包的配置文件

语法rpm -qpc file.rpm

[root@localhost Packages]# rpm -qpc httpd-2.2.15-29.el6.centos.x86_64.rpm 
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd
/var/www/error/HTTP_BAD_GATEWAY.html.var
/var/www/error/HTTP_BAD_REQUEST.html.var
/var/www/error/HTTP_FORBIDDEN.html.var
/var/www/error/HTTP_GONE.html.var
/var/www/error/HTTP_INTERNAL_SERVER_ERROR.html.var
/var/www/error/HTTP_LENGTH_REQUIRED.html.var
/var/www/error/HTTP_METHOD_NOT_ALLOWED.html.var
/var/www/error/HTTP_NOT_FOUND.html.var
/var/www/error/HTTP_NOT_IMPLEMENTED.html.var
/var/www/error/HTTP_PRECONDITION_FAILED.html.var
/var/www/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
/var/www/error/HTTP_REQUEST_TIME_OUT.html.var
/var/www/error/HTTP_REQUEST_URI_TOO_LARGE.html.var
/var/www/error/HTTP_SERVICE_UNAVAILABLE.html.var
/var/www/error/HTTP_UNAUTHORIZED.html.var
/var/www/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
/var/www/error/HTTP_VARIANT_ALSO_VARIES.html.var
/var/www/error/contact.html.var
/var/www/error/include/bottom.html
/var/www/error/include/spacer.html
/var/www/error/include/top.html

4.2.13查看一个软件包的依赖关系

语法rpm -qpR file.rpm

[root@localhost Packages]# rpm -qpR httpd-2.2.15-29.el6.centos.x86_64.rpm 
/bin/bash  
/bin/sh  
/bin/sh  
/bin/sh  
/bin/sh  
/bin/sh  
/etc/mime.types  
/usr/sbin/useradd  
apr-util-ldap  
chkconfig  
config(httpd) = 2.2.15-29.el6.centos
httpd-tools = 2.2.15-29.el6.centos
initscripts >= 8.36
libapr-1.so.0()(64bit)  
libaprutil-1.so.0()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libcrypt.so.1()(64bit)  
libdb-4.7.so()(64bit)  
libexpat.so.1()(64bit)  
liblber-2.4.so.2()(64bit)  
libldap-2.4.so.2()(64bit)  
libm.so.6()(64bit)  
libpcre.so.0()(64bit)  
libpthread.so.0()(64bit)  
libpthread.so.0(GLIBC_2.2.5)(64bit)  
libselinux.so.1()(64bit)  
libz.so.1()(64bit)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedDependencies) <= 3.0.3-1
rtld(GNU_HASH)  
system-logos >= 7.92.1-1
rpmlib(PayloadIsXz) <= 5.2-1

 

5软件包的安装、升级、删除等

5.1安装一个rpm 包

语法rpm -vih file.rpm    ##安装过程中,如果有依赖包,则会提示需要先安装依赖包

[root@localhost Packages]# rpm -ivh httpd-2.2.15-29.el6.centos.x86_64.rpm
error: Failed dependencies:
apr-util-ldap is needed by httpd-2.2.15-29.el6.centos.x86_64
httpd-tools = 2.2.15-29.el6.centos is needed by httpd-2.2.15-29.el6.centos.x86_64

如果想强制安装http包不考虑依赖关系则可以使用以下方式

[root@localhost Packages]# rpm -ivh httpd-2.2.15-29.el6.centos.x86_64.rpm --nodeps --force
Preparing...                ########################################### [100%]
   1:httpd                  ########################################### [100%]
这样安装的软件有可能不可用或出现其他问题,不建议加—nodeps(不检查依赖关系)和—force(强制)参数

5.2升级一个rpm包

语法rpm -Uvh file.rpm    ##升级时有些软件也需要依赖包

[root@localhost Packages]# rpm -Uvh httpd-2.2.15-29.el6.centos.x86_64.rpm 
error: Failed dependencies:
apr-util-ldap is needed by httpd-2.2.15-29.el6.centos.x86_64
httpd-tools = 2.2.15-29.el6.centos is needed by httpd-2.2.15-29.el6.centos.x86_64

5.3删除一个rpm 包

语法rpm –e软件包名    ##卸载某些软件时会提示先卸载依赖包,这时可以增加force参数来强制卸载

[root@localhost Packages]# rpm -e httpd

5.4下面介绍一些在安装中不常使用的参数仅供参考在实际中用到比较少

--replacepkgs 参数是以已安装的软件再安装一次

--test 参数用来检查依赖关系并不是真正的安装

--oldpackage 参数由新版本降级为旧版本

 -relocate 参数为软件包指定安装目录

6、导入签名

有些安装包在安装时会出现nokey提示,这时因为安装包没有签名导致

语法rpm --import 签名文件

[root@localhost ~]# rpm --import RPM-GPG-KEY

[root@localhost ~]# rpm --import RPM-GPG-KEY-fedora

还有其他的一些参数介绍请详见man rpm

 

二、 yum管理软件包

1、 什么是yum

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

2、 yum源分类

本地yum源:使用光盘或光盘镜像,速度快,稳定,推荐使用

网络yum源:软件包全,较本地源软件包版本新,速度比较慢

3、 配置本地yum源

[root@xuegod63 Packages]# cd /etc/yum.repos.d/
[root@xuegod63 yum.repos.d]# cp rhel-source.repo rhel-source.repo.back   ##备份源文件
[root@xuegod63 yum.repos.d]# mount /dev/cdrom  /mnt/    ##挂载光盘
[root@xuegod63 yum.repos.d]# cat rhel-source.repo
[rhel-source]    ##用于区分不同的软件包库,此项唯一
name=Red Hat Enterprise Linux $releasever - $basearch – Source  ##关于此软件包库的描述
baseurl=file:///mnt/   ##源存放目录
enabled=1    ##是否开启,1为开启,0为关闭
gpgcheck=0   ##是否检查签名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release   ##签名地址

4、 配置网络yum源

新安装的操作系统,在/etc/yum.repos.d/目录下已经配置好了yum源,在服务器联网的情况下,可用直接使用yum安装常用软件,不需要另外设置。

但是某些特殊的软件包不在网络yum源的目录下使用服务器自带的yum源无法安装,同时,考虑到下载速度等原因,这时就需要安装其他yum源

这里我们用163的yum源来举例:

[root@xuegod63 Packages]# cd /etc/yum.repos.d/
[root@xuegod63 yum.repos.d]# cp rhel-source.repo rhel-source.repo.back
[root@xuegod63 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@xuegod63 yum.repos.d]#yum makecache  ##更新缓存中的yum配置,使新加入进来的yum源生效

5、 yum使用

5.1安装单个或多个包

语法yum install软件名1 软件名2 …. [-y]  ##安装时可以加上-y参数下载后直接安装如果没有-y参数则会先把软件包下载下来根据输入结果判断是否安装

[root@xuegod63 ~]#yum install httpd –y   ##安装单个包
或
[root@xuegod63 ~]#yum install httpd vsftpd –y   ##安装多个包

5.2安装一组软件包

语法:yum groupinstall 组名 [-y]

[root@xuegod63 ~]#yum groupinstall "Development tools" –y

5.3 删除软件

语法yum remove 软件名 [-y]

[root@xuegod63 ~]#yum remove httpd -y

5.4其他参数介绍

yum clean all  #清除yum缓存
yum list        #显示所有已经安装和可以安装的程序包
yum list httpd        #通过list中查找httpd
yum search zsh   #通过zsh关键字查找
yum provides  httpd   #查看httpd包详细信息
yum makecache    #更新缓存中的yum配置

5.5将缓存中下载的安装包,保存到本地

使用yum安装的软件包,下载的软件包只会存在缓存中,在安装成功后将会删除缓存中的软件包,那么如何将下载的软件包也在本地上保存一份呢?

[root@xuegod63 ~]#vim /etc/yum.conf      ##编辑yum的配置文件
keepcache=1   ##把这个选项的值设成1

这样,下载时缓存中的软件包就会默认保存到/var/cache/yum目录下,当服务器没有网络连接时也可以使用缓存模式的yum安装软件,只需要在yum后加入-c参数。

例如

[root@xuegod63 ~]#yum –c install httpd   ###在缓存yum模式安装httpd软件

、源码编译安装软件包

前提:系统必须安装:开发工具、开发库。

步骤:

1 获得源码包

2 解压 

3 配置,检测安装环境

#./configure   #检查安装环境是否符合需求 ,如果没有问题,生成:Makefile文件 

4 编译

#make  (编译时会读取Makefile文件)

5 安装

#make install

 

【例】安装软件包extundelete-0.2.4.tar.bz2

[root@xuegod63 ~]# tar jxvf extundelete-0.2.4.tar.bz2   ##解压
[root@xuegod63 extundelete-0.2.4]# ./configure    ##配置
Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library        ##报错,缺少ext2fs库文件
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm   ##安装这个软件包就会安装缺少的库文件
[root@xuegod63 extundelete-0.2.4]# ./configure   ##重新配置
[root@xuegod63 extundelete-0.2.4]#make   ##编译,make clean 清除make后产生的文件
[root@xuegod63 extundelete-0.2.4]#make install   ##安装

 

6 删除已安装的软件

[root@xuegod63 extundelete-0.2.4]# pwd
/root/extundelete-0.2.4
[root@xuegod63 extundelete-0.2.4]# make uninstall   ##删除已安装的软件包

说明:不过多有时删除不干净,所以建议大家安装时,在configure步骤添加一个: --prefix  参数。这样删除或备份时,直接对删除这个目录操作就可以了。

指定安装路径:

[root@xuegod63 extundelete-0.2.4]# ./configure  --prefix=/usr/local/extundelete
[root@xuegod63 extundelete-0.2.4]# make && make install   ##编译成功后安装
cd /usr/local/extundelete/

 

软件安装方法特点:

rpm+yum:方便,软件版本低。稳定性好、管理方便。性能稍差。

手动:麻烦,软件版本新。稳定性稍差、管理稍差。性能好。

四、安装src源码包

1、查看操作系统版本

[root@xuegod63 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.2 (Santiago)
[root@xuegod63 ~]# uname  -m
x86_64

2、编译src源码包

[root@xuegod63 ~]#rpmbuild --rebuild  lrzsz-0.12.20-27.1.el6.src.rpm     #根据将src.rpm中源码文件编译成可执行的二进制文件。若顺利执行成功则会在root用户家目录下生成一个 rpmbuild目录。 

在/root/rpmbuild/RPMS/x86_64/目录下生成lrzsz-0.12.20-27.1.el6.x86_64.rpm这个rpm文件。

3、安装

接下来就是rpm的安装过程。

[root@xuegod63 ~]#rpm -ivh rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el6.x86_64.rpm

 

         学神-IT-教育51cto技术交流群:468845589  快来上我们公开课吧!

                              学神MK老师:1273815479

                              学神ZY老师:3054384936

 

 

 

 

学神IT-1508-立伟提供