3.13 第九章:安装RPM包或源码包

第九章:安装RPM包或源码包

前面多次提到yum命令,它是Red Hat所特有的安装RPM程序包的工具。

一、RPM工具

RPM是以一种数据库记录的方式将我们所需要的套件安装到Linux主机的一套管理程序。也就是说Linux系统中存在着一个关于RPM的数据库,记录了安装的包以及包与包之间的依赖关系。
把光驱挂载到/mnt目录下,要先检查一个VMware右下角的小光驱图标是否点亮,如果没有,点击一下,再点击“连接”就可以点亮它了。

[root@zl_cloud ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载     //光驱是以只读的方式挂载的。
[root@zl_cloud ~]# ls /mnt/
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@zl_cloud ~]# ls /mnt/Packages/ | head     //这些.rpm文件就是RPM包
389-ds-base-1.3.4.0-19.el7.x86_64.rpm
389-ds-base-libs-1.3.4.0-19.el7.x86_64.rpm
abattis-cantarell-fonts-0.0.16-3.el7.noarch.rpm
abrt-2.1.11-36.el7.centos.x86_64.rpm
abrt-addon-ccpp-2.1.11-36.el7.centos.x86_64.rpm
abrt-addon-kerneloops-2.1.11-36.el7.centos.x86_64.rpm
abrt-addon-pstoreoops-2.1.11-36.el7.centos.x86_64.rpm
abrt-addon-python-2.1.11-36.el7.centos.x86_64.rpm
abrt-addon-vmcore-2.1.11-36.el7.centos.x86_64.rpm
abrt-addon-xorg-2.1.11-36.el7.centos.x86_64.rpm
[root@zl_cloud ~]#

1.安装RPM包
格式:rpm -ivh filename。

  • -i:表示安装;
  • -v:表示可视化;
  • -h:表示显示安装进度;
  • --force:表示强制安装,即使覆盖属于其他包的文件也要安装;
  • --nodeps:表示当要安装的RPM包依赖于其他包时,即使其他包没有安装,也要安装这个包。

2.升级RPM包
格式:rpm -Uvh filename,-U选项表示升级。

3.卸载RPM包
格式:rpm -e 【rpm包名,(不需加平台信息和后缀名)】,这里的filename是通过rpm的查询功能所查询到的。

[root@zl_cloud ~]# rpm -qa vim-enhanced    //查看
vim-enhanced-7.4.629-6.el7.x86_64
[root@zl_cloud ~]# rpm -e vim-enhanced     //卸载
[root@zl_cloud ~]# rpm -qa vim-enhanced    //再查看
[root@zl_cloud ~]# 

4.查询一个包是否已安装
格式:rpm -q 【rpm包名,(不需加平台信息和后缀名)】

[root@zl_cloud Packages]# rpm -q libjpeg-turbo-devel
未安装软件包 libjpeg-turbo-devel 
[root@zl_cloud Packages]#

可使用命令rpm -qa查询当前系统所有已安装的RPM包:

[root@zl_cloud Packages]# rpm  -qa
grub2-2.02-0.29.el7.centos.x86_64
centos-release-7-2.1511.el7.centos.2.10.x86_64
audit-2.4.1-5.el7.x86_64
filesystem-3.2-20.el7.x86_64
rdma-7.2_4.1_rc6-1.el7.noarch
kbd-misc-1.15.5-11.el7.noarch
....    //不一一列举了
[root@zl_cloud Packages]#

5.得到一个已安装的RPM包的相关信息
格式:rpm -qi 【rpm包名,(不需加平台信息和后缀名)】

[root@zl_cloud Packages]# rpm -qi audit
Name        : audit
Version     : 2.4.1
Release     : 5.el7
Architecture: x86_64
Install Date: 2020年03月04日 星期三 20时14分25秒
Group       : System Environment/Daemons
Size        : 637425
License     : GPLv2+
Signature   : RSA/SHA256, 2015年03月14日 星期六 15时36分42秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : audit-2.4.1-5.el7.src.rpm
Build Date  : 2015年03月06日 星期五 05时59分11秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://people.redhat.com/sgrubb/audit/
Summary     : User space tools for 2.6 kernel auditing
Description :
The audit package contains the user space utilities for
storing and searching the audit records generate by
the audit subsystem in the Linux 2.6 kernel.
[root@zl_cloud Packages]# 

