4.3 软件包管理

包管理器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


猜你喜欢

转载自blog.csdn.net/m30_miriam/article/details/80022334
4.3