千家信息网

linux程序包管理--rpm命令管理方式

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,1.概述API:Application Program InterfaceABI:Application Binary Interface Unix-like ElF win
千家信息网最后更新 2024年11月14日linux程序包管理--rpm命令管理方式
1.概述
API:Application Program InterfaceABI:Application Binary Interface    Unix-like        ElF    windows        exe,msi库级别的虚拟化    winE(linux上运行模拟windows)    cywin(windows上运行模拟linux)系统级开发:    C/C++:httpd,vsftpd,nginx    go应用级开发:    java/Python/perl/ruby/php:        java:hadoop,hbase(jvm)        Python:openstack(pvm)C/C++程序格式:    源代码:文本格式的程序代码        编译开发环境:编译器,头文件,开发库    二进制格式:文本格式的程序代码-->编译器-->二进制格式(二进制程序,库文件,配置文件,帮助文件)        Java/Python程序格式:            源代码:编译成能够在其虚拟机上(jvm/pvm)运行的格式;                开发环境:编译器、开发库            二进制:    项目构建工具:        c/c++:make        java:maven        编译顺序由项目构建工具自行决定(开发者已设置好编译顺序)
2.程序包管理器
源代码-->目标二进制格式-->组织称为一个或有限几个"包"文件;    安装、升级、卸载、查询、校验

程序包管理器:

debian(Ubuntu):dpt,工具:dpkg,程序包以".deb"结尾redhat:redhat package manager ,rpm,".rpm";rpm is package manager;S.u.S.E:rpm ,'.rpm'Gentoo:portsArchLinux:
3.程序包的组成格式
源代码:name-VERSION.tar.gz    VERSION:major.minor.releaserpm包命名格式:    name-VERSION-release.arch.rpm        VERSION:major.minor.release        release.arch:rpm包的发行号            release.os:2.el7.i386.rpm             archetecture(架构):i386,x64(amd64),ppc,noarch(没平台要求,可以使用在任意平台架构上)rpm拆包:主包和支包    主包:name-VERSION-release.arc.rpm    支包:name-function-VERSION-release.arc.rpm        function:devel(开发包),utils(工具程序),libs(库文件)依赖关系    X,Y,Z         X-->Y,Z            Y-->A,B,C            C-->Y前端工具:自动解决依赖关系;        yum :rhel系列系统上rpm包管理器的前端工具;            apt-get(apt-cache):deb包管理器的前端工具        zypper:suse的rpm管理器前端工具        dnf:Fedora 22+系统上rpm包管理器的前端工具
4.程序包管理器功能和组成部分
功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查看1.程序包的组成清单(每个程序包都单独实现);    文件清单    安装和卸载时运行的脚本2.数据库(公共)    程序包的名称和版本    依赖关系    功能说明    安装生成的各文件路径及校验码信息;    等等等        CentOS上的程序包数据库位置/var/lib/rpm/
5.获取程序包的途径
(1)系统发行版的光盘或官方的文件服务器(或镜像站点);    http://mirrors.aliyun.com    http://mirrors.sohu.com,    http://mirrors.163.com(2)项目的官方站点(3)第三方组织制作的rpm包:    (a)EPEL:    (b)搜索引擎查找        http://pkgs.org        http://rpm.pvone.net        http://rpmfind.netstat(4)自己动手,丰衣足食建议:检查其合法性(完整性)    来源合法性:    程序包的完整性;
6.CentOS系统上rpm命令管理程序包

命令介绍

安装、升级、卸载、查询和校验、数据库维护rpm命令:rpm [OPTION] [PACKAGE_FILE]    安装:-i,--install    升级:-U,--update,-F,-freshen    卸载:-e,--erase    查询: -q,--query    校验:-V ,--verify    数据库维护:--builddb,--initdb

rpm包安装

rpm {-i|--install} [install-options] PACKAGE_FILE ...        rpm -ivh PACKAGE_FILE...        GENERAL OPTIONS:        -v:verbose,详细信息              -vv:更详细的输出                [install-options]            -h:hash marks输出进度条;每个#表示2%的进度                --test:测试安装,检查并报告依赖关系及冲突消息等;                     --nodeps:忽略依赖关系,不建议使用,安装后会不能使用;                     --replacepkgs:重新安装:rpm -ivh --replacepkgs zsh-5.0.2-7.el7.x86_64.rpm                       --nodigest:不检查包的完整性信息                      --nosignature:不检查包的来源信息及包的完整性注意:rpm可以自带脚本;    四类: --noscripts        preinstall:安装过程开始之前运行的脚本,%pre: --nopre        postinstall:安装过程完成以后运行的脚本:%post --nopost        preuninstall:卸载过程真正开始执行之前运行的脚本,%preun --nopreun        postuninstall卸载过程完成以后运行的脚本,%postun --nopostun

