linux的程序包管理-rpm
admin
2023-05-23 22:23:18
0

    我们知道,程序就是指令加上数据的集合或者称为算法加上数据结构的集合。应用程序以源代码和二进制的形式存在:源代码是包含了整个应用程序的编程语言的所有代码的文本文件;二进制则是将源代码经过一系列的转换操作之后得到的可以直接执行的文件。
    使用源代码安装应用程序的步骤为:预处理(预处理器) --> 编译(编译器) --> 字节码 --> 汇编(汇编器) --> 链接(链接器) --> 可以直接执行的二进制程序文件。当我们使用源代码安装应用程序时,不同操作系统的相同操作安装出来的相同应用程序如果直接拿出来放在另一个操作系统上使用可能会不能使用,但如果两台主机的不同操作系统有POSIX的接口标准,便可以直接使用。
    程序包管理器在制定系统中进行程序的安装、卸载、升级、查询及校验等工作。不同的linux发行版本,有着不同的程序包管理器:Debian : dpt (Debian Package Toolkits) ,dpkg工具,.deb后缀名的包文件;RdeHat : rpm (Redhat Package Manager),rpm工具,.rpm后缀名的包文件;S.u.s.e: rpm等。rpm成为linux的程序包管理器的行业标准;rpm是perl编写的,后来用C重写了rpm。
    在制作rpm程序包的时候,通常其制作者会采用分包技术来构建rpm程序包,或者说是根据程序的不同功能,构建多个程序包。被分包的程序包分为主程序包和附属功能包。主程序包和附属功能包具有相同的版本号,发行版本号,操作系统以及兼容平台的标识,仅仅是多了个附属的功能而已。所以,主程序包往往被所有的附属功能包所依赖,不安装主程序包就不能安装附属功能包。
    对于rpm程序包的命名,源码包和二进制包的命名方式是不同的:源码包:software_name-VERSION.src.rpm;二进制包:software_name-VERSION-[release].[os].arch.rpm。
    rpm程序包中文件的组成清单:
        1.程序的文件
        2.文件清单
        3.软件安装或卸载时所运行的脚本文件:共分为四类
            1)preinstall:在正式的安装操作开始之前所运行的脚本,%pre
            2)postinstall:在安装完成之后所执行的脚本,%post
            3)preuninstall:在正式卸载操作开始之前所运行的脚本,%preun
            4)postuninstall:在卸载完成之后所执行的脚本,%postun
    在计算机中安装rpm程序包一般使用rpm或者yum工具。rpm命令行工具可以进行安装、卸载、升级(降级)、查询、文件校验、验证、数据库维护的操作。rpm中的通用选项为-v:显示安装历程的信息,仅仅显示安装软件名;-vv显示非常详细的操作信息。
    rpm中的安装操作:rpm   {-i|--install}   [install-options]   PACK-AGE_FILE ...
    install-options:
        -h,--hash:用50个#来表示安装进度
        --test:并不是真正的安装软件包,仅仅是测试是否在安装时能够正常完成,dry run模式
        --nodeps:忽略因为依赖关系导致的安装错误,不建议使用;
        --replacefiles:替换文件:在安装软件包时,软件包中的文件会直接将原来安装的文件替换;
        --replacepkgs:替换程序包:无需卸载软件包而重新安装
        --noscripts:不运行任何脚本
        --nosignature:不考虑软件包的来源是否合法
        --nodigest:不考虑软件包是否完整
    rpm中的升级操作:rpm -U [install-options] +
        如果选择被安装的程序包事先并未安装,则全新安装,如果已经安装了旧版本,则可以升级安装;
      rpm   [-F|--freshen]   [install-options]  +
        仅仅只能对已经安装的低版本的程序包进行升级安装;
        常用选项:与安装相同
            --oldpackage:用老版本的程序包替换新版本的程序包
            --force强制升级
            注意:不要对内核进行升级操作,linux可以支持多内核,可以直接安装新版本的内核,在启动界面可以手动更换;升级安装可能会带来文件的变化,因此系统默认不会直接更改之前安装过的程序的配置文件,新程序包中的配置文件会被重命名,通常会是:FINENAME.rpmnew
    rpm中的卸载操作:rpm   {-e|--erase}   [--allmatches]   [--nodeps]
    --allmatchs:将卸载所有匹配制定名称的程序包的各个版本;
    --nodeps:卸载时忽略依赖关系,不建议使用
    --test:仅仅测试卸载,dry run模式
    rpm中的查询操作:rpm   {-q|--query}   [select-options]    [query-options]
       直接给出程序包名
       -a,--all查询所有已安装的程序包名
       -f,--file FILE 查找指定的文件是由哪个程序包提供的;
       -p,--package PACKAGE_FILE 对还没有安装的程序包文件中执行查询操作
       [--whatprovides   CAPABILITY] 查询指定的CAPBILITY是由哪个程序包所提供的
       [--whatrequires CAPABILITY]查询指定的CAPBILITY被哪个程序包所依赖

           query-options
               [--changelog]查询rpm程序包的changelog
               -c,--configfiles查询指定程序包中有哪些是配置文件
               -d,--docfiles 查询指定程序包中有哪些文档文件
               -i,--info查询程序包相关的信息,包括版本号,发行号,大小等;


               -l,--list列表显示程序包安装会生成哪些文件
               --provides列出制定程序包提供的所有的CAPABILITY
               -R,--requires:查询指定程序包的依赖关系
               --scripts:查看程序包所携带的脚本的内容
  rpm的校验操作:rpm -V 文件名;用来确认文件是否被修改或覆盖,如被改变则在标准输出有一系列输出,否则无输出。
  rpm的数据库管理操作:数据库的初始化和重建,数据库位于/var/lib/rpm。--dbpath指定数据库位置,--rebuilddb重建数据库,--initdb初始化数据库。
  在使用rpm程序包管理工具时,总是会遇到依赖问题,导致安装一个所需的软件包会很麻烦,所以对于这种弊端开发出了yum这种程序包管理工具,