6.列出一个RPM包的安装文件
格式:rpm -ql 【rpm包名,(不需加平台信息和后缀名)】

[root@zl_cloud Packages]# rpm -ql audit
/etc/audisp
/etc/audisp/audispd.conf
/etc/audisp/plugins.d
/etc/audisp/plugins.d/af_unix.conf
/etc/audisp/plugins.d/syslog.conf
/etc/audit
/etc/audit/auditd.conf
/etc/audit/rules.d
/etc/audit/rules.d/audit.rules
...        //太多了,省略

7.列出某个文件属于哪个RPM包
格式:rpm -qf 【文件的绝对路径】

[root@zl_cloud Packages]# rpm -qf /etc/audisp
audit-2.4.1-5.el7.x86_64
[root@zl_cloud Packages]# 

二、yum工具

yum工具最大的优势在于可以联网去下载所需要的RPM包,然后自己安装。如果要安装的RPM包有依赖关系,yum工具会帮我们依次安装所有相关的RPM包。
1.列出所有可用的RPM包
格式:yum list。

[root@zl_cloud ~]# yum list | head  //太多了我只列10行
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cqu.edu.cn      //mirrors...是在告诉用户它是从这下载到的RPM包资源
 * extras: mirrors.cqu.edu.cn
 * updates: mirrors.cqu.edu.cn
已安装的软件包
NetworkManager.x86_64                1:1.0.6-27.el7             @anaconda
NetworkManager-libnm.x86_64          1:1.0.6-27.el7             @anaconda
NetworkManager-team.x86_64           1:1.0.6-27.el7             @anaconda
NetworkManager-tui.x86_64            1:1.0.6-27.el7             @anaconda

按照下面最后一列的顺序讲解:
//RPM包名 //版本信息 //安装信息
安装信息:①base/anaconda:未安装;
②updates:RPM包已安装但需要升级。

2.搜索RPM包
(1)格式:yum search 【相关关键词】

[root@zl_cloud ~]# yum search vim
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cqu.edu.cn
 * extras: mirrors.cqu.edu.cn
 * updates: mirrors.cqu.edu.cn
=============================== N/S matched: vim ===============================
protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol Buffers
                    : descriptions
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-enhanced.x86_64 : A version of the VIM editor which includes recent
                    : enhancements
vim-filesystem.x86_64 : VIM filesystem layout
vim-minimal.x86_64 : A minimal version of the VIM editor

  名称和简介匹配 only,使用“search all”试试。
[root@zl_cloud ~]# 

(2)格式:yum list | grep ‘vim’

[root@zl_cloud ~]# yum list | grep 'vim'
vim-common.x86_64                           2:7.4.629-6.el7            @base    
vim-enhanced.x86_64                         2:7.4.629-6.el7            @base    
vim-filesystem.x86_64                       2:7.4.629-6.el7            @base    
vim-minimal.x86_64                          2:7.4.160-1.el7            @anaconda
protobuf-vim.x86_64                         2.5.0-8.el7                base     
vim-X11.x86_64                              2:7.4.629-6.el7            base     
vim-minimal.x86_64                          2:7.4.629-6.el7            base     
[root@zl_cloud ~]# 

3.安装RPM包
格式:yum install 【-y】 【RPM包名】。如果不加-y选项,则会以用户交互的方式安装。

[root@zl_cloud ~]# yum install -y protobuf-vim
已加载插件:fastestmirror
base                                                     | 3.6 kB     00:00     
extras                                                   | 2.9 kB     00:00     
updates                                                  | 2.9 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.cqu.edu.cn
 * updates: mirrors.aliyun.com
正在解决依赖关系
...    //内容太多了不复制完全了

4.卸载RPM包
格式:yum remove 【-y】 【RPM包名】

