RPM及YUM的使用
RPM包管理器:RPM is package manage
程序包的组成部分:
二进制程序:/bin, /sbin,/ /usr/bin, /usr/sbin,
库文件:/lib64, /usr/lib64
配置文件:/etc
帮助文件:manual, info
RPM包的命名:
1)分包机制 核心包testapp-version 分支包 testapp-devel-version
Version 主版本号major(重大功能改进等)-次版本号minor(小幅功能修改)-修正号release(通常是bug的修复)
例:bash-4.4.2.tar.gz
2)命名机制:
name-version-release.arch.rpm
说明:bash-4.2.4-1.el7.x86_64.rpm
bash 软件名称
4.2.4程序版本号
1.el7 其中1是软件包版本号,作者有可能不断改进,el7是适用操作系统
X86_64硬件平台,还有i386,i486,i586,i686,x86_64、ppc、sparc、alpha
RPM包的制作:rpmbuild命令,不多做介绍
RPM包管理命令:
查询功能
1.已安装软件的查询:
1)对系统中已经安装软件的查询
语法:rpm �Cq 软件名
例:
2)查看系统中所有安装的包就用rpm �Cqa,输出信息太长后面还可以管道加more分页查看
3)在所有已经安装软件中查找某个软件
语法:rpm �Cqa | grep httpd
4)查询一个已安装文件属于哪个软件包,这里用which httpd查询它的绝对路径
5)查询一个已安装软件包的信息
语法:rpm �Cqi httpd
6)查询已安装软件包的文件都安装到何处,或者是列出已安装软件包所安装的文件
语法:rpm �Cql httpd
7)查看已安装软件的配置文件
语法:rpm �Cqc httpd
8)查看已安装软件的文档安装位置
语法:rpm �Cqd httpd
9)查看已安装软件所依赖的软件包及文件
语法:rpm �CqR httpd
技巧:可以把一系列的查询条件组合起来使用,例:rpm �Cqil httpd 就一次输出信息了
2.未安装软件包的查询
1) 查看的前提是要有一个.rpm文件,对现有rpm文件的查看,其实就是在查看的基础上增加了一个p参数1)查看一个软件包的用途、版本等信息
rpm �Cqip 软件名
2)查看一件软件包所包含的文件
语法: rpm -qpl 软件包.rpm
例:
[root@dx201-lvm RPMS]# rpm -qpl lynx-2.8.5-23.i386.rpm
3)查看软件包的文档所在的位置
语法: rpm -qpd 软件包.rpm
例:
[root@dx201-lvm RPMS]# rpm -qpd lynx-2.8.5-23.i386.rpm
4)查看一个软件包的配置文件
语法: rpm -qpc 软件包.rpm
例:
[root@dx201-lvm RPMS]# rpm -qpc lynx-2.8.5-23.i386.rpm
5)查看一个软件包的依赖关系
语法: rpm -qpR软件包.rpm
例:
[root@dx201-lvm RPMS]# rpm -qpR lynx-2.8.5-23.i386.rpm
RPM包的安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i 安装
-v 显示安装进程,如果需要更详细信息可用-vv或-vvv
-h 安装时输出hash记号(#),进度条
--test 只对安装进行测试,或者用于检测依赖关系,并不实际安装
--nodeps 忽略依赖关系
--replacepkgs 重装,已安装软件再安装多一次
--prefix 将软件安装到指定路径
--force 强制安装,忽略软件及文件等冲突
例:rpm -ivh --test php-common-5.3.3-40.el6_6.x86_64.rpm 测试安装
升级:
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm
-Uvh: 如果有旧版程序包,则升级之;如果没有,则安装之;
-Fvh: 如果有旧版程序包,则升级之;如果没有,则不安装;
--oldpackage:降级,由新版本降为旧版本
--nodeps 忽略依赖关系
例:rpm -Fvh php-common-5.3.3-40.el6_6.x86_64.rpm
rpm -Uvh php-common-5.3.3-40.el6_6.x86_64.rpm
卸载:
rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
例:rpm -e php-common-5.3.3-40.el6_6.x86_64.rpm
RPM包检验、导入签名(包来源合法性验证、完整性验证)
密钥导入
语法:rpm �Cimport key
包检验
语法:rpm �CK 软件名称
YUM: Yellowdog Updater Modified
配置文件
/etc/yum.conf
定义全局配置:对所有仓库都适用的配置
/etc/yum.repos.d/*.repo
一个文件通常用于一个或一组功能相近或相关的仓库
repo文件解析(定义一个仓库指向):
[REPO_ID]唯一ID,可以在一个文件内定义多个
name= 该组的说明
baseurl= 源的地址链接
# mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE地址列表
enabled={1|0} 该配置是否生效
gpgcheck={1|0} 是否检查合法来源
gpgkey= key路径
cost= 相当与优先级,越小优先级越高
定义仓库指向可用变量:
$releasever: 引用当前系统的主版本号;
$basearch: 当前系统的基本架构i386, i486, i586, i686,x86_64
例:http://mirrors.magedu.com/CentOS/$releasever/os/$basearch
命令
安装:install 例:yum �Cy install httpd 安装httpd并且无需确认
卸载:remove
升级:updates 例:yum list updates列出已安装的可升级的软件包列表
yum check-update很像 yum list updates 但是如果有可用更新的话会返回退出代号 100。方便写 shell 脚本
查询:
info 例:yum info httpd
search KEYWORD 例:yum search httpd
list all|installed|availiable
例:
yum list 默认列出所有,和list all一样
yum list all 列出所有软件仓库里和系统已安装的包
yum list installed 列出系统已经安装的包
yum list availiable 列出所有可用的软件仓库可安装的包
yum list updates这个命令列出已安装的可升级的软件包列表
yum list recent这个命令列出最近 7 天加入的软件包列表
provides /PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成,类似rpm -qf
例:yum provides `which httpd`
重新安装:reinstall
例:yum reinstall autofs
降级:downgrade
清理缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
例: yum clear all
yum clean packages
yum clean metadata
生动生成缓存:makecache
例:yum makecache就是把服务器的包信息下载到本地电脑缓存起来
配合yum -C search xxx使用,不用上网检索就能查找软件信息
执行完 yum makecache之后,你可以用yum search subversion
和yum -C search subversion试下,看看二者速度差别有多大
包组管理:
grouplist
groupinfo groupname
groupinstall groupname
groupremove groupname
grouplist
例:yum grouplist这个操作将为你的系统在两个单独的列表中列出所有已经安装的和可用的组。
groupinfo
例:yum groupinfo groupname
该操作将显示每个组的详细信息,包括:描述信息,是必须安装还是默认或者可选安装包。
groupinstall
例:yum groupinstall groupname
安装命名组的包
groupupdate
例:yum groupupdate groupname
升级命名组的包
groupremove
例:yum groupremove groupname
删除在命名组中的任何类型的所有包,并且所有依赖于该组中的包也会被删除。
YUM技巧
1)更换其他YUM源,新增或编辑/etc/yum.repo/yumname.repo文件,更改baseurl,指向新的源即可
2)创建本地仓库,建立本地源
先创建源的本地目录mkdir /local-yum,再在其目录下创建一个放置rpm包的目录mkdir /local-yum/i386,然后拷贝rpm包到i386目录下,最后用createrepo /local-yum 生成源必须的repodata目录及文件,最后修改/etc/yum.repo.d/yumname.repo文件即可
3)利用http服务建立本地YUM源
首先安装httpd服务:yum �Cy install httpd
编辑/etc/httpd/conf/httpd.conf里的#ServerName www.example.com:80,改为ServerName localhost:80,如果有自己的域名改成域名也可以
在/var/www/html下创建目录mkdir �Cp /local-yum/i386
拷贝rpm包到/local-yum/i386下
建立源Createrepo /local-yum
启动httpd服务:server httpd start
设置开机启动httpd服务:chkconfig httpd on
修改/etc/yum.repo.d/yumname.repo文件,baseurl=http://localhost/local-yum
4)本地源如果增加了新的rpm包,需要再运行一次createrepo 源目录 以便更新配置文件
5)可以利用reposync命令同步软件到本地
例:reposync �Cp /local-yum/i386 �Crepoid=aliyun
根据repo文件中的aliyun字段的配置,把上面的软件同步到/local-yum/i386目录下