《鸟哥的Linux私房菜 基础学习篇(第四版)》 第22章 软件安装RPM, SRPM 与YUM 笔记...

Linux 界软件安装方式最常见的有两种:
dpkg:这个机制最早是由 Debian Linux 社群所开发出来的,透过 dpkg 的机制, Debian 提供的软件就能够简单的安装起来,同时还能提供安装后的软件信息,实在非常不错。 只要是衍生于 Debian 的其他 Linux distributions 大多使用 dpkg 这个机制来管理软件的, 包括 B2D, Ubuntu 等等。
RPM:这个机制最早是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 distributions 就使用这个机制来作为软件安装的管理方式。包括 Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚。

distribution 代表        软件管理机制        使用指令        在线升级机制(指令)
Debian/Ubuntu        DPKG            dpkg            APT (apt-get)
Red Hat/Fedora        RPM            rpm, rpmbuild    YUM (yum)


RPM

全名是『 RedHat Package Manager 』。RPM 的扩展名:xxx.rpm
RPM 是一个将你要安装的软件先编译过并且打包成为 RPM 机制的包装文件。透过包装好的软件里头默认的数据库记录, 记录这个软件要安装的时候必须具备的相依属性软件。当你在你的 Linux 主机进行安装操作时, RPM 会先依照软件里头的数据查询 Linux 主机的相依属性软件是否满足, 若满足则予以安装,若不满足则不予安装。安装的时候还将该软件的信息整个写入 RPM 的数据库中,以便未来的查询、验证与反安装。
RPM文件安装时的要求:
1. 软件文件安装的环境必须与打包时的环境需求一致或相当;
2. 需要满足软件的相依属性需求;
3. 反安装时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题。

rpm文件名的意义,例如rp-pppoe-3.11-5.el7.x86_64.rpm :
rp-pppoe    -3.11            -5        .el7.x86_64        .rpm
软件名称    软件的版本信息        释出的次数    适合的硬件平台        扩展名

RPM 的优点:
 RPM 内含已经编译过的程序与配置文件等数据,可以让用户免除重新编译的困扰;
 RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装;
 RPM 文件本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件;
 RPM 管理的方式使用数据库记录 RPM 文件的相关参数,便于升级、移除、查询与验证。

RPM 的缺点:
 由于 RPM 文件是已经编译、包装好的数据,无法再修改参数配置文件,所以,该软件文件几乎只能安装在原本默认的硬件与操作系统版本中。
 有些软件是有相关性的,如果RPM软件安装时,却找不到它相关的前驱软件,此时就无法安装。


SRPM    

Source RPM 的意思。RPM 文件里面含有原始码。SRPM 的扩展名格式是***.src.rpm。
SRPM文件的作用:可以通过修改SRPM 内的参数配置文件,重新编译产生能适合我们 Linux 环境的 RPM 文件。
SRPM文件的安装:
 先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 文件;
 然后将编译完成的 RPM 文件安装到 Linux 系统当中

/root/rpmbuild/:
specs        这个目录当中放置的是该软件的配置文件,例如这个软件的信息参数、设定项目等等都放置在这里;
suorces    这个目录当中放置的是该软件的原始文件 (*.tar.gz 的文件) 以及 config 这个配置文件;
build        在编译的过程中,有些暂存的数据都会放置在这个目录当中;
rpms        经过编译之后,并且顺利的编译成功之后,将打包完成的文件放置在这个目录当中。里头有包含了 x86_64, noarch.... 等等的次目录。
srpms        与 RPMS 内相似的,这里放置的就是 SRPM 封装的文件啰!有时候你想要将你的软件用 SRPM 的方式释出时, 你的 SRPM 文件就会放置在这个目录中了。

 

yum

yum 是透过分析 RPM 的标头资料后, 根据各软件的相关性制作出属性相依时的解决方案,然后可以自动处理软件的相依属性问题,以解决软件安装或移除与升级的问题。

1、yum [option] [查询工作项目] [相关参数]
选项与参数:
[option]:主要的选项,包括有:

  • -y :当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;
  • --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径

[查询工作项目] [相关参数]:这方面的参数有:

  • search :搜寻某个软件名称或者是描述 (description) 的重要关键字;
  • list :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
  • info :同上,不过有点类似 rpm -qai 的执行结果;
  • provides:从文件去搜寻软件!类似 rpm -qf 的功能!

 

