Linux系统程序包管理之rpm-创新互联

Linux系统程序包管理之rpm

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的策勒网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

==============================================================================

概述:

 本章内容:软件的运行环境,软件包基础,rpm包管理,yum管理,定制yum仓库,编译安装

==============================================================================

软件运行环境

★API:Application Programming Interface (应用程序开发接口)

POSIX:Portable OS(国际标准)

  • 程序源代码--> 预处理--> 编译--> 汇编--> 链接

★ABI:Application Binary Interface(应用二进制程序接口)

Windows与Linux不兼容

  • linux:文件格式:ELF(Executable and Linkable Format)

  • win:文件格式:exe,msl PE(Portable Executable)

库级别虚拟化

  • Linux:WINE(提供模拟windows的库,运行win环境)

  • Windows:Cywin(提供linux的运行环境)

★开发语言:

系统级开发:

  • C/C++(依赖于c库);

  • httpd,nginx,vsftpd,go

应用级开发:

  • java(依赖于jvm虚拟机)

  • Python(openstack云站),php,perl(依赖于per解释器),ruby

★程序格式

c/c++

  • 源代码:文本格式的程序代码;

  • 编译开发环境:编译器,头文件,开发库

  • 二进制格式:文本格式的程序代码-->编译器-->二进制格式(二进制程序、库文件、配置文件、帮助文件)、

java/Python

  • 源代码:编译能够在其虚拟机(jvm/pvm)运行的格式;

  • 开发环境:编译器、开发库;

  • 二进制

★项目构建工具

  • c/c++:make

  • jave:maven

包管理

1.概述:

★二进制应用程序的组成部分:

  • 二进制文件、库文件、配置文件、帮助文件

程序包管理:

  • 源代码-->目标二进制格式(二进制程序、库文件、配置文件、帮助文件)-->组织成为一个或有限几个“包文件”(安装,升级,卸载,查询,校验)

程序包管理器:

  • deblan:dpt,dpkg  以".deb"后缀;

  • redhat:rpm (redhat package manager) 以 ".rpm"后缀 ;

  • S.u.S.E:rpm, ".rpm"命令

包命名格式

源代码:name-VERSION.tar.gz|bz2|xz

  • ERSION: major(主版本号).minor(次版本号).release(发行号)

rpm包命名格式:name-VERSION-release.arch.rpm

  • VERSION:major.minor.release.arc

  • release:rpm包发行号

  • changelog文档(内容修复改进的相关文档)

  • 常见的arch:

     x86: i386, i486, i586, i686

     x86_64: x64, x86_64, amd64powerpc: ppc

     跟平台无关:noarch (适用于所有平台)

Linux系统程序包管理之rpm

示例:

bash-4.2.46-19.el7.x86_64.rpm

release:release.OS

包:分类和拆包

  • Application-VERSION-ARCH.rpm:主包

  • Application-devel-VERSION-ARCH.rpm:开发子包

  • Application-utils-VERSION-ARHC.rpm:其它子包

  • Application-libs-VERSION-ARHC.rpm:其它子包

Linux系统程序包管理之rpm

包之间:可能存在依赖关系,甚至循环依赖

   自动解决依赖包管理前端工具:

  • yum:rpm包管理器的前端工具;

  • apt-get:deb包管理器前端工具;

  • zypper:suse上的rpm前端管理工具;

  • dnf:Fedora 18+ rpm包管理器前端管理工具

 2.库文件:

★查看二进制程序所依赖的库文件:

  • ldd /PATH/TO/BINARY_FILE

管理及查看本机装载的库文件:

  • ldconfig;

  • /sbin/ldconfig-p:显示本机已经缓存的所有可用库文件名及文件路径映射关系

  • 配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

  • 缓存文件:/etc/ld.so.cache

 3.包管理器:

★程序包管理器:

功能:

  • 将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

程序包的组成清单:(每个程序包单独实现)

  • RPM包内的文件清单

  • RPM的元数据,如名称,版本,依赖性,描述等

  • 安装或卸载时运行的脚本

数据库(公共)

  路径:/var/lib/rpm

  • 程序包名称及版本;

  • 依赖关系;

  • 功能说明;

  • 包安装后生成的各文件路径及校验码信息

 3.程序包的来源:

★管理程序包的方式:

  • 使用包管理器:rpm

  • 使用前端工具:yum, dnf

★获取程序包的途径:

系统开发版的光盘或官方的服务器(或CentOS镜像站点)

  • https://www.centos.org/download/

  • http://mirrors.aliyun.com

  • http://mirrors.sohu.com

  • http://mirrors.163.com

项目官方站点

第三方组织:

Fedora-EPEL:Extra Packages for Enterprise Linux

  • Rpmforge:RHEL推荐,包很全

搜索引擎:

  • http://pkgs.org;

  • http://rpmfind.net;

  • http://rpm.pbone.net;

  • https://sourceforge.net/

