包管理工具上,影响最大的两个系列,就是debian的dpkg
包和Red Hat的rpm
包两大系列。
dpkg
系的前端工具是apt
,用于Debian系统及其衍生系统如Ubuntu系统,以及Ubuntu的衍生系统如LinuxMint。
rpm
系的影响更广,主要有两大分支:
zypper
:用于OpenSUSE系统。OpenSUSE上还有强大的yast2工具
yum
:用于CentOS系统。
dnf
:由于yum很久不维护,所以Fedora使用了yum的一个新的分支dnf
CentOS软件管理方式:源代码、RPM、YUM。
源代码形式
绝大多数开源软件都是直接以源代码形式发布;
源代码一般会打包成.tar.gz
的归档压缩文件;
程序源代码需要编译成二进制形式之后才能运行使用;
源代码形式的软件使用起来比较麻烦,但是兼容性及可控制性较好;
源代码基本编译流程:
①解压缩
tar -zxvf http-2.2.29.tar.gz
②进入解压目录
cd http-2.2.29
③查阅文件 README INSTALL
vim README
vim INSTALL
④检测配置 生成文件 configure(检查编译环境、相关库文件以及配置参数并生产makefile)
./configure --prefix=/usr/local/apache2/
⑤编译(对源代码进行编译,生产可执行文件)
make
⑥安装(将生产的可执行文件安装到当前计算机)
make install
configure实际上是一个脚本文件,在当前目录中键入"./configure",shell就会运行当前目录下的configure脚本,有一点必须说明,在整个configure过程,其实编译尚未进行,configure仅仅是做编译相关的准备工作,它主要对您当前的工作平台做一些依赖性检查,比如编译器是否安装,连接器是否存在,如果在检测的过程没有任何错误,你很幸运,configure脚本会在当前目录下生成下一步编译链接所要用到的另一个文件Makefile,当然configure支持及其丰富的命令行参数,可以键入"./configre --help"获取具体的信息。
RPM
源代码形式缺点:操作复杂、编译时间较长、极容易出现错误,优点:适应所有系统、可定制
为了方便使用,Erik Troan 和 Marc Ewing开发了 RPM (Redhat Package Manager)。
RPM通过将源代码基于特定平台系统编译为可执行文件,并保持依赖关系,来简化开源软件的安装管理。
RPM软件包命名规范:name-version-release.arch.rpm
,其中,version表示版本号,release表示对应的系统发行版,如fc18、el6,表明这个软件包是在Fedora 18、RHEL 6.x / CentOS 6.x下使用的;arch表示硬件平台,常见的有:i386、x86_64(x86_64表示64位系统)等等。
1、安装:#rpm -i name-version-release.arch.rpm
或 #rpm -ivh name-version-release.arch.rpm
i表示安装(install),v表示verbose,显示装的详细信息,h表示hash,显示安装进度百分比。
2、卸载:#rpm -e name
注意:卸载时要注意软件包的依赖关系,并不是所有的软件包都能够轻松的卸载的,但也可以强制卸载而忽略软件包的依赖关系,但是不推荐使用此方法,如:rpm -e –nodeps httpd
3、更新或者升级:#rpm -U name-version-release.arch.rpm
或 #rpm -Uvh name-version-release.arch.rpm
4、验证
软件在传播的过程中可能会被恶意的修改,所以为了安全起见现代OS都加入了对软件的验证功能。验证一般使用非对称加密算法,所以需要一个密钥,一般linux发行版都有自己的密钥,默认都已经加入。
验证已安装的的软件有没有被修改过:#rpm -V name
验证rpm文件的完整性:rpm -K name-version-release.arch.rpm
5、查询
#rpm -q name
查询是否安装了软件包name
#rpm -qi name
查询已安装的软件包的详细信息
#rpm -ql name
查询指定软件包包含的文件列表
#rpm -qf file
查询指定文件属于哪个rpm包安装进来的
#rpm -qa
查询所有已安装的rpm软件
查询未安装的软件
#rpm -qpi name-version-release.arch.rpm
查询rpm文件的信息
#rpm -qpl name-version-release.arch.rpm
查询rpm文件包含的文件
YUM
RPM 软件包形式管理软件虽方便,但需要手工解决软件包的依赖关系,很多时候安装一个软件需要先很多其他软件,手工解决时很麻烦。使用YUM可以解决这个问题。
YUM(Yellowdog Updater Modified)是一个RPM的前端程序,主要是用来自动解决RPM包的依赖关系问题。
要使用YUM,需要有一个包含各种RPM软件包的repository(软件仓库),提供软件仓库的服务器习惯称为“源”服务器。软件仓库可以基于HTTP,FTP协议或者本地文件目录提供服务,并收集目录中所有的RPM包的header(头部)信息组成repodata(仓库数据),以供YUM客户端工具查询分析。(在建立好yum服务器后,yum客户端可以通过 http、ftp方式获得软件包,并使用方便的命令直接管理、更新所有的rpm包。)
Yum仓库分为本地yum和网络yum,本地yum是将rpm软件包放在本地主机上,而网络yum则是将服务器上面的文件通过http或者ftp方式下载到本地,然后进行安装。
Yum仓库的配置文件在 /etc/yum.repos.d
目录下(.repo
文件)
格式如下:
[repo-name]
name = This is repository’s description
baseurl = file://rpm-directory
enabled = 1
gpgcheck = 1
其中,baseurl规定了仓库所在位置,可以是本地路径(file://
),也可以是网络地址(http://
or ftp://
),enabled = 1
表示启动这个配置选项=0
则不启用,gpgcheck = 1
表示启用校验功能。
一个配置文件内可以保存多个仓库的配置信息,/etc/yum.repos.d
目录下可以保存多个配置文件。
YUM命令
常用命令:
安装软件:yum install package-name
删除软件:yum remove package-name
升级软件:yum update package-name
YUM查询:
基于关键字搜索软件:yum search 关键字
列出所有的软件包(包括yum仓库中提供的和已安装的):yum list all
列出YUM仓库中提供的 / 可以更新的软件包:yum list available / updates
列出系统中已安装的软件包:yum list installed
显示软包信息:yum info packagename(等于rpm -qi)
查询目标文件被包含在哪个软件包中:yum whatprovides filename
除了yum命令行对软件包进行管理,CentOS还提供了基于yum的图形化界面的工具用来管理软件包,如添加/删除软件工具、软件更新工具等,他们均位于系统-管理菜单中。
创建本地YUM仓库
① 新建一个目录——该目录作为软件仓库,将光盘中的rpm
包(位于Packages
文件夹)保存到该目录下。
② 对该目录内的rpm软件包建立索引:createrepo -v /rpm-directory
,创建该目录下的rpm包索引,索引创建完成后,会在该文件夹下出现一个repodata
目录,里面保存了仓库索引信息。
注:第②步中的createrepo工具在默认情况下是没有安装的,需要自己手动安装(Packages中已包含createrepo安装包),安装方法如下:rpm -ivh createrepo-…….rpm
。安装createrepo需要手动解决依赖关系。(createrepo工具主要用于收集目录中RPM包文件的头信息,以创建repodata软件仓库数据(经gzip压缩的xml文件))
③在/etc/yum.repos.d
目录下 新建一个.repo
文件,其中baseurl = file:///rpm-directory
绝对路径
④清理一下yum缓存yum clean all
,列出所有的软件包yum list all
,查看是否成功。