美文网首页
Centos下软件包管理与安装

Centos下软件包管理与安装

作者: iDevOps | 来源:发表于2019-10-10 13:48 被阅读0次
    软件包管理
    • 软件包类型
      rpm二进制包: 已经使用GCC编译
      tar源码包: 需要编译
    • rpm
      RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、SUSE以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了
    • rpm包获取方式
      1.Centos系统镜像光盘
      2.rpmfind.net网站
      3.软件包官网下载,比如mysql的官网
    # 包格式书名
    [root@centos7-base /]# ls /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm 
    /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
    zsh: 软件名
    5.0.2: 主版本号和次版本号
    28: 第几次发布版本
    el7.: 操作系统版本
    x86_64: 64位软件包
    
    • 安装rpm软件
    [root@centos7-base ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:zsh-5.0.2-28.el7                 ################################# [100%]
    
    参数:
    -i   是install的意思, 安装软件包
    -v  显示附加信息,提供更多详细信息
    -V  校验,对已经安装的软件进行校验
    -h  --hash  安装时输出####标记
    
    • rpm查询功能
    用法: 
    rpm -q(query) 常与下面参数组合使用
    -a(all)  查询所有已安装的软件包
    -f(file)系统文件名(查询系统文件所属哪个软件包),反向查询
    -i  显示已经安装的rpm软件包信息,后面直接跟包名
    -l(list)  查询软件包中文件安装的位置
    -p  查询未安装软件包的相关信息,后面要跟软件的命名
    -R 查询软件包的依赖性
    
    # 查询指定包是否安装
    [root@centos7-base ~]# rpm -q zsh
    zsh-5.0.2-28.el7.x86_64
    
    # 查询所有已安装包中带vim关键字的包
    [root@centos7-base ~]# rpm -qa | grep vim
    vim-enhanced-7.4.160-4.el7.x86_64
    vim-minimal-7.4.160-4.el7.x86_64
    vim-common-7.4.160-4.el7.x86_64
    vim-filesystem-7.4.160-4.el7.x86_64
    
    # 查看find命令的路径
    [root@centos7-base ~]# which find
    /usr/bin/find
    
    # 查询文件或命令属于哪个安装包
    [root@centos7-base ~]# rpm -qf /usr/bin/find
    findutils-4.5.11-5.el7.x86_64
    
    # 查询已经安装的rpm包的详细信息或作用
    [root@centos7-base ~]# rpm -qi zsh
    Name        : zsh
    Version     : 5.0.2
    Release     : 28.el7
    Architecture: x86_64
    Install Date: 2019年10月09日 星期三 16时19分09秒
    Group       : System Environment/Shells
    Size        : 5855982
    License     : MIT
    Signature   : RSA/SHA256, 2017年08月11日 星期五 04时28分17秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : zsh-5.0.2-28.el7.src.rpm
    Build Date  : 2017年08月02日 星期三 18时52分37秒
    Build Host  : c1bm.rdu2.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://zsh.sourceforge.net/
    Summary     : Powerful interactive shell
    Description :
    The zsh shell is a command interpreter usable as an interactive login
    shell and as a shell script command processor.  Zsh resembles the ksh
    shell (the Korn shell), but includes many enhancements.  Zsh supports
    command line editing, built-in spelling correction, programmable
    command completion, shell functions (with autoloading), a history
    mechanism, and more.
    [root@centos7-base ~]# clear
    
    # 针对没有安装的RPM包
    [root@centos7-base ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm 
    Name        : php-mysql
    Version     : 5.4.16
    Release     : 45.el7
    Architecture: x86_64
    Install Date: (not installed)
    Group       : Development/Languages
    Size        : 237547
    License     : PHP
    Signature   : RSA/SHA256, 2018年04月25日 星期三 19时36分39秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : php-5.4.16-45.el7.src.rpm
    Build Date  : 2018年04月13日 星期五 03时12分53秒
    Build Host  : x86-01.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://www.php.net/
    Summary     : A module for PHP applications that use MySQL databases
    Description :
    The php-mysql package contains a dynamic shared object that will add
    MySQL database support to PHP. MySQL is an object-relational database
    management system. PHP is an HTML-embeddable scripting language. If
    you need MySQL support for PHP applications, you will need to install
    this package and the php package.
    
    • 查看软件包是否被修改
    rpm -V包名
    rpm -Vf 文件路径
    
    • 升级
    # 这种方式需要先解决依赖包
    [root@centos7-base ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm 
    准备中...                          ################################# [100%]
        软件包 lrzsz-0.12.20-36.el7.x86_64 已经安装
    
    # 所以我们一般会使用yum的方式升级安装包
    [root@centos7-base ~]# yum update lrzsz
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.njupt.edu.cn
     * extras: mirrors.njupt.edu.cn
     * updates: mirrors.njupt.edu.cn
    base                                                                                                      | 3.6 kB  00:00:00     
    extras                                                                                                    | 2.9 kB  00:00:00     
    updates                                                                                                   | 2.9 kB  00:00:00     
    No packages marked for update
    
    • 卸载
    [root@centos7-base ~]# rpm -e zsh
    
    yum

    yum(全称为 Yellow dog Updater, Modified)是一个前端软件包管理器。
    基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记

    • 配置本地yum源

    1.挂载镜像

    [root@centos7-base ~]# mount /dev/cdrom /mnt
    mount: /dev/sr0 写保护,将以只读方式挂载
    [root@centos7-base ~]# 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@centos7-base ~]# vim /etc/yum.repos.d/centos7.repo   #必须以.repo结尾,插入以下内容
    [centos7]            #yum源名称,在本服务器上唯一的,用来区分不同的yum源
    name=CentOS7  #对yum源描述信息
    baseurl=file:///mnt #yum源的路径,提供方式包括FTP(ftp://...)、HTTP(http://...)、本地(file:///...                                   光盘挂载目录所在的位置)
    enable=1   #为1,表示启用yum源;0为禁用
    gpgcheck=0  #为1,使用公钥检验rpm包的正确性;0为不校验
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  #指定进行rpm校验的公钥文件地址
    
    • 网络yum源
    [root@centos7-base ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    --2019-10-10 13:32:18--  http://mirrors.aliyun.com/repo/Centos-7.repo
    正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 61.182.131.230, 101.72.206.231, 101.72.206.230, ...
    正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|61.182.131.230|:80... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:2523 (2.5K) [application/octet-stream]
    正在保存至: “/etc/yum.repos.d/CentOS-Base.repo”
    
    100%[=======================================================================================>] 2,523       --.-K/s 用时 0s      
    
    2019-10-10 13:32:19 (104 MB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])
    
    #wget 下载文件 ,-O 将wget下载的文件,保存到指定的位置,保存时可以重新起一个名字,或者直接写一个要保存的路径,这样还用原来的文件名
    
    • yum操作
    yum install -y httpd    # 安装软件包
    yum -y update    #升级软件包,改变软件设置和系统设置,系统版本内核都升级
    yum -y upgrade   #升级软件包,不改变软件设置和系统设置,系统版本升级,内核不改变
    yum info  httpd    #查询rpm包
    yum provides /usr/bin/find  #查看命令是哪个软件包安装的 
    yum -y remove  包名    #卸载包
    yum search keyword   #按关键字搜索软件包
    
    • 中英文切换
    [root@centos7-base ~]# echo $LANG
    zh_CN.UTF-8
    [root@centos7-base ~]# LANG=en_US.UTF-8
    
    tar源码包安装

    下面以安装nginx源码包为例

    # 编译环境
    yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel
    # 解压源码包
    tar xvf nginx-1.12.2.tar.gz
    cd nginx-1.12.2
    # 编译安装
    ./configure  --prefix=/usr/local/nginx
    make -j 4
    make install
    
    • ./configure
    a. 指定安装路径,例如 --prefix=/usr/local/nginx
    b. 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter --with-http_ssl_module
    c. 和其它软件关联,例如--with-pcre
    d. 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求
    最终生成:Makefile
    # make  -j 4   #按Makefile文件编译,可以使用-j 4指定4核心CPU编译,提升速度
    # make install  #按Makefile定义的文件路径安装
    # make clean //清除上次的make命令所产生的object和Makefile文件。使用场景:当需要重新执行configure时,需要执行make clean
    
    • 删除源码包
      make uninstall
      有时删除不干净,所以建议大家安装时,在configure步骤添加一个: --prefix 参数。这样删除或备份时,直接对删除--prefix指定的安装目录操作就可以了

    相关文章

      网友评论

          本文标题:Centos下软件包管理与安装

          本文链接:https://www.haomeiwen.com/subject/zyqgpctx.html