概述
概述
如何在linux上进行软件安装?
软件安装包管理简介
源码包
- 源码包的优点
- 如果有足够的能力,可以修改源代码
- 可以自由选择所需的功能
- 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
- 卸载方便
- 源码包的缺点
- 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建。L:Linux;A:Apache;M:MySql;P:PHP),容易出现拼写错误
- 编译过程时间较长,安装比二进制时间长
- 因为是编译安装,安装过程中报错新手很难解决
二进制包(RPM包,系统默认包)
RedHat系统中是RPM包,Ubantu系统是ADT包
1. 二进制包的优点
- 包管理系统简单,只通过几个命令就可以实现包的安装,升级,查询和下载
- 安装速度比源码包快得多
2. 二进制包的缺点
- 经过编译,不再可以看到源代码
- 功能选择不如源码包灵活
- 依赖性
脚本安装包
实际安装的还是源码包和二进制包,只是把安装的步骤写成脚本,让初学者可以一键安装。
1. 优点
- 对初学者来说简单快捷/
2. 缺点
- 失去了自定义性
RPM命名管理
RPM包命名规则
- 打开我们的虚拟机
- 打开虚拟机光驱,在设置状态选择”已连接“(表示已连接电源)
3.通过浏览选择光盘然后确定。
4.
mkdir /mnt/cdrom –给光盘创建一个挂载点
mount /dev/sr0 /mnt/cdrom/ –把光盘挂到此处
cd /mnt/cdrom/ –进入光盘目录下
ls –列出此目录所有文件
cd Packages/ –进入Package目录
ls –所有的rpm包全在这里
rpm包在系统的package目录下
5.rpm包命名有一定的规则可循的
- 例如httpd-2.2.15-15.el6.centos.1.i686.rpm
- httpd软件包名
- 2.2.15软件版本号
- 15软件发布的次数
- el6.centos适合的Linux平台
- i686适合的硬件平台
- rpm包扩展名
RPM包依赖性
- 树形依赖性:a -> b -> c
- 环形依赖性: a -> b -> c -> a
- 模块依赖 : 查询网站 www.rpmfind.net
以下举例模块依赖:
例如:安装 mysql-connector-odbc会报以下错误
但输入 rpm -ivh libodbc再TAB以后不能补全,因为libodbc不是rpm文件,它只是rpm文件中的一个库文件,隐藏在其中一个rpm文件当中,那我们怎么知道它隐藏在哪个文件当中呢?我们只能通过www.rpmfind.net的搜索功能。这很不方便,rpm命令处理依赖关系很不方便,yum命令能解决这一问题,把所有的rpm模块都放在一个服务器,只要机器能连上服务器,yum会自动帮你处理其中的依赖关系。但是不是用yum命令必须需要上网呢?不,因为所有的rpm包都在Packages目录下,所以yum也可在不联网的情况下使用。在RedHat下,yum需要付费的,但CentOS不需要付费,这也是CentOS的好处。
安装命令
- 包全名
操作的包是没有安装的软件包时,使用包全名。而且要注意路径 - 包名
操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm中的数据库
例如zentity-2.28.0-1.e16.noarch.rpm
zentity-2.28.0-1.e16.noarch.rpm是包全名,zentity是包名。为什么要区分包全名和包名。如果一个软件包在Linux从来没有安装的话,必须使用包全名,而且需要写绝对路径,如果不使用绝对路径,必须进入这个路径。操作已经安装的软件包时,使用包名。
- RMP安装
rpm -ivh 包全名
- -i(install) 安装
- -v(verbose)现实详细信息
- -h(hash)现实进度
- –nodeps不检测依赖性
带so.0后缀的是库文件,需查询查询网站 www.rpmfind.net这个网站才能知道此库文件属于哪个包文件。由上图可见,rpm安装十分麻烦,需要解决包之间,包和库之间的互相依赖,yum安装解决了依赖性的问题,但yum安装相对于rpm安装不能查询和校验。如果需要查询和校验rpm包,只能依赖我们后续讲的rpm包命令。命令安装可以用后面的yum来取代,但这种手工的命令安装是我们rpm包最基本的管理方法,我们应该熟练掌握。
升级与卸载
rpm -Uvh 用于包的升级,后面一定要跟包全名。因为新包对于系统来说是完全新的,所以一定要跟全名,不能跟包名。另外,如果系统已安装了此包且此包的版本为最新版本,那么会报错,如果没安装过此包又用此升级命令,则此命令的作用就相当于安装命令。
卸载命令后面只需要后面跟包名
很麻烦,装的时候有依赖性,卸的时候也有依赖性。