相关内容

热门资讯

德瑞斯电子取得新型散热风扇专利... 国家知识产权局信息显示,深圳市德瑞斯电子科技有限公司取得一项名为“一种新型散热风扇”的专利,授权公告...
新兴技术及应用产业日报(05.... 公司动态 中国移动段晓东:6G智能体通信——智能经济发展新范式 中国移动研究院副院长段晓东在...
2026年618购机指南:50... 随着618购物节的临近,许多消费者都在寻找一款预算在5000元左右,既能满足日常高强度拍照需求,又无...
体育博物馆如何在互联网时代维持... 上海体育博物馆正在利用更多科技与智能,让游客能够沉浸式逛展。 博物馆如何在当今人工智能盛行的互联网时...
万斯大型失忆现场:呼吁投票反对... 美国副总统JD・万斯近日深陷网络群嘲。他呼吁支持者“投票反对华盛顿疯狂的领导层”,似乎忘了如今是谁在...
原创 在... NASA的气候模拟研究显示:40 亿年前,太阳刚形成不久,亮度只有现在的70%,整个太阳系比现在凉爽...
24岁演员,骑机车意外离世 近日,24岁短剧男演员黄子仟被曝离世,好友任九晗发文悼念,称从没想过再次见面,是看着你从冷柜里被抬出...
800元免费领,让养老院“头疼... “没想到,都快5月了,在我们这么大的社区,我是第一个申领养老消费券的人。”4月下旬,在90多岁父亲出...
方太燃气灶打不上火是什么原因? 可能是燃气灶 没有开燃气阀,有的时候是忘记开燃气阀门了;可能是燃气灶喷嘴堵塞,影响喷嘴点燃燃气;还可...
带熄火保护的燃气灶不出气怎么办 开启开关出现了故障,如果是带熄火保护的燃气灶由于使用年限过长,导致出现问题,则意味着无法正常进行使用...