自己制作

  • 注意:检查其合法性:来源合法性,程序包的完整性

rpm 命令管理程序包详解

1.rpm语法及选项概述:

★rpm:

  • 安装、升级、卸载、查询和校验、数据库维护(都是通过rpm命令来实现的)

语法:

  • rpm [OPTIONS] [PACKAGE_FILE]

选项:

  • -i,--install:安装

  • -U,--update,-F,--freshen:升级

  • -e,--erase:卸载

  • -q,--query:查询

  • -V,--verify:校验

  • --builddb,--initdb:数据库维护

 2.安装及子选项:

★语法:

  • rpm {-i|--install} [install-options] PACKAGE_FILE…

选项:

  • -v:verbose 显示详细信息;

  • -vv:更详细的输出;

  • -h:hash marks 输出进度条;每个#号表示2%的进度

  • --test:测试安装,检查并报告依赖关系及冲突关系,但不真正执行安装;称为dry run(干跑)模式;

  • --nodeps:忽略依赖关系,不建议;

  • --replacepkgs:替代原来的包,重新安装(先把由原来的配置文件删除再重装)

  • --nosignature:不检查包签名信息,不检查来源合法性

  • --nodigest:不检查包完整性

     注意:rpm自带四类脚本(--noscripts)

      %pre:安装前脚本;  --nopre

      %post:安装后脚本;  --nopost

      %preun:卸载前脚本; --nopreun

      %postun:卸载后脚本;--nopostun

真正安装执行操作使用的命令

  • rpm -ivh PACKAGE_FILE

 3.升级及子选项:

★语法:

  • rpm {-U|--upgrade} [install-options] PACKAGE_FILE...

  • rpm {-F|--freshen} [install-options] PACKAGE_FILE...

注意:

  • -U(upgrade):安装有旧版程序包,则“升级”如果不存在旧版程序包,则“安装”

  • -F(freshen):安装有

  • 旧版程序包,则“升级”如果不存在旧版程序包,则不执行升级操作

★升级命令:

  • rpm -Uvh PACKAGE_FILE ...

  • rpm -Fvh PACKAGE_FILE ...

  • --oldpackage:降级(回滚操作)

  • --force: 强行升级

注意:

  • 不要对内核做升级操作;Linux支持多内核版本并存,因此,可以直接安装新版本内核;

  • 如果源程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留。

 4.卸载及子选项:

★作用:

  • 移除已安装的程序包

★语法:

  • rmp {-e|--erase}[--allmatches][--nodeps][--test] PACKAGE_NAME

注意:

  • 卸载和查询是包的名,因为包已经存在了;而安装和升级,包是不存在的,所以是包的文件路径

★简单用法

  • rpm -e PACKAGE_NAME...

选项:

  • --allmatches:卸载所有匹配名称的程序包各版本

  • --nodeps:忽略依赖关系

  • --test:测试卸载,dry run 模式

 5.查询:

★语法:

  • rpm {-q|--query} [select-options] [query-options]

[select-options] 挑选选项

  • -q PACKAGE_NAME:查询某包或某些包是否安装

  • -qa:查询已安装的所有包

  • -qf FILE:查看指定的文件由哪个程序包安装生成

  • -p PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;

  • --whatprovides CAPABILITY(能力):查询指定的CAPABILITY由哪个包所提供

  • --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

  • rpm2cpio 包文件|cpio–itv预览包内文件

  • rpm2cpio 包文件|cpio–id “*.conf”释放包内文件

[query-options] 查询选项

  • --changelog:查询rpm包的changelog(变更记录)

  • -c:查询指定的程序包的配置文件

  • -d:查询程序包安装完成后所生成的帮助文档

  • -qi,-info:程序包相关的信息,版本号,大小,所属的包组等

  • -l,--list:查看指定的程序包安装后生成的所有文件列表;

  • --scripts:查看程序包自带的脚本片断

  • -R,--requires:查询指定的程序包所依赖的CAPABILITY;

  • --provides:列出指定程序包所提供的CAPABILITY

常用组合用法:

  • -qi PACKAGE;-qf FILE;-qc PACJAGE;-ql PACKAGE;-qd PACKAGE ;-qpi PACKAGE_FILE;-qpl PACKAGE_FILE;-qpc PACKAGE_FILE,..

演示:

