一、概述
现在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
三、程序安装方式
1、通用二进制编译:别人编译好的,解压之后配置就能使用。
2、软件包管理器:使用rpm命令安装就可以使用了,但安装时要考虑到依赖关系。
3、软件包管理器前端工具:可以自动解决软件包的依赖关系。
4、源码包:源码包就是程序的源代码,必须通过编译器编译成二进制后才能使用,在编译时,软件所需的库文件一定要有,不然编译是不能成功的。
这里着重说一下源码包安装,由于一些特殊的个性化设置,我们需要源码包安装一个服务,我觉得它的基本思路就是遇到问题解决问题,当我们源码包安装一个服务时,最常见的问题就是缺少基础程序,也就是库文件(devel包),这时我们通过yum逐条击破安装,直到服务安装成功即可(不在报错)
源码包安装的基本流程:解压→进入目录→./configure --prefix=自己定义的安装路径(这个时候通常就是之前说的遇到问题的时候,提示缺少环境、依赖关系,用yum逐条安装即可)→make→make install
四、RPM软件包管理工具
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
8、安装软件包:rpm -i /path/to/rpm_file1 rpm_file2…
-i|–install :安装一个新的软件包
-v :显示安装过程,-vv显示更详细的安装过程
-h :以#显示安装进度。一个#号表示2%的进度;
-ivh :通常这几个选项组合使用
–nodeps :安装时忽略依赖关系
–test :测试安装
–replacepkgs :重新安装
9、卸载软件包: rpm -e
10、查询软件包: rpm -q
-qa :查询所有已安装的软件包
rpm -qa |grep 'pattern'
-qi :查询软件包的摘要信息
-ql :查询软件包生成的文件清单:
-qf :查询某文件由那个软件包安装生成:
-qc :查询包安装生成的配置文件
-qd :查询包安装生成的帮助文件
-q –scripts :查询软件包相关的脚本
preinstall :安装前脚本
postinstall :安装后脚本
preuninstall :卸载前脚本
postuninstall :卸载后脚本
11、升级
-U:升级+安装
-F:升级
-Uvh
-Fvh
–force 强制安装
–nodeps 不检查依赖关系
注:内核不应该升级,应该尽可能安装,允许多版本并存
12、rpm数据库
rpm database:/var/lib/rpm
重建rpm数据库
rpm –initdb :新建,不覆盖原有的数据库
rpm –rebuilddb :覆盖,覆盖原有数据库(常用)
五、YUM软件包管理
1、自行解决依赖关系(比所有方法都方便,yum是Linux最佳实践)
2、repository:仓库,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仓库都生效
# 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命令
//查询、清除建立缓存 #yum list {all|installed|available} :列出软件包 {所有|已安装|可安装} #yum repolist {all|enabled|disabled} :列出yum源 {所有|开启的|未开启的} #yum clean all :清除yum缓存 #yum makecache :生成yun缓存 //安装 #yum install package_name :安装软件包,添加 -y可以自动回答yes #yum reinstall package_name … :重新安装软件包 #yum groupinstall "package-group_name" :安装一个包组 //升级 #yum update package_name :升级软件包 #yum check-update :查询可升级的包 #yum update-to :升级到指定的版本 #yum groupupdate "group_name" :升级包组 //卸载 #yum remove package_name … :卸载一个软件包 #yum groupremove "group_name" :卸载一个包组
总结了一下Linux下软件包安装方式,欢迎提问留言。
原文地址:http://blog.51cto.com/13210651/2116545