rpm包升级

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...rpm {-F|--freshen} [install-options] PACKAGE_FILE ...-U:升级或安装-F:升级,如果老版本不存在,则不进行安装     rpm -Uvh PACKAGE_FILE ...         rpm -Fvh PACKAGE_FILE ...         --oldpackage:降级安装;    --force:强制升级;注意:(1)不要对内核做升级操作。linux 支持多内核版本并存,因此,直接安装新版本内核;      (2)如果某源程序包的配置文件安装后曾修改过,升级时。新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件。而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

卸载:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]       [--notriggers] [--test] PACKAGE_NAME ...--llmatches:卸载所有匹配指定名称的程序包的各版本--nodos:忽略依赖关系--test:测试卸载,dry run 模式rpm -e zsh

查询

rpm {-q|--query} [select-options] [query-options] 1. [select-options]    rpm -q PACKAGE_NAME:查询指定的程序包是否已安装,及其版本;    -a,--all:查询所有已经安装过的包      -f FILE:查询指定的文件由哪个程序安装生成      -p,--package PACKAGE_FILE:用于实现对未安装的程序包做查询操作。       --whatprovides CAPABILITY:查询指定的CAPABILITY(能力)由哪个程序包提供             bin]# rpm -q --whatprovides config\(bash\)        bash-4.1.2-40.el6.x86_64        rpm -q --whatprovides zprof.so'()(64bit)'    --whatrequires CAPABILITY:查询指定的CAPABILITY(能力)被哪个包所依赖;2.[query-options]     --changlog:查询      -l,--list :安装生成的所有文件列表      -i,--info :查询程序包相关的information,版本号,大小,所属的组,等      -c,--configfiles:查询指定的程序包的配置文件      -d,--docfiles:查询指定的程序包提供的帮助文档        --provides:列出指定的程序包的所有CAPABILITY(能力)              bin]# rpm -q --provides bash        config(bash) = 4.1.2-40.el6        bash = 4.1.2-40.el6        bash(x86-64) = 4.1.2-40.el6    -R,--requires:查询指定的程序包的依赖关系;      --scripts:查看程序包自带的脚本片段;用法:    -qi PACKAGE:信息,qf FILE 文件由哪个包安装来,qc PACKAGE配置文件,ql PACKAGE:安装生成的文件列表,-qd,提供的帮助文档qpi,qpl,qpc...查询未安装的程序包的信息。

校验:

rpm -V zsh #校验rpm安装后有没有被修改过   S file Size differs   M Mode differs (includes permissions and file type)   5 digest (formerly MD5 sum) differs   D Device major/minor number mismatch   L readLink(2) path mismatch   U User ownership differs   G Group ownership differs   T mTime differs   P caPabilities differ    [root@CentOS6 bin]# rpm -V zsh    S.5....T.  c /etc/zshrcrpm {-V|--verify} [select-options] [verify-options]

包来源合法性验证和完整性验证:

来源合法性验证:    数字签名:完整性验证rpm --import /media/cdrom/RPM-GPG-KEY-GentOS-7导入密钥信息rpm -K zsh-5.0.2-14.el7.x86_64.rpm获取并导入信任的包制作者的密钥:    对于CentOS发行版本来说:rpm --import /etc/pki/rpm-gpg/RPM-KEY-CentOS-7验证:    (1)安装此组织签名的程序时,会自动执行验证    (2)手动过验证:rpm -K PACKAGE_NAME

数据库重建:

rpm管理器数据库路径:/var/lib/rpm    查询操作:通过此处的数据库进行;    获取帮助:    CentOS6:man rpm    CentOS 7:man rpmdbrpm {--initdb|--rebuilddb}[-v] [--dbpath DIRECTORY] [--root DIRECTORY]    --initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作    --rebuilddb  :重新构建,通过读取当前系统上所有已安装过的程序包进行重新创建;
0