[root@zl_cloud ~]# yum remove protobuf-vim
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 protobuf-vim.x86_64.0.2.5.0-8.el7 将被 删除
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package              架构           版本                   源             大小
================================================================================
正在删除:
 protobuf-vim         x86_64         2.5.0-8.el7            @base         3.7 k

事务概要
================================================================================
移除  1 软件包

安装大小:3.7 k
是否继续?[y/N]:y     //前面命令不加y的话他就会在这询问是否继续(用户交互)
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在删除    : protobuf-vim-2.5.0-8.el7.x86_64                             1/1 
  验证中      : protobuf-vim-2.5.0-8.el7.x86_64                             1/1 

删除:
  protobuf-vim.x86_64 0:2.5.0-8.el7                                             

完毕!
[root@zl_cloud ~]# 

卸载时最好不要加-y选项,以免把其他重要的RPM包一起卸载了,影响到正常业务。

5.升级RPM包
格式:yum update 【-y】 【RPM包】

[root@zl_cloud ~]# yum update bash
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cqu.edu.cn
 * extras: mirrors.cqu.edu.cn
 * updates: mirrors.cqu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 bash.x86_64.0.4.2.46-19.el7 将被 升级
---> 软件包 bash.x86_64.0.4.2.46-33.el7 将被 更新
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package        架构             版本                      源              大小
================================================================================
正在更新:
 bash           x86_64           4.2.46-33.el7             base           1.0 M

事务概要
================================================================================
升级  1 软件包

总下载量:1.0 M
Is this ok [y/d/N]: y    //如果输入错了,可按Ctrl+u清空
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
bash-4.2.46-33.el7.x86_64.rpm                              | 1.0 MB   00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : bash-4.2.46-33.el7.x86_64                                   1/2 
  清理        : bash-4.2.46-19.el7.x86_64                                   2/2 
  验证中      : bash-4.2.46-33.el7.x86_64                                   1/2 
  验证中      : bash-4.2.46-19.el7.x86_64                                   2/2 

更新完毕:
  bash.x86_64 0:4.2.46-33.el7                                                   

完毕!
[root@zl_cloud ~]# 

6.使用本地光盘制作yum源
有时候Linux系统不能联网,这时就不能使用联网的yum源了,这时就需要我们自己在Linux系统下使用光盘制作yum源。
(1)挂载光盘

[root@zl_cloud ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@zl_cloud ~]# 

(2)删除/etc/yum.repos.d目录下所有repo文件(删除前最好做一个备份)

