rpm,yum及源码安装详解

服务器

浏览数:111

2019-10-13

AD:资源代下载服务

RPM:包统一命名规则,RPM 二进制包的命名需遵守统一的命名规则,用户通过名称就可以直接获取这类包的版本、适用平台等信息。

RPM 二进制包命名的一般格式如下:

包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名

例如,RPM 包的名称是httpd-2.2.15-15.el6.centos.1.i686.rpm,其中:

httped:软件包名。这里需要注意,httped 是包名,而httpd-2.2.15-115.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名是不同的,在某些 Linux 命令中,有些命令(如包的安装和升级)使用的是包全名,而有些命令(包的查询和卸载)使用的是包名,一不小心就会弄错;

2.2.15:包的版本号,版本号的格式通常为主版本号.次版本号.修正号;

15:二进制包发布的次数,表示此 RPM 包是第几次编程生成的;

el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x(Red Hat Enterprise Unux) 和 CentOS 6.x 上使用;

centos:表示此包适用于 CentOS系统;

i686:表示此包使用的硬件平台;

语法:

rpm (选项) 包名

参数:

-a:查询所有套件;

 -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;

 -c:只列出组态配置文件,本参数需配合”-l”参数使用;

 -d:只列出文本文件,本参数需配合”-l”参数使用;

 -e<套件档>或–erase<套件档>:删除指定的套件;

 -f<文件>+:查询拥有指定文件的套件;

 -h或–hash:套件安装时列出标记;

 -i:显示套件的相关信息;

 -i<套件档>或–install<套件档>:安装指定的套件档;

 -l:显示套件的文件列表;

 -p<套件档>+:查询指定的RPM套件档;

 -q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;

 -R:显示套件的关联性信息;

 -s:显示文件状态,本参数需配合”-l”参数使用;

 -U<套件档>或–upgrade<套件档>:升级指定的套件档;

 -v:显示指令执行过程;-vv:详细显示指令执行过程,便于排错。

–help  在线帮助。

–httpproxy<主机名称或IP地址>  指定HTTP代理服务器。

–httpport<通信端口>  设置HTTP服务器或代理服务器使用的通信端口。

–ignorearch 不验证套件档的结构正确性。

–ignoreos  不验证套件档的结构正确性。

–ignoresize 安装前不检查磁盘空间是否足够。

–includedocs 安装套件时,一并安装文件。

–initdb  确认有正确的数据库可以使用。

–justdb  更新数据库,当不变动任何文件。

–nobulid  不执行任何完成阶段。

–nodeps  不验证套件档的相互关联性。

–nofiles  不验证文件的属性。

–nogpg  略过所有GPG的签名认证。

–nomd5  不使用MD5编码演算确认文件的大小与正确性。

–nopgp  略过所有PGP的签名认证。

–noorder  不重新编排套件的安装顺序,以便满足其彼此间的关联性。

–noscripts 不执行任何安装Script文件。

–notriggers 不执行该套件包装内的任何Script文件。

–oldpackage 升级成旧版本的套件。

–percent  安装套件时显示完成度百分比。

–pipe<执行指令>  建立管道,把输出结果转为该执行指令的输入数据。

–prefix<目的目录>  若重新配置文件,就把文件放到指定的目录下。

–provides  查询该套件所提供的兼容度。

使用实例

实例1:安装包

命令:

rpm -ivh 需安装的包名.rpm

说明:

RPM包默认安装路径

通常情况下,RPM 包采用系统默认的安装路径,所有安装文件会按照类别分散安装到表2所示的目录中。

实例2:升级包

命令:

rpm -Uvh 包全名

实例3:卸载包

命令:

rpm -e 包全名

说明:

RPM 软件包的卸载要考虑包之间的依赖性。例如,我们先安装的 httpd 软件包,后安装 httpd 的功能模块 mod_ssl 包,那么在卸载时,就必须先卸载 mod_ssl,然后卸载httpd,否则会报错。如果卸载 RPM 软件不考虑依赖性,执行卸载命令会包依赖性错误。

RPM 软件包的卸载命令支持使用“-nocteps”选项,即可以不检测依赖性直接卸载,但此方式不推荐大家使用,因为此操作很可能导致其他软件也无法征程使用。

如:rpm -e –nocteps 包全名

实例4:包查询

命令:

rpm -q 包全名

rpm -qa           #查找系统里的所有包

rpm -qi 包名    #查询软件包的详细信息

rpm -ql 包名    #列出软件包所有文件的安装目录

yum,全称“Yellow dog Updater,Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像Windows 系统上可以通过360 软件管家实现软件的一键安装、升级和卸载,Linux redhad系统也提供有这样的工具,就是yum。

RPM 二进制包安装软件,这两种方法都比较繁琐,需要手动解决包之间具有依赖性的问题,尤其是库文件依赖

语法

yum [options][command][package…]

options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为”yes”),-q(不显示安装的过程)等等。

command:要进行的操作。

package:操作的对象。

常用命令command

1.列出所有可更新的软件清单命令:yumcheck-update

2.更新所有软件命令:yum update

3.仅安装指定的软件命令:yum install<package_name>

4.仅更新指定的软件命令:yum update<package_name>

5.列出所有可安裝的软件清单命令:yum list

6.删除软件包命令:yum remove<package_name>

7.查找软件包命令:yum search <keyword>

8.清除缓存命令:

yum clean packages: 清除缓存目录下的软件包

yum clean headers: 清除缓存目录下的 headers

yum clean oldheaders: 清除缓存目录下旧的 headers

yum clean, yum clean all (= yum clean packages; yum cleanoldheaders) :清除缓存目录下的软件包及旧的headers

实例

实例5:安装 pam-devel

命令:yuminstall pam-devel

实例6:移除 pam-devel

命令:yumremove pam-devel

说明:

使用 yum 卸载软件包时,会同时卸载所有与该包有依赖关系的其他软件包,即便有依赖包属于系统运行必备文件,也会被 yum 无情卸载,带来的直接后果就是使系统崩溃。除非你能确定卸载此包以及它的所有依赖包不会对系统产生影响,否则不要使用 yum 卸载软件包。

实例7:利用 yum 的功能,找出以 pam 为开头的软件包的安装情况

yum list pam*

实例8:从 yum 源服务器上查找与关键字相关的所有软件包samba

yum search samba

linux下从源代码编译安装软件的一般步骤

1.下载并解压文件

如果下的压缩文件的后缀是

tar.gz 解压用  tar-xzvf xxx.tar.gz

tar.b2 解压用  tar-xjvf xxx.tar.b2

tar 解压用  tar -xvfxxx.tar

2.配置安装路径

在/usr/local/下创建放置将要安装的软件目录

mkdir /usr/local/newApp

cd 到源代码所在的文件夹,配置安装路径

./configure –prefix=/usr/local/newApp

(./configure–prefix=/usr/local/指定安装根目录 .–with指的是安装本文件所依赖的库文件。/configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,生成makefile文件)

3.编译源代码

make

如果是多核cpu可以用 make -j来加快编译速度

4.安装

make install

这个过程可能需要root权限

5.删除源代码以节省磁盘空间

rm -rf xxx

第3和第4步可以组合成  make&&makeinstall

当然你也可以把1到4步用一组合命令来执行

一般来说时间花费最长的是在make阶段,比如我从源代码安装boost用了10+分钟,从源代码make gcc4.8的源代码用好几个小时,当然这make的时间也要看机子的配置而定。

观注快乐程序员公众号,每日分享一点小知识。爱编程,爱生活!

作者:快乐程序员