linux私房菜 rpm src,《鸟哥的Linux私房菜》读书笔记:软件安装:RPM,SRPM和YUM功能...

1.软件管理简介

1.1 Linux界的两大主流: RPM和DPKG

RPM(RedHat Package Manager):这个机制最早是由Red Hat开发出来的,后来发现它很好用,因此很多发行版就使用这个机制来作为软件安装的管理方式。包括Fedora, CentOS, SuSE等等知名的开发商都是在用它。通过在线升级机制YUM(指令yum)来解决软件的依赖问题。

DPKG(Debian Packager):这个机制最早是由Debian Linux社群所开发出来的,透过dpkg的机制,大便(debian)提供的软件就能够简单的安装起来,同时还能提供安装后的软件信息。只要是衍生于大便的其他Linux发行版大多使用 dpkg 这个机制来管理软件的,包拪B2D,Ubuntu等等。通过在线升级机制APT(指令apt-get)来解决软件依赖问题。

1.2 什么是RPM和SRPM

RPM:是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。这个机制最大的特点是将你需要的软件先编译打包成RPM机制的文件,并含有安装时依赖软件的数据库记录。安装时将软件的信息记录到RPM数据库中便于以后进行查询、验证与卸载。其优势与缺点:

因为编译完成并打包,不需要重新编译

软件信息记录在主机数据库中,方便查询、升级与卸载

软件安装环境需与打包时的环境一致或相当

需要满足软件之间的依赖

卸载时最底层的软件不可先移除,不然可能导致系统出错

SRPM(source RPM):其提供的是源代码,并没有经过编译,提供了参数配置文件(configure和makefile)。其仍然含有该软件所需要的相依赖软件说明、以及所有RPM档案所提供的数据。下载SRPM(后缀名为.src.rpm)安装时需注意:

以RPM管理方式编译,SRPM会被编译成RPM档案

将编译的RPM文件安装到系统中

1.3 RPM的优点

RPM内是已经编译过的程序和配置文件等数据,可以免去重新编译的困扰。

RPM在被安装前,会先检查系统的硬盘容量、操作系统版本等,可避免软件被错误安装;

RPM文件本身提供软件版本信息、相依属性软件名称、软件用途说明、软件包含文件等信息,便于了解软件;

RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、移除、查询和验证

1.4 RPM软件依赖的克服方式:YUM在线升级

基本大部分软件的安装都存在软件依赖问题,RPM通过YUM机制来解决软件的依赖问题。客户端有软件安装的需求时,客户端主机会向yum服务器的容器网址下载软件依赖清单列表,然后透过列表的数据和本机RPM数据库已存在的软件数据相比较,最后安装所有需要的相依赖的软件。

当客户端有升级、安装的需求时,yum会向容器要求清单的更新,等到清单更新到本机的 /var/cache/yum 里面后, 等一下更新时就会用这个本机清单和本机的RPM数据库进行比较,这样就知道该下载什么软件。接下来yum会去服务器(yum server)下载所需要的软件,然后再透过RPM的机制开始安装软件。

2.RPM软件管理程序:rpm

2.1 RPM默认安装路径:

RPM类型的文件在安装的时候,会先去读取文件内记载的设定参数内容,然后将该数据用来比对 Linux 系统的环境,以找出是否有相依赖的软件尚未安装的问题。

软件的相关信息在/var/lib/rpm/中的数据库中,保存了软件版本信息、数字签名信息。

软件中的一些文件存放路径:

/etc:配置文件

/usr/bin:可执行文件

/usr/lib:程序使用的动态链接库

/usr/share/doc:一些基本的软件使用手册与说明文件

/usr/share/man:man page文件

2.2 RPM安装:通常使用rpm -ivh指令就足够了,也保险

-i:install

-v:查看安装的细节信息

-h:查看安装进度

2.3 RPM升级与更新(upgrade/freshen):rpm -[UF]vh

-U:后面接的软件没有安装过,则系统将直接安装; 若后面接的软件有安装老版本,则系统自动更新至新版;

-F:如果后面接的软件未安装到你的 Linux 系统上,则该软件不会被安装;只有已安装至你 Linux 系统内的软件会被更新!

2.4 RPM查询(query):其查询位置在/var/lib/rpm数据库中

rpm -qa:列出所有的,已经安装在本机 Linux 系统上面的所有软件名称

rpm -q[licdR] 已安装软件名

-ql(information):列出该软件所有的文件和所在目录完整文件名;

-qi(list):列出该软件的详细信息,开发商、版本和说明等;

-qc(configuration):列出该软件的所有配置文件 (找出在 /etc/ 底下的文件名)

-qd(documentation):列出该软件的所有说明文件 (找出与man有关的文件)

