安装RPM包或源码包

匿名 (未验证) 提交于 2019-12-03 00:22:01

在Windows系统下安装软件很简单,双击后缀为.exe的文件不停下一步即可,但在Linux系统下面并不是那么简单。
Linux系统有三种安装软件的方式:RPM工具、yum工具、安装源码包。

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包的命令如下:

[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# 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
[root@localhost ~]# cd /mnt/Packages/
[root@localhost 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包

上面RPM命令各项的含义:

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


升级RPM包 : rpm -Uvh filename ,其中 -U选项表示升级

[root@localhost Packages]# rpm -Uvh vim*
准备中… ################################# [100%]

卸载RPM包 : rpm -e 包名 ,其中 -e选项表示卸载(这里的包名不需要带平台信息和后缀名)

[root@localhost Packages]# rpm -e libjpeg-turbo
[root@localhost Packages]# rpm -ivh libjpeg-turbo*
准备中… ################################# [100%]
正在升级/安装…1:libjpeg-turbo-1.2.90-5.el7 ################################# [100%]


查询一个RPM包rpm -q 包名

[root@localhost Packages]# rpm -q libjpeg-turbo
未安装软件包 libjpeg-turbo
[root@localhost Packages]# rpm -ivh libjpeg-turbo*
准备中… ################################# [100%]
正在升级/安装…
1:libjpeg-turbo-1.2.90-5.el7 ################################# [100%]
[root@localhost Packages]# rpm -q libjpeg-turbo
libjpeg-turbo-1.2.90-5.el7.x86_64

查询当前系统所有已安装的RPM包rpm -qa

[root@localhost Packages]# rpm -qa |tail
perl-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 -qi 包名

[root@localhost Packages]# rpm -qi libjpeg-turbo
Name : 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 -ql 包名

[root@localhost Packages]# 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 -qf 文件的绝对路径

[root@localhost Packages]# rpm -qf /usr/lib64/libjpeg.so.62.1.0
libjpeg-turbo-1.2.90-5.el7.x86_64
[root@localhost Packages]# rpm -qf which cd
bash-4.2.46-30.el7.x86_64

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


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


列出所有可用的RPM包yum list

[root@localhost Packages]# 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
由于管道被破坏而退出
[root@localhost Packages]#
[root@localhost Packages]# yum list |tail
zulucrypt-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包yum search [相关关键词]

[root@localhost Packages]# 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
名称和简介匹配 only,使用“search all”试试。

还可以这样搜索:yum list |grep ‘yum’

[root@localhost Packages]# 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包yun install [-y] [RPM包名] ,如果不加 -y选项,则会以与用户交互的方式安装

[root@localhost Packages]# 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 test
Transaction 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包yum remove [-y] [RPM包名] ,如果不加 -y选项,则会以与用户交互的方式卸载

[root@localhost Packages]# 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 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
完毕!

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


升级RPM包yum update [-y] [RPM包名] ,如果不加 -y选项,则会以与用户交互的方式升级;如果不加RPM包名,则会更新所有需要更新的RPM包

[root@localhost Packages]# 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 test
Transaction 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包名” 通配搜索未安装的包名



  1. 首先,挂载光盘:

[root@localhost ~]# mount /dev/cdrom /mnt
mount: /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
  • 刷新repos生成缓存
    yum cache 或者 yum clean all
  • 此时,可以查看是否为本地yum源
    [root@localhost yum.repos.d]# yum list |tail
    scap-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源:

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

    下载RPM包而不安装:

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

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

    yumdownloader 包名

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


    在Linux下,安装源码包是比较常见的,安装源码包,需要我们把源代码编译成可执行的二进制文件。如果机器上没有安装C语言编译器gcc,就无法编译代码,可以使用命令yum install -y gcc来安装。
    安装源码包通常需要3个步骤:
    1. ./configure 这一步定制功能,加上相应选项即可
    2. make 该命令会根据Makefile文件中预设的参数进行编译(gcc在工作)
    3. make install 安装步骤,用于创建相关软件的存放目录和配置文件

    下载源码包要到官方网站,且尽量下载到 /usr/local/src目录下

    yum install -y wget \\ 安装wget

    [root@localhost etc]# cd /usr/local/src
    [root@localhost src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz
    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.gz格式的压缩包

    [root@localhost src]# tar -zxvf httpd-2.4.33.tar.gz

    首先,进入解压后的源码目录:

    [root@localhost src]# cd httpd-2.4.33
    [root@localhost httpd-2.4.33]# \\选择安装apache在/usr/local/apache2目录下

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

    [root@localhost httpd-2.4.33]#


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

    [root@localhost httpd-2.4.33]# make


    安装源码包的命令是make install

    [root@localhost httpd-2.4.33]# make install
    [root@localhost httpd-2.4.33]# ls /usr/local/apache2
    bin build cgi-bin conf error htdocs icons include logs man manual modules

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

    易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
    该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!