Linux 包管理器

Posted huyuanblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 包管理器相关的知识,希望对你有一定的参考价值。

RPM:

rpm(Red-Hat Package Manager) 为 Redhat 提出的包管理器, 用于在 Redhat 及其衍生版本中安装 rpm 格式的软件包

rpm 的优点:
    1、简化了源码编译的难度, 使得安装或者卸载软件只需一条命令即可

缺点:
    1、不能够自定义源码编译参数
    2、无法自动解决依赖关系(这个缺点由 yum 工具解决)

RPM 包命名格式:
    httpd-2.4.6-67.el7.centos.x86_64.rpm
    httpd 软件包名称  2.4.6-67 软件包版本   el7 系统版本    centos 系统发型版   x86_64 CPU架构  


RPM 依赖关系:
    树形依赖关系: A 依赖 B, B 依赖 C                A-B-C
    环形依赖关系: A 依赖 B, B 依赖 C, C  依赖 A      A-B-C-A


RPM 常用命令:
    # 查看当前系统中是否存在以 RPM 方式安装的 httpd
    rpm -q httpd

    # 和 rpm -q httpd 相同
    rpm -qa httpd

    # 列出当前系统中所有以 RPM 方式安装的软件包
    rpm -qa

    # 查询已安装的 httpd 的详细信息
    rpm -qi httpd

    # 查看安装 httpd 生成的所有文件
    rpm -ql httpd

    # 查看 passwd 是由那个安装包提供
    rpm -qf /bin/passwd

    # 查看 httpd 生成的配置文件
    rpm -qc httpd

    # 安装 httpd (可能由于依赖关系而安装失败)
    wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
    rpm -ivh httpd-2.4.6-88.el7.centos.x86_64.rpm
    或
    rpm -ivh https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm

    # 卸载 httpd
    rpm -e httpd

RPM 选项:
    -i              安装指定 RPM 包
    -e              卸载指定 RPM 包
    -v              显示安装时的详细信息
    -vv             显示更详细的信息
    -h              显示安装时的进度
    -U              升级指定 RMP 包, 如果当前系统没有安装该 RPM 包, 则安装
    -F              升级指定 RMP 包, 若果当前系统没有安装该 RPM 包, 则退出
    -K              校验指定软件包
    --nodeps        不检查依赖关系(多用于卸载)
    --force         强行安装(多用于老版本替换新版本)
    --import        导入秘钥文件

重建 RPM 数据库:
    RPM 数据库维护系统的 RPM 信息, 如果 RPM 数据库损坏则 rpm 或者 yum 命令都不可使用, 这是需要对 RPM 数据库进行重建, 重建的时间取决于当前系统上 RPM 包的数量

    # 重建 RPM 数据库
    rpm  --rebuilddb

  

YUM:

yum 是 rpm 的前端工具, 使用 python 开发, 用于自动解决 RPM 之间的依赖关系
要使用 yum 必须给定配置文件, 配置文件统一存放在 /etc/yum.repos.d/ 下, 必须以 .repo
配置文件格式:
    [base]
    name=CentOS-$releasever - Base         
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    [base]          # yum 的唯一 id, 必须全局唯一
    name            # 描述信息
    mirrorlist      # 服务器镜像地址
    baseurl         # 服务器镜像地址(mirrorlist 和 baseurl 只能配置一个)
    gpgcheck        # 是否验证 KEY
    gpgkey          # key 的存放路径
    enabled         # 是否启用这个配置块


yum 源的分类:
    base               # 常用的安装包, base 源里面的包通常和安装镜像的包相同
    extras             # 常用的扩展包
    updates            # 执行 yum update 使用的源
    epel               # 通过 epel 认证的源(需要自己安装)


yum 常用命令:
    # 显示所有的 yum 仓库, status 列为 enabled 表示启用, disabled 表示禁用
    yum repolist all

    # 显示所有 status 为 enabled 的 yum 仓库
    yum repolist enabled

    # 显示所有 status 为 disabled 的 yum 仓库
    yum repolist disabled

    # 列出所有 yum 仓库中的 rpm 包
    yum list

    # 显示所有以 http 开头的包(yum 支持通配符)
    yum list http*

    # 在所有 yum 仓库中搜索 httpd 关键字
    yum search httpd

    # 安装 httpd (会提示是否确认安装)
    yum install httpd

    # 自动回答为 yes, -y 在需要键入 yes 或者 no 时自动回答为 yes
    yum -y install nginx

    # 重新安装 httpd
    yum -y reinstall httpd

    # 更新 httpd
    yum -y update httpd

    # 卸载 httpd(不会卸载其自动安装的依赖包)
    yum -y remove httpd

    # 卸载 nginx 将会卸载其所安装的所有包
    yum -y autoremove nginx

    # 查看 openssh 包的详细信息
    yum info openssh
    
    # 安装指定文件有那个程序包提供
    yum provides /bin/passwd

    # 查看 ifconfig 有那个程序包提供
    yum provides */ifconfig

    # 清除缓存
    yum clean all 

    # 清除插件缓存
    yum clean plugins

    # 构建缓存
    yum makecache

    # 查看 lsof 的依赖
    yum deplist lsof

    # yum 操作历史记录
    yum history

    # 安装 epel 源
    yum -y install epel-release


    包组相关的命令:
        #列出所有可用的包组列表
        yum grouplist

        # 安装 GNOME Desktop(GNOME 桌面) 包组
        yum groupinstall GNOME Desktop

        # 卸载 GNOME Desktop 包组
        yum groupremove GNOME Desktop

        # 查看指定包组信息
        yum groupinfo GNOME Desktop

        # 更新指定包组
        yum groupupdate GNOME Desktop

  

  

以上是关于Linux 包管理器的主要内容,如果未能解决你的问题,请参考以下文章

linux基本操作之rpm程序包管理器

如何使用Android片段管理器传递变量[重复]

massCode 一款优秀的开源代码片段管理器

Android:使用支持片段管理器时复制片段

Linux包管理器用法整理

Linux新手的最佳包管理器