[root@centos7 ~]# rpm -q tree tree-1.6.0-10.el7.x86_64 [root@centos7 ~]# rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz [root@centos7 ~]# rpm -qf /etc/fstab  setup-2.8.71-6.el7.noarch [root@centos7 ~]# rpm -qc bash /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc [root@centos7 ~]# rpm -qi bash Name        : bash Version     : 4.2.46 Release     : 19.el7 Architecture: x86_64 Install Date: 2016年11月06日 星期日 18时31分30秒 Group       : System Environment/Shells Size        : 3663618 License     : GPLv3+ Signature   : RSA/SHA256, 2015年11月25日 星期三 22时14分53秒, Key ID 24c6a8a7f4a80eb5 Source RPM  : bash-4.2.46-19.el7.src.rpm Build Date  : 2015年11月20日 星期五 13时04分53秒 Build Host  : worker1.bsys.centos.org Relocations : (not relocatable) Packager    : CentOS BuildSystem <http://bugs.centos.org> Vendor      : CentOS URL         : http://www.gnu.org/software/bash Summary     : The GNU Bourne Again shell Description : The GNU Bourne Again shell (Bash) is a shell or command language interpreter that is compatible with the Bourne shell (sh). Bash incorporates useful features from the Korn shell (ksh) and the C shell (csh). Most sh scripts can be run by bash without modification. [root@centos7 ~]# rpm -qc httpd /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.modules.d/00-base.conf /etc/httpd/conf.modules.d/00-dav.conf /etc/httpd/conf.modules.d/00-lua.conf /etc/httpd/conf.modules.d/00-mpm.conf /etc/httpd/conf.modules.d/00-proxy.conf /etc/httpd/conf.modules.d/00-systemd.conf /etc/httpd/conf.modules.d/01-cgi.conf /etc/httpd/conf/httpd.conf /etc/httpd/conf/magic /etc/logrotate.d/httpd /etc/sysconfig/htcacheclean /etc/sysconfig/httpd [root@centos7 ~]# rpm -qd httpd /usr/share/doc/httpd-2.4.6/ABOUT_APACHE /usr/share/doc/httpd-2.4.6/CHANGES /usr/share/doc/httpd-2.4.6/LICENSE /usr/share/doc/httpd-2.4.6/NOTICE /usr/share/doc/httpd-2.4.6/README /usr/share/doc/httpd-2.4.6/VERSIONING /usr/share/doc/httpd-2.4.6/httpd-dav.conf /usr/share/doc/httpd-2.4.6/httpd-default.conf /usr/share/doc/httpd-2.4.6/httpd-info.conf /usr/share/doc/httpd-2.4.6/httpd-languages.conf /usr/share/doc/httpd-2.4.6/httpd-manual.conf /usr/share/doc/httpd-2.4.6/httpd-mpm.conf /usr/share/doc/httpd-2.4.6/httpd-multilang-errordoc.conf /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /usr/share/doc/httpd-2.4.6/proxy-html.conf /usr/share/man/man8/apachectl.8.gz /usr/share/man/man8/fcgistarter.8.gz /usr/share/man/man8/htcacheclean.8.gz /usr/share/man/man8/httpd.8.gz /usr/share/man/man8/rotatelogs.8.gz /usr/share/man/man8/suexec.8.gz

 6.校验:

★语法:

  • rpm {-V|--verify} [select-options] [verify-options]

常见用法:

  • rpm -V PACHAGE_NAME

当没有输出结果时表示软件包完整ok,当有相应的结果输出表明对应的内容有修改,及具体如下:

  • 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:mTimediffers 文件的创建时间已被改变;

  • P:capabilities differ

★包来源合法性验正及完整性验正:

  • 完整性验正:SHA256

  • 来源合法性验正:RSA

获取并导入信任的包制作者的秘钥

  • 对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

◆验证:

  • 安装此组织签名的程序时,会自动执行验证;

  • 手动验证:rpm -K PACKAGE_FILE

◆加密方法:

  • 公钥加密:

  • 对称加密:加密、解密使用同一密钥;

  • 非对称加密:密钥是成对儿的

      public key:公钥,公开所有人

      secret key:私钥, 不能公开

◆导入所需要的公钥:

  • rpm -K |checksigrpmfile:检查包的完整性和签名

  • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

  • CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

  • rpm -qagpg-pubkey*

演示:

[root@centos7 ~]# rpm -V httpd 遗漏   c /etc/httpd/conf.d/welcome.conf S.5....T.  c /etc/httpd/conf/httpd.conf

    

 7.数据库重建:

★rpm数据库路经:

  • /var/lib/rpm

  • 查询操作:通过此处得到数据库进行

★用法:

  • rpm {--initdb|--rebuilddb}

选项:

  • --initdb: 初始化数据库。当前无任何数据库,则新建之;当前有时不执行任何操作。

  • --rebuilddb:重新构建。无论当前存在与否,都会直接重新创建数据库。

获取帮助

  • CentOS6 man rpm

  • CentOS7 man rpmdb 

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

网页名称:Linux系统程序包管理之rpm-创新互联
网页链接:https://www.cdcxhl.com/article10/ddghdo.html

成都网站建设公司_创新互联,为您提供域名注册服务器托管建站公司标签优化小程序开发手机网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司