[root@zl_cloud ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d_bak
[root@zl_cloud ~]# rm -rf /etc/yum.repos.d/*
[root@zl_cloud ~]# 

(3)创建新文件dvd.repo

[root@zl_cloud ~]# vi /etc/yum.repos.d/dvd.repo 
[root@zl_cloud ~]# cat /etc/yum.repos.d/dvd.repo 
[dvd]
name=install dvd
baseurl=file:///mnt
enabled=1
gpgcheck=0

(4)刷新repos生成缓存

[root@zl_cloud ~]# yum makecache
已加载插件:fastestmirror
dvd                                                      | 3.6 kB     00:00     
(1/4): dvd/group_gz                                        | 155 kB   00:00     
(2/4): dvd/primary_db                                      | 2.8 MB   00:00     
(3/4): dvd/filelists_db                                    | 2.9 MB   00:00     
(4/4): dvd/other_db                                        | 1.2 MB   00:00     
Loading mirror speeds from cached hostfile
元数据缓存已建立
[root@zl_cloud ~]# 

然后就可以使用yum命令安装你所需要的软件包了:

[root@zl_cloud ~]# yum install -y tftp
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 tftp.x86_64.0.5.2-12.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决
...     //省略

7.利用yum工具下载RPM包
先恢复之前的yum源,否则后续使用yum还会出问题:

[root@zl_cloud ~]# rm -rf /etc/yum.repos.d
[root@zl_cloud ~]# mv /etc/yum.repos.d_bak /etc/yum.repos.d
[root@zl_cloud ~]# yum list

有时我们需要下载RPM包但不安装,仅仅时复制给其他机器使用,那么使用yum工具就可做到:
格式:#yum install -y 【包名】 --downloadonly

虽然下载了RPM包,但并没有保存到我们预想的目录下,默认在/var/cache/yum/x86_64/7/xxx/packages。(xxx指的是base、update、extras…)如果想保存到指定目录下:
格式:# yum install -y 【包名】 --downloadonly --downloaddir=/usr/local/src

如果包已经安装过了,那么yum install --downloadonly 就不起作用了,会提示已经安装过,那么:
#yum reinstall -y bash --downloadonly

三、安装源码包

安装源码包,需要我们把源代码编译成可执行的二进制文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包除了可以自定义修改源代码外,还可以定制相关的功能,因为源码包在编译时可以附加额外的选项。
源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,因为C语言为Linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言编译成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。
安装一个源码包,通常需要三个步骤:

  • (1)./configure
    这一步可以定制功能,加上相应的选项即可,具体有什么选项可以通过 ./configure --help 命令来查看。这一步会自动检测你的Linux系统与相关的套件是否有编译该源码包时需要的库,因为一旦缺少某个库,就不能完成编译。只有检测通过后才会生成一个Makefile文件。
  • (2) make
    使用这个命令会根据Makefile文件中预设的参数进行编译,这一步其实就是gcc在工作了。
  • (3) make install
    安装步骤,生成相关的软件存放目录和配置文件的过程。

对于以上这3步骤,并不是所有的源码包软件都一样的,也就是说源码包的安装并没有标准安装步骤。这就需要你拿到源码包解压后,进入到目录找相关的帮助文档(通常会以INSTALL或者README为文件名)。下面编译安装一个源码包来帮你更深刻的去理解如何安装源码包。

1.下载源码包

[root@zl_cloud ~]# cd /usr/local/src/      //一般下载源码都是下载到这里
[root@zl_cloud src]# wget http://mirros.cnnic.cn/apache/httpd/httpd-2.2.32.tar.gz
-bash: wget: 未找到命令
[root@zl_cloud src]# yum install -y wget    //没有那个命令就安装
[root@zl_cloud src]# wget http://mirros.cnnic.cn/apache/httpd/httpd-2.2.32.tar.gz
[root@zl_cloud src]# ll
总用量 7364
-rw-r--r--. 1 root root 7537230 9月   2 2014 httpd-2.2.29.tar.gz
[root@zl_cloud src]# 

2.解压源码包

[root@zl_cloud src]# tar -zxvf httpd-2.2.29.tar.gz 

3.配置相关的选项并生成Makefile

[root@zl_cloud src]# cd httpd-2.2.29
[root@zl_cloud httpd-2.2.29]# ./configure --help | less  //查看可配置的参数
`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/apache2]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]
...   //省略

常用的配饰选项是–prefix=PREFIX ,意思是定义软件包的安装路径:

[root@zl_cloud httpd-2.2.29]# yum install -y gcc    //要先安装gcc编译器,没安装的话下面的命令会报错。
[root@zl_cloud httpd-2.2.29]# ./configure --prefix=/usr/local/apache2
[root@zl_cloud httpd-2.2.29]# echo $?      //验证是否成功
0											//0为成功
[root@zl_cloud httpd-2.2.29]# ls -l Makefile
-rw-r--r--. 1 root root 8954 3月   8 06:44 Makefile
[root@zl_cloud httpd-2.2.29]#    

4.进行编译

[root@zl_cloud httpd-2.2.29]# make   //编译
[root@zl_cloud httpd-2.2.29]# echo $?      //验证是否成功
0											//0为成功

5.安装
命令:make install

[root@zl_cloud httpd-2.2.29]# make install
[root@zl_cloud httpd-2.2.29]# echo $?      //验证是否成功
0											//0为成功

执行完后会发现在/usr/local/apache2目录下增加很多目录

[root@zl_cloud httpd-2.2.29]# ls /usr/local/apache2/   
bin    cgi-bin  error   icons    lib   man     modules
build  conf     htdocs  include  logs  manual
[root@zl_cloud httpd-2.2.29]# 

猜你喜欢

转载自blog.csdn.net/zhang_ZERO/article/details/104840322