运维开发网

安装RPM包或源码包

运维开发网 https://www.qedev.com 2021-04-25 14:24 出处:51CTO 作者:80民工
在Windows系统下安装软件很简单,双击后缀为.exe的文件不停下一步即可,但在Linux系统下面并不是那么简单。Linux系统有三种安装软件的方式:RPM工具、yum工具、安装源码包。7.1 RPM工具RPM是Red Hat Package Manager的缩写,由Red Hat公司开发。Linux系统中存在着一个关于RPM的数据库,记录着安装的包以及包与包之间的依赖关系,RPM包是预...

在Windows系统下安装软件很简单,双击后缀为.exe的文件不停下一步即可,但在linux系统下面并不是那么简单。

linux系统有三种安装软件的方式:RPM工具、yum工具、安装源码包。


7.1 RPM工具

RPM是Red Hat Package Manager的缩写,由Red Hat公司开发。linux系统中存在着一个关于RPM的数据库,记录着安装的包以及包与包之间的依赖关系,RPM包是预先在Linux机器上编译并打包的文件。

每个RPM包的名称都由.- 分成了若干部分,RPM包格式:包名、版本信息、发布版本号、运行平台。

常见的运行平台有:32位:i386、i586、i686;64位:x86_64

CentOS7不区分32位和64位,全部为64位。


安装RPM包

  • 安装RPM包:rpm -ivh filename,其中 -i 选项表示安装
# mount /dev/cdrom /mntmount: /dev/sr0 写保护,将以只读方式挂载# ls /mnt/CentOS_BuildTag  EULA  images    LiveOS    repodata                RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isoLinux  **Packages**  RPM-GPG-KEY-CentOS-7  TRANS.TBL# cd /mnt/Packages/# rpm -ivh libjpeg-turbo-1.2.90-5.el7.x86_64.rpm准备中...                          ################################# [100%]正在升级/安装...
1:libjpeg-turbo-1.2.90-5.el7       ################################# [100%]

在安装RPM包之前,需要挂载光驱(光驱是以只读方式挂载的)到 /mnt。当挂载光驱后,会在 /mnt/Packages目录下看到很多后缀为 .rpm的文件,即RPM包。

  • 参数:
-i		表示安装

-v		表示可视化

-h		表示显示安装进度

--force		表示强制安装,即使覆盖属于其他包的文件也要安装

--nodeps	表示当要安装的RPM包依赖于其他包时,即使其他包没有安装,也要安装这个包


升级RPM包

  • 升级RPM包:rpm -Uvh filename,其中 -U 选项表示升级
# rpm -Uvh vim准备中...                          ################################# [100%]软件包 vim-minimal-2:7.4.160-4.el7.x86_64 (比vim-minimal-2:7.4.160-2.el7.x86_64 还要新) 已经安装


卸载RPM包

  • 卸载RPM包:rpm -e filename,其中 -e 选项表示卸载(这里的包名不需要带平台信息和后缀名)
# rpm -e libjpeg-turbo# rpm -ivh libjpeg-turbo准备中...                          ################################# [100%]正在升级/安装...1:libjpeg-turbo-1.2.90-5.el7  ################################# [100%]


查询一个包是否安装

  • 查询一个RPM包rpm -q filename
# rpm -q libjpeg-turbo未安装软件包 libjpeg-turbo# rpm -ivh libjpeg-turbo*准备中...                          ################################# [100%]正在升级/安装...
   1:libjpeg-turbo-1.2.90-5.el7       ################################# [100%]
   # rpm -q libjpeg-turbolibjpeg-turbo-1.2.90-5.el7.x86_64

  • 查询当前系统所有已安装的RPM包:rpm -qa filename
# rpm -qa |tailperl-Time-Local-1.2300-2.el7.noarch
fxload-2002_04_11-16.el7.x86_64
perl-PathTools-3.40-5.el7.x86_64
perl-threads-shared-1.43-6.el7.x86_64
dmidecode-3.0-5.el7.x86_64
perl-Getopt-Long-2.40-3.el7.noarch
kbd-legacy-1.15.5-13.el7.noarch
gpm-libs-1.20.7-5.el7.x86_64
unzip-6.0-19.el7.x86_64
cpp-4.8.5-28.el7_5.1.x86_64


查询一个已安装的RPM包的相关信息

  • 查询一个已安装的RPM包的相关信息:rpm -qi filename
