linux 软件管理(源代码形式、RPM、YUM)

包管理工具上,影响最大的两个系列,就是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,查看是否成功。

猜你喜欢

转载自blog.csdn.net/weicy1510/article/details/81476049