2、yum [option] [安装与升级的工作项目] [相关参数]
选项与参数:

  • install :后面接要安装的软件!
  • update:后面接要升级的软件,若要整个系统都升级,就直接 update 即可

 

3、yum [remove] 软件

 

4、软件库目录为/etc/yum.repos.d/

vim /etc/yum.repos.d/CentOS-Base.repo中的数据解释:

[base]:    代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称, 否则 yum 会不晓得该到哪里去找软件库相关软件列表文件。
 name:    只是说明一下这个软件库的意义而已,重要性不高!
 mirrorlist=:  列出这个软件库可以使用的映射站台,如果不想使用,可以批注到这行;
 baseurl=:  这个最重要,因为后面接的就是软件库的实际网址! mirrorlist 是由 yum 程序自行去捉映像站台, baseurl 则是指定固定的一个软件库网址!我们刚刚找到的网址放到这里来啦!
 enable=1:  就是让这个软件库被启动。如果不想启动可以使用 enable=0 喔!
 gpgcheck=1: 还记得 RPM 的数字签名吗?这就是指定是否需要查阅 RPM 文件内的数字签名!
 gpgkey=:  就是数字签名的公钥文件所在位置!使用默认值即可

 

4.1、yum repolist all  列出目前 yum server 所使用的软件库有哪些

 

4.2、yum 会先下载软件库的清单到本机的 /var/cache/yum 里面去!当修改了网址却没有修改软件库名称 (中括号内的文字), 可能就会造成本机的列表与 yum 服务器的列表不同步,此时就会出现无法更新的问题了。

解决办法:清除掉本机上面的旧数据

yum clean [packages|headers|all]

选项与参数:

  • packages:  将已下载的软件文件删除
  • headers :  将下载的软件文件头删除
  • all:      将所有软件库数据都删除!

 

4.3、用本机的光盘来作为主要的软件来源。

[root@study ~]# vim /etc/yum.repos.d/cdrom.repo
[mycdrom]
name = mycdrom
baseurl = file:///mnt  #将你的光盘挂载到某个目录,如/mnt
gpgcheck = 0
enabled = 0
[root@study ~]# yum --enablerepo=mycdrom install software_name

 

4.4、为你的系统设置一个默认的软件仓库

[root@desktop ~]# yum‐config‐manager ‐‐add‐repo="http://server.group8.example.com/yum"

(如果地址输入错误,可以手工删除配置文件/etc/yum.repos.d/*.repo ,再次执行上述添加指令)

[root@desktop ~]# yum repolist

[root@desktop ~]# (为了避免安装软件包因外部源为经校验导致安装中断,可以通过导入校验秘钥)[root@desktop ~]# rpm ‐‐import /etc/pki/rpm‐gpg/RPM‐GPG‐KEY‐redhat‐release

 

 

5、yum 的软件群组功能

yum [群组功能] [软件群组]
选项与参数:
grouplist :列出所有可使用的『软件群组组』,例如 Development Tools 之类的;
groupinfo :后面接 group_name,则可了解该 group 内含的所有软件名;
groupinstall:这个好用!可以安装一整组的软件群组,相当的不错用!
groupremove :移除某个软件群组;

 想要让 groupinstall 预设安装好所有的可选的(optional)软件呢?那就得要修改配置文件!

[root@study ~]# vim /etc/yum.conf
.....(前面省略).....
distroverpkg=centos-release
# 找到这一行,底下新增一行!
group_package_types=default, mandatory, optional

.....(底下省略)..... 

 

6、全系统自动升级。每天在台湾时间 3:00am 网络带宽比较轻松的时候进行升级。-y:自动回答 yes 来开始下载与安装

[root@study ~]# echo '10 1 * * * root /usr/bin/yum -y --enablerepo=epel update' >
/etc/cron.d/yumupdate

 

 

纠正:
找出文件的实际路径:find /mnt -name 'pam-devel*'
在 Linux 底下也有相当优异的搜寻指令呦!通常 find 不很常用的!因为速度慢之外, 也很操硬盘!一般我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦! 为什么呢?因为 whereis 只找系统中某些特定目录底下的文件而已, locate则是利用数据库来搜寻文件名,当然两者就相当的快速, 并且没有实际的搜寻硬盘内的文件系统状态,比较省时间啦!

转载于:https://www.cnblogs.com/shoubituling/p/9015820.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值