# rpm -qi libjpeg-turboName        : libjpeg-turbo
Version     : 1.2.90
Release     : 5.el7
Architecture: x86_64
Install Date: 2018年05月27日 星期日 20时49分17秒
Group       : System Environment/Libraries
Size        : 350387
License     : IJG
Signature   : RSA/SHA256, 2014年07月04日 星期五 10时55分27秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : libjpeg-turbo-1.2.90-5.el7.src.rpm
Build Date  : 2014年06月10日 星期二 11时48分52秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)Packager    : CentOS BuildSystem <http://bugs.centos.org>Vendor      : CentOS
URL         : http://sourceforge.net/projects/libjpeg-turbo
Summary     : A MMX/SSE2 accelerated library for manipulating JPEG image files
Description :The libjpeg-turbo package contains a library of functions for manipulating
JPEG images.


查询一个RPM包的安装文件

  • 查询一个RPM包的安装文件:rpm -ql filename
# rpm -ql libjpeg-turbo/usr/lib64/libjpeg.so.62
/usr/lib64/libjpeg.so.62.1.0
/usr/share/doc/libjpeg-turbo-1.2.90
/usr/share/doc/libjpeg-turbo-1.2.90/ChangeLog.txt
/usr/share/doc/libjpeg-turbo-1.2.90/README
/usr/share/doc/libjpeg-turbo-1.2.90/README-turbo.txt
/usr/share/doc/libjpeg-turbo-1.2.90/change.log


查询某个文件属于哪个RPM包

  • 查询某个文件属于哪个RPM包:rpm -qf filename(使用绝对路径)
# rpm -qf /usr/lib64/libjpeg.so.62.1.0libjpeg-turbo-1.2.90-5.el7.x86_64# rpm -qf `which cd`bash-4.2.46-30.el7.x86_64

上面which cd使用了反引号,可以直接表示cd命令的绝对路径,反引号可以直接引用反引号里面命令的结果


7.2 yum工具

yum工具比RPM工具使用方便,因为yum工具可以联网去下载所需要的RPM包,然后自动安装,即使要安装的RPM包有依赖关系也会自动依次安装所有相关的RPM包。


列出所有可用的RPM包

  • 列出所有可用的RPM包:yum list
# yum list |head -n 10已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
\* base: mirrors.cn99.com
\* epel: mirrors.ustc.edu.cn
\* extras: mirrors.cn99.com
\* updates: mirrors.cn99.com
已安装的软件包
GeoIP.x86_64                              1.5.0-11.el7                   **@anaconda**
NetworkManager.x86_64                     1:1.10.2-13.el7                **@base**
NetworkManager-libnm.x86_64               1:1.10.2-13.el7                **@base**
**由于管道被破坏而退出**  

# yum list |tailzulucrypt-doc.noarch                      5.0.1-1.el7                    **epel**
zulucrypt-libs.x86_64                     5.0.1-1.el7                    **epel**
zvbi.x86_64                               0.2.35-1.el7                   **epel**
zvbi-devel.x86_64                         0.2.35-1.el7                   **epel**
zvbi-fonts.noarch                         0.2.35-1.el7                   **epel**
zziplib.i686                              0.13.62-5.el7                  **base**
zziplib.x86_64                            0.13.62-5.el7                  **base**
zziplib-devel.i686                        0.13.62-5.el7                  **base**
zziplib-devel.x86_64                      0.13.62-5.el7                  **base**
zziplib-utils.x86_64                      0.13.62-5.el7                  **base**

可以看到,似乎yum list管道和head组合有bug,而和tail组合则没有问题。

同时,上面显示结果中最左侧为RPM包名,中间是版本信息,最右侧是安装信息。

如果已安装,最右侧则显示@base、@updates、@anaconda,前面都有一个@符号;

如果未安装,则显示base、anaconda或epel;

如果已安装但需要升级,则显示updates。


搜索RPM包

  • 搜索RPM包:yum search 关键词
# yum search vim已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 \* base: mirrors.cn99.com
 \* epel: mirrors.tuna.tsinghua.edu.cn
 \* extras: mirrors.cn99.com
 \* updates: mirrors.cn99.com=========================================== N/S matched: vim ===========================================beakerlib-vim-syntax.noarch : Files for syntax highlighting BeakerLib tests in VIM editor
fluxbox-vim-syntax.noarch : Fluxbox syntax scripts for vim  
neovim.x86_64 : Vim-fork focused on extensibility and agility  
protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol Buffers descriptions  
python2-neovim.noarch : Python client to Neovim  
python34-neovim.noarch : Python client to Neovim
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

也可以搜索:yum list |grep 'vim'

