一、介绍
现在Linux上软件的安装方式有多种,有源码包编译,软件包管理器,软件包管理器前端工具,通用二进制编译等。源码包,优点是,灵活性和可定制性比较好,缺点是,技术要求高,操作复杂,虽然网上有编译安装软件的文档,也有很多人在使用,也都是默认或者简单配置后编译的。后来出了软件包管理工具RPM,RPM软件包管理软件方便多了但是它的依赖关系让人头疼,所以又推出出了YUM解决了让人头疼的依赖关系。在这里我给大家介绍一下我学到的几种Linux软件安装方式。
二、软件包的组成
1、二进制文件
所分布的目录:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
2、库文件
所分布的目录:/lib,/usr/lib,/usr/local/lib
3、配置文件
所分布目录:/etc
4、帮助文件
手册:README INSTALL /usr/share/doc
man文档:/usr/share/man 定义man文档的配置文件定义在/etc/man.config
三、程序安装方式
1、通用二进制编译:别人编译好的,解压之后配置就能使用。
2、软件包管理器:使用rpm命令安装就可以使用了,但安装时要考虑到依赖关系。
3、软件包管理器前端工具:可以自动解决软件包的依赖关系。
4、源码包:源码包就是程序的源代码,必须通过编译器编译成二进制后才能使用,在编译时,软件所需的库文件一定要有,不然编译是不能成功的。
四、RPM软件包管理工具
RPM: RPM Package Manager
1、基本功能:
打包、安装、查询升级、校验、卸载、数据库管理(重建)
2、rpm软件包包含:
文件清单
文件存放路径
提供的功能说明
依赖关系
3、数据库:软件包信息,软件包校验
4、源程序命名方式:
name-version.tar.{gz|bz2|xz}
版本号:major.minor.release 主版本号.次版本号.发行号
5、rpm包的命名方式:
name-version-release.arch.rpm
发行号:用于标识rpm包的本身发行号,可还包含所适用的操纵做系统
例如:el6:RHEL6
arch:主机平台
例如:i386、x86_64、amd64、ppc、noarch不区分平台
注意:下载软件包时要注意区分操作系统和平台,不然可能会装不上的
6、rpm分包
主包:核心包
分包:支包
例如:bind
bind-devel
7、常用软件包下载地址:
http://mirrors,sohu.com
http://rpmfind.net
http://rpm.pbone.net
8、rpm包的验证机制:
来源的合法性、软件包的完整性
RrdHat系列的官方公钥:
/etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-
可以使用rpm命令检测软件包的合法性
rpm -K 软件包名
rpm -checksig 软件包名
9、安装软件包:rpm -i /path/to/rpm_file1 rpm_file2...
-i|--install :安装一个新的软件包
Vendor:rpm软件包的制作者
Release:发行号
Build Date:软件包编译的时间
Install Date:软件包安装的时间
Build host:在那个系统上编译成rpm包的
License:软件包的许可证
Singnature:软件包签名信息
Packager:软件包制作者
URL:软件包的链接地址
Summary:简要说明信息
Description:详细说明信息
-v :显示安装过程,-vv显示更详细的安装过程
-h :以#显示安装进度。一个#号表示2%的进度;
-ivh :通常这几个选项组合使用
--nodeps :安装时忽略依赖关系
--test :测试安装
--replacepkgs :重新安装
10、卸载软件包:
rpm -e :卸载一个软件包
11、查询软件包:rpm -q
-q|--query
-qa :查询所有已安装的软件包
rpm -qa |grep 'pattern'
-qi :查询软件包的摘要信息
-ql :查询软件包生成的文件清单:
-qf :查询某文件由那个软件包安装生成:
-qc :查询包安装生成的配置文件
-qd :查询包安装生成的帮助文件
-q --scripts :查询软件包相关的脚本
preinstall :安装前脚本
postinstall :安装后脚本
preuninstall :卸载前脚本
postuninstall :卸载后脚本
12、查询尚未安装的包的相关信息
rpm -qpi /path/to/rpm_file
-qpi
-qpl
-qpd
-c
--scripts
13、升级:
-U:升级+安装
-F:升级
-Uvh
-Fvh
--force 强制安装
--nodeps 不检查依赖关系
注意:内核不应该升级,应该尽可能安装,允许多版本并存;
14、校验:rpm -V 包名
15、rpm数据库
rpm database:/var/lib/rpm
重建rpm数据库
rpm --initdb :新建,不覆盖原有的数据库
rpm --rebuilddb :覆盖,覆盖原有数据库(常用)
16、源码格式的rpm包:rpm-name.varsion.release.src.rpm
不能直接使用,需要打包之后才能安装使用
打包rpm的包制作过程是根据spec文件来完成的。
五、YUM软件包管理
YUM:Yellow dog Updater, Modified rpm的前端工具
1、自动解决依赖关系
2、repository:仓库,yum源
判断是不是yum源
repodata/ :所在的父目录就是yum仓库,如果当前目录有repodata就说明这是一个yum仓库
RHEL6:的光盘镜像就是一个yum源
例如:把RHEL6的光盘挂载到/media/cdrom,那yum源配置文件里"baseurl=file:///media/cdrom"
3、客户端:
/etc/yum.conf //yum主配置文件
/etc/yum.repos.d/*.repo //yum配置文件
全局配置//对所有的yum仓库都生效
/etc/yum.conf
[main] //定义yum源名称 cachedir=/var/cache/yum //定义yum的缓存目录 keepcache=0 //保存缓存 debuglevel=2 //调试级别 logfile=/var/log/yum.log //日志文件所在目录 distroverpkg=redhat-release //验证rpm发行版所使用的密钥文件 tolerant=1 //忽略已安装的软件 exactarch=1 //必须做平台的精确匹配 obsoletes=1 //是否检查废弃的包 gpgcheck=1 //是否检查rpm包的签名,验证rpm包来源的合法性 plugins=1 //是否启用插件 # Note: yum-RHN-plugin doesn't honor this. metadata_expire=1h //缓存文件在本地缓存多长时间
配置文件 /etc/yum.repos.d/*.repo
[repo] name=Primary Yum repository baseurl=http://mirror.sohu.com/fedora-epel/6/i386/ //yum源网址 enabled={0|1} //{不开启|开启} gpgcheck={0|1} //{不检查|检查签名} gpgkey=file:///etc/pki/RPM-GPG-KEY-redhat-base //指定验证用的密钥文件
4、 yum命令
1)查询 yum list
list {all|installed|available} :列出软件包 {所有|已安装|可安装}
repolist {all|enabled|disabled} :列出yum源 {所有|开启的|未开启的}
info packag_name :查看软件包信息,也可以查询未安装的软件包的信息
groupinfo "group_name" :查询包组的信息
clean {packages|metadata|expire-cache|rpmdb|plugins|all} :清除yum缓存
makecache :生成yum缓存
2)安装 yum install
install -package_name
yum -y :自动回答为yes
reinstall package_name ... :重新安装软件包
groupinstall "package-group_name" :安装一个包组
安装开发组:编译软件包时基本就没有问题了,建议初学者在编译软件之前把这几个包组装上
RHEL6,CentOS6: "Development tools"、"Server Platform Development" "Desktop Platform Development" RHEL5, CentOS5: "Development tools"、"Development Libraries"
localinstall :安装本地软件包;rehl6上直接用yum install就可以了
--nogpgckeck :安装时不对软件包做验证
3)升级 yum update
check-update :查询可升级的包
update package_name :升级软件包
update-to :升级到指定的版本
groupupdate "group_name" :升级包组
4)卸载 yum remove
remove package_name ... :卸载一个软件包
groupremove "group_name" :卸载一个包组
我总结的软件包管理rpm和yum的知识就这些了,如有不足之处请多提宝贵意见,谢谢!