• 安装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位。


    7.1.1 安装RPM包

    安装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 表示显示安装进度
    –force 表示强制安装,即使覆盖属于其他包的文件也要安装
    –nodeps 表示当要安装的RPM包依赖于其他包时,即使其他包没有安装,也要安装这个包


    7.1.2 升级RPM包

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

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

    软件包 vim-minimal-2:7.4.160-4.el7.x86_64 (比vim-minimal-2:7.4.160-2.el7.x86_64 还要新) 已经安装

    7.1.3 卸载RPM包

    卸载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%]


    7.1.4 查询一个包是否安装

    查询一个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


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

    查询一个已安装的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.


    7.1.6 查询一个RPM包的安装文件

    查询一个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


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

    查询某个文件属于哪个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命令的绝对路径,反引号可以直接引用反引号里面命令的结果


    7.2 yum工具

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


    7.2.1 列出所有可用的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


    7.2.2 搜索RPM包

    搜索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

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


    7.2.3 安装RPM包

    安装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
    完毕!


    7.2.4 卸载RPM包

    卸载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包也一起卸载了,这样会影响正常业务


    7.2.5 升级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包名” 通配搜索未安装的包名


    7.2.6 使用本地光盘制作yum源

    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源


    7.2.7 利用yum工具下载RPM包

    在此之前,我们需要先恢复之前的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包而不安装:

    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 安装步骤,用于创建相关软件的存放目录和配置文件

    7.3.1 下载源码包

    下载源码包要到官方网站,且尽量下载到 /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
    –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])

    7.3.2 解压源码包

    解压 .tar.gz格式的压缩包

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

    7.3.3 配置相关选项并生成Makefile

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

    [root@localhost src]# cd httpd-2.4.33
    [root@localhost httpd-2.4.33]# ./configure –prefix=/usr/local/apache2 \\选择安装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]# ./configure –prefix=/usr/local/apache2 –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-1-config


    7.3.4 进行编译

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

    [root@localhost httpd-2.4.33]# make


    7.3.5 安装

    安装源码包的命令是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这一步很容易出错,这几步,每一步都应该验证一下是否正确执行命令

  • 相关阅读:
    《C程序设计》笔记(ch1-2)
    Jenkins :添加node权限获取凭据、执行命令
    JavaWeb 项目 --- 博客系统(前后分离)
    【C++】SLT 六大组件之一:容器总结
    【文末送书】2023年以就业为目的学习Java还有必要吗?
    OpenCV python下载和安装
    如何在 Mac 上成功轻松地恢复 Excel 文件
    ☆打卡算法☆LeetCode 28、实现 strStr() 算法解析
    Vuex ——详细介绍
    JVM导出dump文件
  • 原文地址:https://blog.csdn.net/eeeeety6208/article/details/127400066