# yum list |grep 'vim'vim-common.x86_64                         2:7.4.160-4.el7                @base
vim-enhanced.x86_64                       2:7.4.160-4.el7                @base
vim-filesystem.x86_64                     2:7.4.160-4.el7                @base
vim-minimal.x86_64                        2:7.4.160-4.el7                @base
beakerlib-vim-syntax.noarch               1.17-13.el7                    epel
fluxbox-vim-syntax.noarch                 1.3.7-1.el7                    epel
neovim.x86_64                             0.2.0-2.el7                    epel
protobuf-vim.x86_64                       2.5.0-8.el7                    base
python2-neovim.noarch                     0.1.13-3.el7                   epel
python34-neovim.noarch                    0.1.13-3.el7                   epel
vim-X11.x86_64                            2:7.4.160-4.el7                base
vim-fugitive.noarch                       2.2-8.el7                      epel
vim-go.x86_64                             1.8-3.el7                      epel
vim-gtk-syntax.noarch                     20130716-1.el7                 epel
vim-halibut.noarch                        1.2-1.el7                      epel
vim-jellybeans.noarch                     1.6-1.el7                      epel
vim-toml.noarch                           0-0.1.20180306git624f024.el7   epel
vim-vimoutliner.noarch                    0.4.0-8.el7                    epel
xtuple-csvimp.x86_64                      0.5.4-8.el7                    epel
xtuple-csvimp-devel.x86_64                0.5.4-8.el7                    epel

这个显示结果比上面一条命令更加清晰,也会高亮显示相关关键词。


安装RPM包

  • 安装RPM包:yun install -y filename (如果不加 -y 选项,则会以与用户交互的方式安装)
# yum install -y protobuf-vim已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                        | 6.4 kB  00:00:00
 \* base: mirrors.cn99.com
 \* epel: mirrors.ustc.edu.cn
 \* extras: mirrors.cn99.com
 \* updates: mirrors.cn99.com
base    | 3.6 kB  00:00:00
extras  | 3.4 kB  00:00:00
updates | 3.4 kB  00:00:00
正在解决依赖关系
--> 正在检查事务
---> 软件包 protobuf-vim.x86_64.0.2.5.0-8.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
 Package                     架构                  版本                       源                   大小
正在安装:
 protobuf-vim                x86_64                2.5.0-8.el7                base                8.7 k
事务概要
安装  1 软件包
总下载量:8.7 k
安装大小:3.7 k
Downloading packages:
protobuf-vim-2.5.0-8.el7.x86_64.rpm                                              | 8.7 kB  00:00:00
Running transaction check
Running transaction testTransaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
  正在安装    : 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
完毕!


卸载RPM包

  • 卸载RPM包:yum remove -y filename(如果不加 -y 选项,则会以与用户交互的方式卸载)
# 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
Downloading packages:
Running transaction check
Running transaction testTransaction 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
  完毕!

使用yum卸载时需要注意,不要连其他关联的重要的RPM包也一起卸载了,这样会影响正常。


升级RPM包

  • 升级RPM包:yum update -y filename(如果不加 -y选项,则会以与用户交互的方式升级;如果不加RPM包名,则会更新所有需要更新的RPM包)
# yum update python-perf已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 \* base: mirrors.163.com
 \* epel: mirrors.ustc.edu.cn
 \* extras: mirrors.163.com
 \* updates: mirrors.163.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 python-perf.x86_64.0.3.10.0-862.2.3.el7 将被 升级
---> 软件包 python-perf.x86_64.0.3.10.0-862.3.2.el7 将被 更新
--> 解决依赖关系完成
依赖关系解决
 Package                   架构                 版本                               源                     大小
正在更新:  
 python-perf               x86_64               3.10.0-862.3.2.el7                 updates               6.2 M
事务概要
升级  1 软件包
总下载量:6.2 M
Is this ok [y/d/N]: y
Downloading packages:  
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
python-perf-3.10.0-862.3.2.el7.x86_64.rpm                                               | 6.2 MB  00:00:01    
Running transaction check
Running transaction testTransaction test succeeded
Running transaction
  正在更新    : python-perf-3.10.0-862.3.2.el7.x86_64                                                      1/2
  清理        : python-perf-3.10.0-862.2.3.el7.x86_64                                                      2/2 
  验证中      : python-perf-3.10.0-862.3.2.el7.x86_64                                                      1/2 
  验证中      : python-perf-3.10.0-862.2.3.el7.x86_64                                                      2/2
更新完毕:
  python-perf.x86_64 0:3.10.0-862.3.2.el7
完毕!

交互选项y/d/Nd表示download only,仅下载不安装。

