软件包安装
Posted sswind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件包安装相关的知识,希望对你有一定的参考价值。
一、软件包分类
1. 源码包
优点:
开源,如果有足够的能力,可以修改源代码
可以自由选择所需的功能
软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
卸载方便
缺点:
安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
编译过程时间较长,安装比二进制安装时间长
因为是编译安装,安装过程中一旦报错新手很难解决
2. 二进制包
2.1 分类
dpkg包:是由Debian Linux所开发出来的包管理机制,通过DPKG包,Debian Linux就可以进行软件包管理。主要应用在Debian和unbuntu中
rpm包:是由Red Hat公司所开发的包管理系统。功能强大,安装、升级、查询和卸载都非常简单和方便。目前很多Linux都在使用这种包管理方式,包括Fedora、CentOS、SuSE等。该篇学习内容为rpm。
2.2 rpm包优缺点
优点:
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
安装速度比源码包安装快的多
缺点:
经过编译,不再可以看到源代码
功能选择不如源码包灵活
依赖性。有时我们会发现需要安装软件包a时需要先安装b和c,而安装b时需要安装d和e。这是需要先安装d和e,再安装b和c,最后才能安装a包
2.3 rpm包依赖性
树形依赖 a ------> b -------> c
环形依赖 a ------> b -------> c -------> a
函数库依赖
二、rpm安装
1. rpm包命名规则
httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本号
15 软件发行次数
el6 软件发行商
i686 适合的硬件平台。RPM包可以在不同的硬件平台安装,选择适合不同CPU的软件版本,可以最大化的发挥CPU性能,所以出现了所谓i386(386以上计算机都可以安装)、i586(586以上的计算机都可以安装)、i686(奔腾II以上计算机都可以安装,目前所有的CPU都是奔腾II以上,所以这个软件版本居多)、x86_64(64位CPU可以安装)和noarch(没有硬件限制)等文件名了
rpm rpm包的扩展名
包全名:如果操作的是未安装软件包,则使用包全名,而且需要注意绝对路径
包名:如果操作的是已经安装的软件包,则使用包名即可,系统会生产RPM包的数据库(/var/lib/rpm/),而且可以在任意路径下操作
2. rpm包命令安装
2.1 默认安装位置
/etc/ 配置文件安装目录
/usr/bin/ 可执行命令的安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件存放位置
2.2 rpm包安装
2.2.1 安装命令
rpm -ivh 包全名
-i install安装
-v 显示更详细的信息
-h 显示安装过程
--nodeps 不检测依赖性安装。软件时会检测依赖性,确定所需的底层软件是否安装。如果没有安装则会报错。如果我不管依赖性,想强行安装,可以使用这个选项。注意:这样不检测依赖性安装的软件基本是不能使用的,所以不建议这样做
--replacefiles 替换文件安装。如果安装软件包,可是包中部分文件已经存在,那么正常安装时候,会报错“某个文件已经存在”从而导致软件无法安装,使用这个选项可以忽视这个报错,而覆盖安装
--replacepkgs 替换软件包安装。如果软件包已经安装,此选项可以把软件包重复安装一遍
--force 强制安装。不管是否已经安装,都重新安装。就是—replacefiles和—replacepkgs的综合
--test 测试安装。不会实际安装,只是检测一下依赖性
--prefix 指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。注意:如果指定了安装路径,软件没有安装到系统默认路径中的话,系统会找不到这些安装的软件,需要进行手工配置才能被系统识别。所以rpm包我们一般都采用默认路径安装。
2.2.2 服务启动
systemctl start|stop|restart|status 服务名
2.3 rpm包升级
rpm -Uvh 包全名
-U(大写) 升级安装,如果没有安装过,系统直接安装。如果安装过的版本较旧,则升级到新版本(upgrade)
rpm -Fvh 包全名
-F 升级安装,如果没有安装过,则不会安装。必须安装有较旧版本,才能升级(freshen)
2.4 卸载
rpm -e 包名
--nodeps 不检查依赖性
-e 卸载
2.5 查询
2.5.1 查询软件包是否安装
rpm -q 包名
-q 查询(query)
2.5.2 查询系统中所有已安装的软件包
rpm -qa
rpm -qa |grep 包名
-a all所有
2.5.3 查询某个软件包的详细信息
rpm -qi 包名
-i 查询软件信息information
也可以查询还没有安装的软件包的详细信息
rpm -qip 包全名
-p 查询没有安装的软件包(package)
2.5.4 查询软件包中的文件列表
rpm -ql 包名
-l 列出软件包中所有的文件列表和软件所安装的目录(list)
也可以查询还没有安装的软件包中的文件列表和打算安装的位置
rpm -qlp 包全名
-p 查询没有安装的软件包信息(package)
2.5.5 查询系统文件属于哪个rpm包
rpm -qf 系统文件名
-f 查询系统文件属于哪个软件包(file)
不能查询手动创建的文件,
2.5.6 查询软件包所依赖的软件包
查询系统中和已经安装的软件包有依赖关系的软件包
rpm -qR 包名
-R 查询软件包的依赖性(requires)
也可以查询没有安装的软件包的依赖性
rpm -qRp 包全名
2.6 验证
2.6.1 基本命令
rpm -Va
-Va 校验本机已经安装的所有软件包
rpm -V 已安装的包名
-V 校验指定rpm包中的文件(verify)
rpm -Vf 系统文件名
-Vf 校验某个系统文件是否被修改
最前面共有8个信息内容,是表示验证内容的。文件名前面的c是表示这是个配置文件(configuration)。最后是文件名。验证内容中的8个信息的具体内容如下:
S 文件大小是否改变
M 文件的类型或文件的权限是否发生改变
5 文件MD5校验和是否改变(可以看成文件内容是否改变)
D 设备的主从代码是否改变
L 文件路径是否改变
U 文件的所有者是否改变
G 文件的所属组是否改变
T 文件的修改时间是否改变
c 配置文件 config file
d 普通文档 documentation
g 鬼 文件 ghost file 很少见,就是该文件不应该被这个RPM包包含
l 授权文件 license file
r 描述文件 read me
2.7 数字证书
刚刚的校验方法只能对已经安装的RPM包中的文件进行校验,但是如果RPM包本身就被动过手脚,那么校验就不能解决问题了。我们就必须使用数字证书验证了。
数字证书有如下特点:
首先必须找到原厂的公钥文件,然后进行安装
再安装RPM包是,会去提取RPM包中的证书信息,然后和本机安装的原厂证书进行验证
如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告
2.7.1 数字证书位置
光盘中,默认也会放在系统中。
ll /mnt/cdrom/
2.7.2 数字证书导入
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
查询
rpm -qa |grep gpg-pubkey
2.8 yum安装
2.8.1 yum源文件
yum源配置文件保存在/etc/yum.repos.d/目录中 ,文件的扩展名一定是“*. repo”。也就是说,yum源配置文件只要扩展名是“*.repo”就会生效
这个目录中有5个yum源配置文件,默认情况下CentOS-Base.repo文件生效
在CentOS-Base.repo文件中有5个yum源容器,这里只列出了base容器,其他容器和base容器类似。我们解释一下base这个容器
[base] 容器名称,一定要放在[]中
name 容器说明,可以自己随便写
baseurl 我们的yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的。如果你觉得慢,则可以改成你喜欢的yum源地址
enabled 此容器是否生效,如果不写或写成enabled=1则表示 此容器生效,写成enabled=0则表示此容器不生效
gpgcheck 如果为1则表示RPM的数字证书生效;如果为0则表示RPM的数字证书不生效
gpgkey 数字证书的公钥文件保存位置。不用修改
2.8.2 搭建本地yum源
第一步:放入CentOS安装光盘,并挂载光盘到指定位置。命令如下:
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/
第二步:修改其他几个yum源配置文件的扩展名,让它们失效,因为只有扩展名是“*.repo”的文件才能作为yum源配置文件。当然也可以删除其他几个yum源配置文件,但是如果删除了,当你又想用网络作为yum源时,就没有了参考文件,所以最好还是修改扩展名。命令如下:
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
...
第三步:修改光盘yum源配置文件CentOS-Media.repo,参照以下方法修改
以上是关于软件包安装的主要内容,如果未能解决你的问题,请参考以下文章