Linux程序包管理学习
在Linux中一些软件的安装我们用的最多的应该就是RPM包了当然还有一种安装方式是使用yum 其实yum一种rpm的管理工具它能很方便的帮我们安装我们所指定的软件也如果我们安装的软件依赖于其他的组件它能自动帮我们一并安装好,是不是非常好用,而rpm包就只能一个一个的安装了,那么rpm包是什么呢,简单来说它就是一个打包工具RPM Package Manager,把我们的软件打包成一个文件,里面包含了我们软件的所有的信息:二进制文件,库文件,配置文件,帮助文件等等.有了rpm可以让我们的软件安装更为便捷而今它也成为了一个Linux系统的公认标准了.接下来我们来说一下它的使用方式:
我们在系统上用rpm基本就是安装、卸载、升级、查询、校验、数据库维护
首先来说一下安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
一般我们可以组合使用选项常见的有–ivh
-i(表示安装)-v(显示安装过程)-h(使用#显示进度条)这样可以直观看到我们软件的安装情况.
上图中都是rmp 包,其名称规律是name-VERSION-ARCH.rpm. 名称-版本号-平台
如果安装就直接使用比如: rpm -i php-5.3.3-38.el6.i686.rpm.我们运行一下
报错了意思是没有依赖关系需要:
libbz2.so.1 is needed by php-5.3.3-38.el6.i686
libc.so.6 is needed by php-5.3.3-38.el6.i686 等等 …..
也就是我们上面提到的有因为依赖关系我们需要一个一个安装它需要谁我们就安装谁.但如果有个软件有A.B两个包我装A包提示要依赖B 包我装B包有提示我要A包怎么办这里就用到了安装选择的其他可选项: --nodeps:忽略依赖关系
.但忽略依赖关系意味着我们的软件会不正常或者不能工作所以尽量不要这么做或者事先查看安装顺序
rpm常用选项:
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-v: verbose
-vv:
-h: 以#显示程序包管理执行进度
[install-options]
--test: 测试安装
--nodeps:忽略依赖关系;
--replacepkgs: 重新安装;
--nosignature: 不检查来源合法性;
--nodigest:不检查包完整性;
--noscipts:不执行程序包脚本片断;
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrage:升级中的套件如果没有安装就安装
freeshen:升级中的套件如果没有就不安装
--oldpackage:降级;
--force: 强行升级;
查询:
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a: 所有包
-f: 查看指定的文件由哪个程序包安装生成
--whatprovides CAPABILITY:查询指由哪个包所提供;
--whatrequires CAPABILITY:查询哪个包所依赖;
[query-options]
--changelog:查询rpm包的changlog
-c: 查询程序的配置文件
-d: 查询程序的文档
-i: information
-l: 查看指定的程序包安装后生成的所有文件;
--scripts:程序包自带的脚本片断
-R: 查询指定的程序包所依赖的CAPABILITY;
--provides: 列出指定程序包所提供的CAPABILITY;
卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
校验:
rpm {-V|--verify} [select-options] [verify-options]
然后我们在看一下yum的使用:
yum在你安装一个软件的时候它可以自动解决软件的依赖关系进行安装.这里引用网络上的介绍:
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
既然是从指定的服务器也可以是本地yum源自动下载centos安装好以后默认会设置几个yum源,我们可以根据需要自行设置.这里涉及到本地系统上的2个文件分别是 /etc/yum.conf: 为所有yum提供公共配置
/etc/yum.repos.d/源名称.repo: 为yum的指向提供配置
可以是用命令 yum repolist enabled 查看目前我们打开的yum源
repo文件中内容格式:
[repositoryID]
name=名称
baseurl=url1://xxx.xxx.xxx/path/torepository
enabled=1是启用0是不启用
gpgchek=检查来源合法性0不检查1检查
我们可以按照这样的格式添加一个yum源或者可以直接新建一个repo的文件来指定新的yum源
来通过一个简单的例子来看一下yum源的搭建和使用:
我把我的centos6光盘镜像挂载到系统上我想让我的光盘也是一个yum源首先我把光盘挂载到了/test下后面就很简单了我们新建一个repo的文件放到/etc/yum.repos.d/即可
之所以光盘能做yum源最重要的是它有一个repodata目录文件他把当前目录中的所有可用rpm都”读取”了一下并生成了组织关系这样我们在安装一个组件或软件的时候他才能自动帮我们处理关系并安装好,如果想试验可用:
createrepo [options]<directory>
用这个命令创建好一个repodata的目录文件就可以当做一个yum源来使用了.
接下来我们继续创建一个文件名为Centos-local.repo
vim /etc/yum.repos.d/CentOS-local.repo
添加内容如下:
[cdrom] name=CDROM baseurl=file:///test/ gpgchek=0 |
因为本地文件所以用file:/// 三个斜杠如果是网络上的可以使用ftp或者http的地址如ftp://server/rpm
文件保存退出后我们可以使用命令 yum makecache 或者直接使用yum repolist enabled 来查看是否生效
列表里面有我们定义的CDROM后面也有包的数量说明已经构建成功了.如果我们有ftp或http服务器建立好我们可以共享到网络上面.
下面是yum的一些常用命令选项:
yum [options] [command] [package ...]
显示yum源列表:
repolist [all|enabled|disabled] 默认显示所有enabled显示当前启用的yum源列表
显示程序包:
list
yum list [all | glob_exp1] [glob_exp2] [...]
可以使用glob搜索
安装程序包:
yum install package1 [package2]
升级程序包:
update [package1] [package2] [...]
卸载指定程序包:
remove | erase package1 [package2] [...] 如果卸载指定程序包其中依赖关系的包也会被卸载.
查看程序包的infomation:
info [...]
查看程序包特性:
provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
makecache
搜索:
search string1 [string2] [...]
重新安装:
reinstall package1 [package2] [...]
降级安装:
downgrade package1 [package2] [...]
查看指定包所依赖的capability
deplist package1 [package2] [...]
查看yum事务历史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
以上就是yum的使用方法.非常方便的一个工具
在Linux上除了以上两种安装方式还有一种编译安装的方式,就是我们从网上下载的源码包,通常是打包成一个压缩文档我们下载好以后解压缩进行编译安装,这种方式也比较普遍.其中安装过程大致分为3个步骤:
1, ./configure 为安装做准备,通常软件会检查系统对软件的支持情况有些是必须的,有些则可以忽略在这个步骤可以通过选项传递参数, 指定启用特性,安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile
2, make 软件检查没有错误就开始根据makefile构建程序文件了
3, make install 安装程序
在编译安装之前最好阅读一下里面的install文件或者readme文件这样我们能了解软件的安装过程和软件的作用默认或可选的功能等等.
此文只要为加深学习内容的印象对知识总结便以后查阅
原文地址:http://syf151813262.blog.51cto.com/8722952/1689879