美文网首页
软件包管理

软件包管理

作者: geekdeedy | 来源:发表于2017-06-18 16:37 被阅读0次

    在 Linux(GNU/Linux)操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行版本和 DEB 软件包的 Linux 发行版本。程序包管理器的只要功能是将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作。
    RPM软件包分为二进制包(Binary)、源代码包(Source)。二进制包(由二进制文件、库文件、配置文件、帮助文件组成)可以直接安装在计算机中,而源代码包将会由软件包管理器自动编译、安装。

    RPM包管理

    RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统的既定软件标准,软件包是rpm文件。

    RPM包特点

    RPM是将你要安装的软件预先编译,打包成为RPM软件包,并把这个软件要安装的时候相关参数信息和依赖关系等记录在软件包里默认的数据库中。当安装时,RPM首先会检查软件安装环境,避免错误安装。然后按照软件包软件包里面的数据查询依赖关系是否满足,满足则安装否则不安装。而且安装的时候就将该软件的信息整个写入系统RPM的数据库中,以便未来的查询、验证与卸载。

    RPM包命名格式

    rpm包的命名格式:Name-Version-Relase.Arch.rpm (bash-4.2.3-3.centos5.x86_64.rpm)
    Name:软件的名称
    Version: 源代码版本
    Release:发行版本号,通常是编译的次数。与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS
    Arch硬件平台:
    x86: i386, i486, i586, i686等32位CPU等;
    x86_64: 64位的CPU
    powerpc: IBM的PPC
    noarch:通用的, 没有任何硬件等级上的限制。

    RPM包获取途径

    1、发行的光盘或站点服务器
    2、项目的官网
    3、通过搜索引擎搜索很多第三方机构或个人制作并公开发布的许多rpm包(要注意rpm的合法性和安全性)
    RPM搜索引擎 :http://pkgs.orghttp://rpmfind.nethttp://rpm.pbone.nethttps://sourceforge.net/
    4、可靠的途径:EPEL

    rpm命令使用方法

    RPM软件包的安装、删除、升级、查看和验证等所有的操作都由rpm这一命令来进行的。
    rpm[模式][选项][参数]

    模式

    安装模式:rpm {-i |--install} [install-options] PACKAGE_File …
    升级模式:rpm {-U|--upgrade} [install-options] PACKAGE_File …
    卸载模式:rpm {-e|--erase} [erase-options]PACKAGE_Name …
    查询模式:rpm {-q |--query } [select-options] [query-options]
    验证模式:rpm {-V |--verify} [select-options] [verify-options]

    选项

    一般选项
    选项 含义
    -a 查询所有软件包;
    -h或--hash 显示进度条;
    -i 显示软件包的相关信息;
    -l 显示软件包的文件列表;
    -p (RPM包) 查询指定的RPM软件包;
    -q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
    -s 显示文件状态,本参数需配合"-l"参数使用;
    -v 显示指令执行过程;
    -vv 详细显示指令执行过程,便于排错。

    选择选项

    select-options,用于查询和验证模式

    选项 含义
    -a 查询所有安装的软件包。
    -f,--file FILE 查询拥有<文件>的软件包,即是哪一个软件包安装的<解文件>。
    查询选项

    query-options,可用于查询和验证模式

    选项 含义
    -i,--info 显示软件包的信息,包括名称、版本、描述信息。
    -l,--list 列出这个软件包内所包含的文件。
    --provides 显示这个软件包所提供的功能。
    -R,--requires 查询安装该软件包所需要的其他软件包。
    -s,--state 列出软件包中所有文件的状态。
    验证选项

    verify-options,只能用于验证模式

    选项 含义
    --nodeps 不验证依赖的软件包。
    --nofiles 不验证软件包文件的属性。
    安装选项

    install-options,用于安装模式和升级模式

    选项 含义
    --replacepkgs 替换安装整个软件包
    --replacefiles 不同包有相同的文件且在同一个路径下后面安装的包则替换安装相同文件
    --force 强制覆盖安装
    --nodeps 忽略软件包所依赖的其他软件强制安装
    --test 模拟安装,软件包并不会实际安装到系统中,只是检查并显示可能存在的冲突。
    删除选项

    erase-options,只能用于删除模式。

    选项 含义
    --nodeps 忽略其他依赖该软件包的软件,强制删除该软件包。
    --test 模拟删除

    数据库管理

    通过rpm 命令查询一个rpm 包是否安装了,也是通过rpm 数据库来完成的;有时rpm 系统出了问题,不能安装和查询,可能会是数据库出现问题,可以使用下面命令重建;
    RPM包数据库目录:/var/lib/rpm
    rpm --initdb:初始化数据库(如果事先没有库,会新建一个;如果有,则不新建;)
    rpm --rebuilddb: 重建数据库(直接重建,覆盖原有的数据库)

    YUM

    YUM 基于 RPM 包管理工具,能够从指定的源空间(服务器,本地目录等)自动下载目标 RPM 包并且安装,可以自动处理依赖性关系并进行下载、安装,无须繁琐地手动下载、安装每一个需要的依赖包。此外,YUM 的另一个功能是进行系统中所有软件的升级。
    YUM服务器存储了众多rpm 包,以及包的相关的元数据文件(放置于特定目录repodata 下)
    YUM服务器常用文件传输协议:http://、https://、ftp://、file://

    YUM命令使用方法

    yum命令:yum [options] [command] [package ...]
    [command]为所要进行的操作
    [package ...]是操作的对象

    选项 含义
    -h 显示帮助信息;
    -y 对所有的提问都回答“yes”;
    -c 指定配置文件;
    -q 安静模式;
    -v 详细模式;
    -d 设置调试等级(0-10);
    -e 设置错误等级(0-10);
    -R 设置yum处理一个命令的最大等待时间;
    -C 完全从缓存中运行,而不去下载或者更新任何头文件。

    参数选项

    参数 含义
    install 安装rpm软件包;
    update 更新rpm软件包;
    check-update 检查是否有可用的更新rpm软件包;
    remove 删除指定的rpm软件包;
    list 显示软件包的信息;
    search 检查软件包的信息;
    info 显示指定的rpm软件包的描述信息和概要信息;
    clean 清理yum过期的缓存;
    shell 进入yum的shell提示符;
    resolvedep 显示rpm软件包的依赖关系;
    localinstall 安装本地的rpm软件包;
    localupdate 显示本地rpm软件包进行更新;
    deplist 显示rpm软件包的所有依赖关系。

    示例:

    安装

    yum install #全部安装
    yum install package1 #安装指定的安装包package1
    yum groupinsall group1 #安装程序组group1

    更新和升级

    yum update #全部更新
    yum update package1 #更新指定程序包package1
    yum check-update #检查可更新的程序
    yum upgrade package1 #升级指定程序包package1
    yum groupupdate group1 #升级程序组group1

    查找和显示

    yum info package1 #显示安装包信息package1
    yum list #显示所有已经安装和可以安装的程序包
    yum list package1 #显示指定程序包安装情况package1
    yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包

    删除程序

    yum remove | erase package1 #删除程序包package1
    yum groupremove group1 #删除程序组group1
    yum deplist package1 #查看程序package1依赖情况

    清除缓存

    yum clean packages #清除缓存目录下的软件包
    yum clean headers #清除缓存目录下的 headers
    yum clean oldheaders #清除缓存目录下旧的 headers

    包组管理的相关命令:

    yum groupinstall group1 [group2] [...](安装包组)
    yum groupupdate group1 [group2] [...](升级包组)
    yum grouplist [hidden] [groupwildcard] [...](列出包组)
    yum groupremove group1 [group2] [...](卸载包组)
    yum groupinfo group1 [...](查看包组信息)

    DPKG包管理

    DPKG,全称为 Debian Package,最早是由Debian Linux社区所开发的,通过dpkg的机制,debian提供的软件就能简单的安装起来了,同时还能提供安装后的软件升级维护等,主要应用在debian和基于debian的发行版上。软件包是deb文件。
    一个 DEB 包包含了已压缩的软件文件集以及该软件的内容信息(在头文件中保存),通常表现为以 .deb 扩展名结尾的文件,例如 package.deb 。对其操作,需要使用 dpkg 命令。
    DPKG 命令常用参数
    DPKG 的常规使用方法为 dpkg [options] Package

    选项 含义
    -i 安装软件包;
    -r 删除软件包;
    -P 删除软件包的同时删除其配置文件;
    -L 显示于软件包关联的文件;
    -l 显示已安装软件包列表;
    --unpack 解开软件包;
    -c 显示软件包内文件列表;
    --confiugre 配置软件包。

    示例:

    dpkg -i package.deb 安装包
    dpkg -r package删除包
    dpkg -P package 删除包(包括配置文件)
    dpkg -L package 列出与该包关联的文件
    dpkg -l package 显示该包的版本
    dpkg --unpack package.deb 解开deb包的内容
    dpkg -S keyword #搜索所属的包内容
    dpkg -l #列出当前已安装的包
    dpkg -c package.deb #列出deb包的内容
    dpkg --configure package 配置包

    APT

    APT 的全称为 Advanced Packaging Tools 。与 YUM 对应,它最早被设计成 DPKG 的前端软件,现在通过 apt-rpm 也支持 rpm 管理。而本节本节将介绍 APT 作为 DPKG 前端的使用。 APT 的主要包管理工具为 APT-GET,通过此工具可满足和上述 YUM 相似的功能要求。
    APT 常用命令
    apt-get update(更新源索引)
    apt-get install package-name(安装指定软件)
    apt-get source package-name(下载指定软件的源文件)
    apt-get upgrade(将系统中所有软件升级到最新版本)
    apt-get dist-upgrade(将操作系统连同所有软件升级到最新版本)
    apt-get remove package-name(卸载指定软件)

    软件包依赖关系

    由于开源的多态性,Linux 操作系统中的软件之间的依赖性关系处理一直很头疼。如果 package_a 依赖于 package_b,那么在一个没有安装 package_b 的系统中,package_a 是不被系统推荐安装的,强制安装很可能会导致软件无法正常工作。而且实际应用中往往最头疼的是 package_a 依赖于 package_b/c/d/e/f 等多个包 , 而 package_b/c/d/e/f 等包又依赖与package_b1,b2,b3/c1,c2/d1,d2/e1,e2/f1,f2 等等 , 为保证软件的正常使用,必须找到所有依赖包以及子依赖包并且安装。过多的依赖关系大大降低了 Linux 软件安装的用户友好性。所以我们应该使用了更高级的包管理策略YUM/APT去解决

    RPM↔DEB

    Alien 工具可以将 RPM 软件包转换成 DEB 软件包,或把 DEB 软件包转换成 RPM 软件包,以此适应兼容性的需要。注意首先请在系统中安装 alien 。
    在 UBUNTU 中使用 alien 将 rpm 转换为 deb 并安装 :
    alien -d package.rpm ;dpkg -i package.deb
    在 RHEL 中使用 alien 将 deb 转换为 rpm 并安装 :
    alien -r package.deb ;rpm -ivh package.rpm

    相关文章

      网友评论

          本文标题:软件包管理

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