另外:

yum grouplist 列出所有可用的组(环境分组、可用组)

yum groupinstall -y ‘可用组名’ 安装可用组

yum provides ‘/*/RPM包名’ 通配搜索未安装的包名


使用本地光盘制作yum源

  • 挂载光盘:
# mount /dev/cdrom /mntmount: /dev/sr0 写保护,将以只读方式挂载

  • 删除/etc/yum.repos.d目录下的所有的repo文件(删除之前,做一个备份):
# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak# rm -rf /rtc/yum.repos.d/*

  • 创建新文件dvd.repo
# vim /etc/yum.repos.d/dvd.repo				#加入以下内容[dvd]  name=install dvd  
baseurl=file:///mnt  
enable=1  
gpgcheck=0

  1. 刷新repos生成缓存:
# yum cache或者# yum clean all

  • 查看是否为本地yum源:
# yum list |tailscap-security-guide.noarch             0.1.33-5.el7.centos             dvd
screen.x86_64                          4.1.0-0.23.20120314git3c2946.el7_2
                                                                       dvd
sgpio.x86_64                           1.2.0.10-13.el7                 dvd
shim-x64.x86_64                        12-1.el7.centos                 dvd
startup-notification.x86_64            0.12-8.el7                      dvd
trousers.x86_64                        0.3.14-2.el7                    dvd
xcb-util.x86_64                        0.4.0-2.el7                     dvd
xml-common.noarch                      0.6.3-39.el7                    dvd
xulrunner.x86_64                       31.6.0-2.el7.centos             dvd

可以看到,显示RPM包的源均为dvd,本地yum源制作完成。

另外:使用Nginx搭建一个局域网http的yum源


利用yum工具下载RPM包

  • 先恢复之前的yum源:
# rm -rf /etc/yum.repos.d# mv /etc/yum.repos.d_bak /etc/yum.repos.d# yum list

  • 下载RPM包而不安装:
# yum install -y 包名 --downloadonly

这里默认下载到 /var/cache/yum/x86_64/7/xxx/packages ,这里xxx指的是base、updatex或extras,它与yum list最右侧的字符串是一致的。

也可以这样下载,默认下载到当前目录:

# yumdownloader 包名

如果需要下载的包已经安装,可以这样:

# yum reinstall -y 包名 --downloadonly


7.3 安装源码包

Linux下,安装源码包是比较常见的,安装源码包,需要我们把源代码编译成可执行的二进制文件。如果机器上没有安装C语言编译器gcc,就无法编译代码,可以使用命令yum install -y gcc来安装。

安装源码包通常需要3个步骤:

  1. ./configure 这一步定制功能,加上相应选项即可;
  2. make 该命令会根据Makefile文件中预设的参数进行编译(gcc在工作);
  3. make install 安装步骤,用于创建相关软件的存放目录和配置文件。

下载源码包

下载源码包要到官方网站,且尽量下载到专门存放软件文件的目录下,如/software目录。

# yum install -y wget				#安装wget# cd /usr/local/src# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz--2018-05-29 19:39:12--  http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz
正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|101.6.8.193|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:9076901 (8.7M) [application/octet-stream]正在保存至: “httpd-2.4.33.tar.gz”
100%[=========================================================================>] 9,076,901   5.24MB/s 用时 1.7s
2018-05-29 19:39:14 (5.24 MB/s) - 已保存 “httpd-2.4.33.tar.gz” [9076901/9076901])

解压源码包

  • 解压 :
# tar -zxvf httpd-2.4.33.tar.gz

配置相关选项并生成Makefile

  • 进入解压后的源码目录:
# cd httpd-2.4.33/# ./configure --prefix=/usr/local/apache2			#选择安装apache到/usr/local/apache2目录

注意:这里除了下载httpd-2.4.33.tar.gz,还需要下载apr-1.6.3.tar.gzapr-util-1.6.1.tar.bz2 ,使用yum install -y pcre-devel来安装 pcre-devel,同时在/usr/local/src/httpd-2.4.33/srclib目录下编译、安装aprapr-util,不断使用echo $?命令验证上条命令,这样才能正常编译安装 httpd-2.4.33 。

# ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-1-config


进行编译

  • 生成Makefile后,需要进行编译:
# make


安装

安装源码包的命令是make install

# make install# ls /usr/local/apache2bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules

至此,可以看到,apache的源码安装完成了,在这个过程中,生成Makefile这一步很容易出错,这几步,每一步都应该验证一下是否正确执行命令。


0

精彩评论

暂无评论...
验证码 换一张
取 消