包管理器rpm
redhat系列的Linux系统使用的是rpm(RPM Package Manager)包管理器。
软件包有固定的命名方式:name-VERSION-release.arch.rpm。常见的arch有:x86、x86_64、i686和noarch。
一个软件的包一般分为:Application-VERSION-ARCH.rpm: 主包
Application-devel-VERSION-ARCH.rpm 开发子包
Application-utils-VERSION-ARHC.rpm 其它子包
在CentOS的光盘中放有大量由redhat审核调试过的软件包,可以使用rpm进行安装。
语法:rpm -i [选项] 软件包
[root@CentOS7 cd]# rpm -ivh /misc/cd/Packages/httpd-2.4.6-67.el7.centos.x86_64.rpm
-v:显示执行过程
-vv:显示详细的执行过程
-h:显示软件包的安装进度
第一次使用rpm安装上面“httpd”软件包时,会提示 error: Failed dependencies: 这是因为安装软件时拥有对其他软件的依赖性,而当前系统中没有所依赖的库或软件。如果非要在系统中安装缺少依赖性的软件包的话,可以使用 --nodeps 选项进行安装,或者使用:
--test: 测试安装,但不真正执行安装,即dry run模式
--replacepkgs | replacefiles:重新安装
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本; --nopre
%post: 安装后脚本; --nopost
%preun: 卸载前脚本; --nopreun
%postun: 卸载后脚本; --nopostun
来忽略在安装软件包时遇到的对用错误,使用 -q 选项可以对软件包进行查询:
语法:rpm -q [选项] 软件包
[root@CentOS7 cd]# rpm -qf /bin/tree
tree-1.6.0-10.el7.x86_64
选项:
-a: 所有包
-f: 查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
--changelog:查询rpm包的changelog
-c: 查询程序的配置文件
-d: 查询程序的文档
-i: information
-l: 查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本
--provides: 列出指定程序包所提供的CAPABILITY
-R: 查询指定的程序包所依赖的CAPABILITY
在软件包拥有新版本的时候,可以使用
-U 安装+升级 -F 仅安装 --oldpackage 降级
注意:当升级内核时, 不建议使用升级操作,因为内核可以同时存在两个内核,所以推荐使用-i进行升级。
如果在升级软件时,旧版软件的配置文件会得到保留,而新版软件的配置文件则会加上 .rpmnew 的后缀
当需要卸载软件包时,可使用 -e 选项卸载当前系统已拥有的软件。
在安装软件包前,出于系统安全考虑,应该对软件包进行校验:
语法:rpm -V|-K 软件包
-V 对软件包进行校验
-K 对软件的公钥进行校验
公钥的路径:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
使用 rpm --import 公钥 来安装公钥签名
YUM
yum是rpm工具的前端工具,可以解决软件安装时的依赖性问题,也可以定位在多个仓库中获取软件包。
语法:yum [选项] [行为]包名
[root@CentOS7 cd]# yum install httpd
参数:
install:安装rpm软件包;
reinstall:重新安装;
update:更新rpm软件包;
downgrade:降级;
remove:删除指定的rpm软件包;
list:显示软件包的信息;
search:检查软件包的信息;
info:显示指定的rpm软件包的描述信息和概要信息;
downgrade:查看指定的特性(可以是某文件)是由哪个程序包所提供;
localinstall:安装本地的rpm软件包;
localupdate:显示本地rpm软件包进行更新;
deplist:显示rpm软件包的所有依赖关系;
groupinstall:安装包组groupupdate:升级包组
grouplist:查看包组列表
groupremove:卸载包组
groupinfo:查看指定包组信息
clean all 可以清理 /var/cache/yum/$basearch/$releasever 缓存,也可以使用 makecache来创建缓存。
history 参数可以查看yum的行为历史
info 查看具体某个行为的信息
undo 取消某个行为
redo 重做某个行为
yum的配置文件存放在 /etc/yum.conf 和 /etc/yun.repo.d/*.repo 中,并且拥有严格的格式规定。
/etc/yun.repo.d/*.repo 为仓库的指向提供配置,格式为:
[repositoryID] #库名(必选)
name=Some name for this repository #库注释
baseurl=url://path/to/repository/ #包服务器(必选)
enabled={1|0} #是否启用
gpgcheck={1|0} #是否检查公钥
gpgkey=URL #公钥路径
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
包服务器的格式为:http://、https://、ftp://、file://
阿里云repo文件:
http://mirrors.aliyun.com/repo/
CentOS系统的yum源
阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
EPEL的yum源:
阿里云: https://mirrors.aliyun.com/epel/$releasever/x86_64
程序包编译
对于非开发人员,将软件的源码编译成为二进制文件时十分困难的。所以当需要手动编译源码包时,可以使用
make命令是编译C、C++的项目管理器。
在编译安装之前,先安装开发工具组 Development Tools 。
[root@CentOS6 ~]# yum groupinstall "Development Tools"
make工具使非开发人员不再关心编译的过程,而可以专心使用软件,大大提高了工作效率。编译C、C++的源码包安装需要以下三步:
1) ./configure:源码包解压后一般会有一个 .configure 的脚本文件,使用 -h 选项可以查看安装的选项。确定安装选项后,执行脚本就会开始对安装环境进行检查。
2) 执行 make 工具:对源码包进行编译。-j 选项可以指定使用的CPU数。
3) 执行 make install:将源码包按照设置安装在系统中。
自写在CentOS6.9上的apache安装脚本
#!/bin/bash
service iptables status > /dev/null
if [ $? -eq 0 ];then
service iptables stop
chkconfig iptables off
fi
SE=`getenforce`
if [ $SE != "Permissive" ];then
setenforce 0
fi
yum grouplist Development Tools | grep "Installed Groups" > /dev/null
if [ $? -ne 0 ];then
yum groupinstall "Development Tools"
fi
Package="`find /data -name "httpd-*\.tar*"`"
mkdir /data/httpd
mv $Package /data/httpd
cd /data/httpd
tar xvf httpd-2.2.34.tar.bz2
rpm -q openssl-devel > /dev/null
if [ $? -ne 0 ];then
yum install openssl-devel.x86_64
fi
cd /data/httpd/httpd-2.2.34
./configure --prefix=/app --sysconfdir=/etc/httpd22 --enable-ssl
make -j 2 && make install
/app/bin/apachectl start