Centos 软件安装

Linux中软件包的安装方式有多种。在Centos中,我们不仅可以通过源码编译安装,还可以通过软件包管理器来安装。在此,通过源码安装、rpm、yum、dnf四种安装方式,来对比各种安装方式之间的优缺点。本次实验环境在VMvare下,用到的操作系统为Centos7.

1.编译安装

源码编译安装具有定制化的设置,我们可以在安装前自己指定参数。


例:安装httpd

下载源码包 httpd-2.4.25.tar.bz2


解压源码包

tar -xvf httpd-2.4.25.tar.bz2 

进入到解压后的目录


可以看到有 README INSTALL 这些帮助文档,内容分别为:



这些文档可以帮助我们了解和安装这个软件。

同样我们可以使用 ./configure --help 来获取帮助信息


了解这些信息后,我们就可以开始编译安装了。

第一步,配置 ./configure      此步骤是为了:

(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成Makefile

(2) 检查依赖到的外部环境,如依赖的软件包。

./configure --prefix=/test/apache24 --sysconfdir=/etc/apache2

我们在这里指定了两个参数,分别设定了软件安装目录和配置文件目录

回车后,发现报错


这是因为我们没有安装 apr-devel ,安装 apr-devel

yum install apr-devel

安装后继续,又出现错误信息


这个错误信息提示我们需要安装 apr-util-devel 

yum install apr-util-devel


安装后继续,错误信息再次出来了


这里我们要解决gcc这个依赖关系,因为安装gcc同样要解决很多依赖性关系,所以我们直接安装包组

"Development tools" 

yum groupinstall "Development Tools"


继续


这个错误信息表示我们要安装 pcre-devel

yum install pcre-devel


终于,所有的依赖关系解决了。



第二步  make    

此步骤会根据Makefile文件,构建应用程序,并将编译的文件临时放在此目录下


第三步 make install

此步骤会将构建好的程序文件复制到系统相应的路径下,完成最终的安装。



测试:

将执行命令和帮助文档的路径写入PATH

vim /etc/profile.d/env.sh

添加一段话  export PATH=/test/apache24/bin/:$PATH

使其生效   source /etc/profile.d/env.sh

将帮助文档写入 PATH  

vim /etc/man_db.conf

添加一段话     MANDATORY_MANPATH                       /app/apache24/man


开启http服务,关闭防火墙

apachectl start
iptables -F

在浏览器中输入IP地址测试


至此整个编译安装结束

可以看到,源码安装最麻烦的就是第一步,我们需要解决许多依赖性关系。当然如果我们事先知道这些依赖关系,就可以提前装入这些依赖包。

2.RPM包管理

RPM全名“RedHat Package Manager"。RPM文件已经事先编译完成,并且被打包完毕,这就很方便我们的安装和文件传输。但是RPM依然不能解决依赖性关系,这就导致一旦安装的软件的依赖性关系没有被解决,我们的软件就不会被安装。而且RPM文件是经过编译过的,所以我们要安装软件的现在的主机环境,必须和编译打包这个软件时的主机环境一样。举个例子来说,我们要在Centos 7 中安装某个软件时,就不能用Centos 6中的RPM包。

例:安装 tree

挂载光盘(光盘中有我们系统版本的大多数软件包)

mount /dev/sr0  /media/


安装 tree

rpm -ivh /media/Packages/tree-1.6.0-10.el7.x86_64.rpm 


卸载 tree

rpm -e tree


rpm 命令详解

 rpm {-i|--install} [install-options] PACKAGE_FILE
 -i 安装
 --test 仅测试,不安装
 --nodeps 忽略依赖性
 --replacepkgs 重复安装已安装过的包,文件覆盖
 --replacefiles 将要安装包的部分文件与其他已安装的包文件冲突,可继续安装
 --noscripts:不执行程序包脚本
 %pre: 安装前脚本; --nopre
 %post: 安装后脚本; --nopost
 %preun: 卸载前脚本; --nopreun
 %postun: 卸载后脚本; --nopostun
 --oldpackage 已装新的,再装旧的
 --force 等同于--replacepkgs --replacefiles --oldpackage
 -U 更新 如果装的有旧的,则升级,如果未装旧的,则安装新的。
 -F 更新 如果装的有旧的,则升级,如果未装旧的,不安装新的。
  
 -v 详细信息
 -vv 更详细信息 *
 -h 显示进度
 -ivh 安装并详细显示进度 ***
 -q 查询
 -qa 查询安装的所有包 ***
 rpm -qa scr*
 rpm -qa |grep ^scr
 -qf 查询指定的文件由哪一个rpm包提供(文件用路径表示) ***
 -qp 指定未安装的rpm包
 -q --provides 软件包名 查看指定的软件包提供了哪些能力
 可以使用-a 显示当前系统中由已安装过的包提供的所有能力
 -q --whatprovides webserver 查看指定的能力由哪一个软件包提供
 -q --whatrequires CAPABILITY 查询指定的CAPABILITY被哪个包所依赖
 -qR 软件包名 查看指定的软件包依赖哪些能力
 -qc 软件包名 查看配置文件
 -qd 软件包名 查看帮助文档
 -ql 软件包名 查看该软件包所提供的所有文件 ***
 -qi 软件包名 查看软件包的信息
 -q --scripts 软件包名 查看软件包的安装脚本
 -V 查看指定包所提供的文件是否发生过改变 ***
 S file Size differs
 M Mode differs (includes permissions and file type)
 5 digest (formerly MD5 sum) differs
 D Device major/minor number mismatch
 L readLink(2) path mismatch
 U User ownership differs
 G Group ownership differs
 T mTime differs
 P capabilities differ
  
 -K|checksig rpmfile 检查包的完整性和签名
 --nosignature: 不检查来源合法性
 --nodigest:不检查包完整性

3.YUM包管理

YUM是RPM的前端程序,它能够很好的解决软件包的依赖关系。因为Centos中会将发布的软件事先放在yum服务器中,所以当我们使用yum安装软件时,需要先找到这些yum服务器。而这些服务器可以是: http:// 、https:// 、ftp:// 、file:// 。我们可以通过修改配置文件,来选择的我们的yum源。

配置本地源:

需要修改/etc/yum.repos.d/ 下的 .repo文件

我们删除该目录下的所有文件,并创建一个自己的  .repo文件

cd /etc/yum.repos.d/

rm -rf *

touch test.repo


配置 test.repo 文件

vim test.repo


配置完成后,清空下yum缓存,并查看当前的yum源有哪些

yum clean all

yum repolist

测试安装tree

yum install tree



配置阿里云的yum源:

配置过程和本地yum仓库类似



可以看到,现在有两个yum仓库。当我们安装软件时,哪个源的软件版本较新,yum就会使用哪个进行安装。

yum命令详解:

yum
 repolist [all | enabled | disabled] 列出仓库列表
 clean all 清空缓存
 makecache 构建缓存
 list {available|installed|updates} 显示程序包
 available 只显示未安装的包
 installed 只显示已安装的,@anaconda表示安装操作系统时安装的包
 installed表示手工通过rpm、yum安装的包
 updates 只显示可更新的包
 install package1 [package2] [...] 安装软件包
 reinstall package1 [package2] [...] 重新安装
 update [package1] [package2] [...] 升级安装包
 downgrade package1 [package2] [...] 降级
 check-update 检查可用升级
 remove package1 [package2] [...] 卸载安装包
 info 查看程序包信息
 provides [whatprovides] 查看文件来自于哪个rpm包
 search packagename 以指定的关键字搜索程序包名及summary信息
 deplist packagename 查询指定的包依赖哪些能力及所提供的包
 history 参看yum历史事务记录
 undo n 卸载第n条记录所对应的安装包
 redo n 重装第n条记录所对应的安装包
 groupinstall group1 [group2] [...] 安装包组
 groupupdate group1 [group2] [...] 更新包组
 groupremove group1 [group2] [...] 卸载包组
 groupinfo group1 [...] 查看包组信息
  

4.DNF包管理

DNF用Python3编写,相比较与YUM,它的处理速度更快。最新的Centos7并没有默认安装。DNF在使用上和YUM的命令是一样的,而且它的配置文件也是直接使用YUM的。


安装所需软件包(centos7),最新的epel提供

dnf-0.6.4-2.sdl7.noarch.rpm
dnf-conf-0.6.4-2.sdl7.noarch.rpm
libcomps-0.1.8-3.el7.x86_64.rpm
python-dnf-0.6.4-2.sdl7.noarch.rpm

python2-libcomps-0.1.8-3.el7.x86_64.rpm

DNF的命令选项跟YUM一样,大家可以参考YUM来使用DNF。在Fedora 22 中,YUM已经被DNF取代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值