-qR(Required) :列出与该软件有关的相依软件所含的档案

rpm -qf 文件名:

-qf :由后面接的文件名,找出该文件属于哪一个已安装的软件

rpm -qp[licdR] 未安装的文件名:查询某个RPM档案包含信息

-p(package):查询未安装RPM包中的信息

2.5 RPM验证与数字签名(verify/signature):

验证(Verify)的功能主要是提供系统管理员一个有用的管理机制。使用 /var/lib/rpm 底下的数据库内容来比对目前 Linux 系统的环境下的所有软件档案

rpm -V 已安装文件名:若该软件的文件被更动过,才会列出来

rpm -Va:列出目前系统上面所有可能被更动过的档案

rpm -Vp RPM文件名:列出该软件内可能被更动过的档案

rpm -Vf 文件名:列出某个文件是否被更动过

数字签名(Signature):检验软件的来源

2.6 RPM卸载和重建数据库 (erase/rebuilddb):

rpm -e 软件名:卸载软件,过程一定要由最上层往下卸载,有上层软件依赖,系统会报错提示。

rpm --rebuilddb:重建数据库。RPM文件常常会因安装/移除/升级等操作导致RPM数据库/var/lib/rpm/内的文件损坏。

3.SRPM的使用:rpmbuild

3.1 利用默认值安装SRPM文件(–rebuid/–recompile)

rpmbuild --rebuild:对SRPM编译和打包,产生RPM文档。

rpmbuild --recompile:对SRPM编译、打包、安装

3.2 SRPM使用的路径和需要的软件(gcc,make等):SRPM在编译的时候会使用到的目录:

/usr/src/XXXX/SPECS:这个目录当中放置的是该软件的配置文件

/usr/src/XXXX/SOURCES:放置的是该软件的原始文件 (*.tar.gz 的档案) 以及config这个配置文件

/usr/src/XXXX/BUILD:在编译的过程中,有些暂存的数据都会放置在这个目录当中

/usr/src/XXXX/RPMS:编译成功后,将打包完成的档案放置在这个目录当中。

/usr/src/redhat/SRPMS:与RPMS内相似,这里放置的就是 SRPM 封装的档案。有时候你想要将你的软件用 SRPM 的方式释出时, 你的 SRPM 档案就会放置在这个目录中了。

3.3 配置文件的主要内容 (*.spec):

主要的将SRPM编译成RPM的配置文件。整个档案的开头以Summary为开始,这部分的设定都是最基础的说明内容;然后每个不同的段落间,都以%来做为开头,例如%prep和%install等。

必须存在的参数项目:

Summary:软件的主要说明

Name:软件的软件名称 (最终会是RPM文件名的一部分)

Version:软件的版本(最终会是RPM文件名的一部分)

Release:版本打包的次数说明(会是RPM文件名的一部分)

License:软件的授权模式

Group:软件的发展团体名称

Url:原代码的主要官方网站

Source:软件的来源

Patch:作为补丁的patch file

BuildRoot:设定作为编译时,该使用哪个目录来暂存中间文件 (如编译过程的目标文件/链接文件等档)。

ExclusiveArch:软件的适合安装的硬件

额外设定值:

Requires:如果你这个软件还需要其他的软件的支持,那这里就必需写上来,则当你制作成 RPM后,系统就会自动的去检查,这就是依赖软件的主要来源

Prereq:这个软件需要的前驱程序为何。这里指的是程序而Requires指的是软件!

BulidRequires:编译过程中所需要的软件。Requires 指的是安装时需要检查的,因为和实际执行有关;这个BuildRequires指的是编译时所需要的软件,只有在SRPM编译成为RPM时才会检查的项目。

Packager:软件是经由谁来打包的

Vender: 发展的厂商

3.4 SRPM的编译命令(-ba/-bb):

- rpmbulid -ba xxxxx.spec编译并同时产生RPM和SRPM文件

- rpmbulid -bb xxxxx.spec仅编译成RPM文件

4.YUM在线升级机制

4.1 利用yum进行查询、安装、升级和卸载功能

查询功能:yum [list|info|search|provides|whatprovides] 参数;yum [option] [查询内容] [相关参数];

option:

y:当yum要等待用户输入时,这个选项可以提供yes的响应

–installroot=/XX/xx::将该软件安装在/XX/xx而不使用默认路径

[查询内容] [相关参数]:

search :搜寻某个软件名称或是描述 (description) 的重要关键字

list:列出目前 yum 所管理的所有的软件名称不版本,有点类似 rpm -qa

info :同上,有点类似 rpm -qai 的执行结果

provides:从文件去搜寻软件,类似 rpm -qf 的功能

安装/升级/删除功能:yum [install|update|remove] 软件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值