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这种程序包管理工具,

相关内容

热门资讯

伊朗高官:美试图阻挠伊朗阿曼就... 据伊朗方面4日消息,一名伊朗高级官员说,美国政府试图阻挠伊朗与阿曼之间关于霍尔木兹海峡管理的持续谈判...
铠侠与闪迪发布第十代332层Q... IT之家 8 月 4 日消息,铠侠株式会社今天宣布与闪迪公司共同推出下一代四层单元(QLC)3D 闪...
官方通报卫生巾疑现虫卵:对涉事... 8月4日晚,广西桂林市七星区市场监督管理局发布情况通报:4日,网络上关于“购买的卫生巾疑现虫卵”的信...
奖励一颗小行星命名!中国科学家... 中国科学家又有喜讯了。 综合中国气象报社、科技日报消息,当地时间8月3日,在意大利佛罗伦萨举办的第4...
全球最大通信卫星刚上天,休斯为... 卫星互联网商业模式观察 全球最大通信卫星刚上天, 休斯为什么还是被星链逼到破产? 作者 | 老谭 ...
中国版「生物DeepSeek」... 新智元报道 DeepSeek-V4-Flash正式版刚炸翻全球通用大模型圈,中国生命科学版Deep...
汽车回血,AI烧钱,特斯拉迎来... 文|高恒说 特斯拉开始把造车产线让给机器人。 2026年第二季度,特斯拉拆除了弗里蒙特工厂原有的M...
鸿蒙智行承认投诉“竹知了”视频... 针对“竹知了”玩具相关舆情,鸿蒙智行于8月4日晚发布企业声明,介绍了投诉“竹知了”视频相关情况,也表...
抢劫杀人犯死刑改死缓被害人家属... 澎湃新闻记者 熊强云南宣威市乐丰乡1999年“山村小卖部抢劫杀人案”被害人家属申诉迎来新进展:家属徐...
乘客投诉绕路遭出租车司机持铁棍... 8月4日晚,太原市公安局小店分局官方微博通报:7月20日凌晨2时许,我局接到群众报警,小店区体育路许...