Linux要实现一定功能(看电影、聊天等)就需要有软件支持,若没有软件的支持Linux能实现的功能就很少。当然Linux主要软件都是给服务器用的,个人软件应用起来相对不如Windows好。但服务器端讲很多软件无论是稳定性还是安全性等都比Windows要好。
一、Linux可以使用和安装的软件类型
注:
Windows所有软件包(.exe程序)都不能直接在Linux中安装使用。
优点:Windows中大量病毒和木马Linux都不可识别,即使上传到Linux也是一个无法执行不认识的普通文件
缺点:所有软件包都必须对Linux做单独开发
1、源码包
(1)是指C语言源代码直接开放给用户的包(Linux的开源特点)
(2)由于Linux是用c语言写的,所以源码包绝大部分都是C语言写的
(3)优点:
- 开源,有能力可以对源代码修改
- 可以自由选择所需功能。如Windows能选择的只有安装位置
- 软件时编译安装,所以更适合自己的系统,更加稳定也效率更高
- 卸载方便(没有卸载程序直接删除源码包的安装目录,Windows不可以,只能通过卸载程序)
(4)缺点
- 安装步骤较多,安装较大软件集合时,容易出现拼写错误等。
- 编译时间较长(比较二进制包的安装时间)
- 因为是编译安装,安装过程一旦报错新手很难解决
·脚本安装包:源码包经过再开发(添加安装界面)的源码包,不需要手动安装,会出现类似于Windows的安装界面,适合初学者。
注:用源码包安装软件会很慢(需要先编译)且经常报错,所以不适合初学者因此现在的系统安装不再是源代码包而是二进制包
2、二进制包(RPM包、系统默认包)
(1)二进制包是经过源代码包编译之后产生的01机器语言包
(2)二进制包无法直接看到源代码
(3)Windows大多数安装包都是二进制包,只不过格式不一样,Windows是.exe格式,Linux是.rpm格式。虽都是二进制包但不能通用
(4)优点:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询、卸载等
- 安装速度快
(5)缺点:
- 经过编译产生,无法直接看到源代码,违背了Linux的开源精神
- 功能选择不如源代码包灵活(想要的功能可直接对源码包编译,但是二进制包就不可以)
- 有依赖性,安装某个软件包时可能有一定要求(如安装a包要求先安装b包,卸载a包要先卸载b包等)
二、RPM软件包管理 -RPM命令管理
1、RPM包命名规则
注:
(1)注意区分包名(httpd)和包全名(http—.rpm)
(2)Linux是没有拓展名概念的,但是这么写.rpm是为了能让管理员清晰的知道这是一个安装包
2、RPM包依赖性
- 树形依赖:a->b->c(装a要b装b要c)
- 环形依赖:a->b->c->a(同时安装可解决)
- 模块依赖:某个包安装时一类另一个包中的某模块(只要安装该模块所在的包就可以解决模块依赖问题)模块依赖查询网站(有网站可用);无网络情况-yum在线管理
由于依赖性的存在所以手工安装RPM包极其复杂,烦人!–而使用yum命令可以很好的解决依赖性问题
3、包名和包全名
(1)包全名:操作的包是没有安装的软件包时使用。而且要注意路径,让Linux能找到安装包。—安装、升级使用
(2)包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm中的数据库。—查询、卸载等情况
4、RPM安装
注:
(1)安装时要在软件包所在的当前目录下安装。
(2)安装操作的是为安装包,所以要使用包全名。
(3)如不在当前目录安装,需使用绝对路径。
命令:
rmp -ivh 包全名
其中:
- -i(install):安装
- -v(verbose):显示详细信息
- -h(hash):显示安装进度
- –nodeps:比监测依赖性
ivh是一个习惯性用法;nodeps一般不用
5、RPM升级
命令:
rmp -Uvh 包全名
其中:
- -U(upgrade):升级
升级需要有更高版本的包
6、卸载
注:
卸载命令不需要一定在软件包所在目录下执行,且只跟包名即可。因为卸载搜索后台数据库,在任何位置都能找到。
命令:
rmp -e 包名
其中:
- -e(erase):卸载
- –nodeps:不检查依赖性
注:包名就行
7、RPM查询方式
注:
RMP安装和卸载使用yum更为简单,因为会自动解决依赖性。
但是查询只能通过RPM命令查询。yum查不了很多信息。
无论使用RPM手工安装或是yum安装都可以通过RPM查询方式进行查询。
(1)查询是否安装
注:
查询命令不需要一定要在安装包所在目录下执行。
①
命令:
rmp -q 包名
查询包是否安装
其中:
- -q(query):查询
②
命令:
rmp -qa 包名
其中:
- -a(all):查询所有已安装包
(2)查询软件包详细信息
命令:
rmp -qi 包名
其中:
- -i(information):查询软件信息
- -p(package):查询未安装包信息 使用包全名(安装位置是组建包时决定是)
(3)查询包中文件安装位置
根据包查文件。
命令:
rmp -ql 包名
其中:
- -l(list)
- -p(package):查询未安装包信息 使用包全名(安装位置是组建包时决定是)
(4)查询系统文件属于哪个RPM包
根据文件查包。
命令:
rmp -qf 系统文件名
其中:
- -f(file):该文件必须是通过包安装产生的才能查询。
(5)查询软件包的依赖性
查询该包打算依赖哪个包。
命令:
rmp -qR 包名
其中:
- -R(Require):查询软件信息
- -p(package):查询未安装包信息 (必须在软件包所在目录)
8、RPM包校验
校验:已安装的RPM包记录下特征,需要的时候将现在的文件和原文件做比较看是否有变化,依此判断是否有修改,从而判断系统文件是否被人修改(有的是自己修改的)
命令:
rmp -V 包名
其中:
- -V(verify):校验指定RPM包中的文件
其中前8个字符代表哪些内容被修改。
c表示文件类型
最后是文件绝对路径
9、RPM包文件提取
从RMP包中不安装所有文件只提取指定文件。—使用情况:修复五彩做,如误删了系统中某文件,提取该文件覆盖原路径安装即可。
命令:
rmp2cpio 包全名 | cpio -idv .文件绝对路径
eg:rmp2cpio /mnt/cdrom/Package/包全名| cpio -idv ./bin/ls
该命令分为两部分:
①|前:将rpm2cpio命令将包转变成cpio格式
②|后:用cpio命令提取包中的文件到当前目录
其中:
- 文件绝对路径前的“.”是将文件提取到当前目录下
- 2:(to)从rpm包格式转换为cpio格式
- cpio命令:用于创建软件档案文件(向档案中写入文件)和从档案文件中提取文件
- cpio命令格式:cpio 选项(-i[copy-in模式,还原]/-d[还原时自动创建目录]/-v[显示还原过程]) <文件|设备>
三、RPM软件包管理 -yum命令管理
yum读做【ya mu】
Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
Yum和RPM手工命令管理都是RPM包管理,并没有Yum包这个概念。区别是Yum是自动的在线安装,好处是解决依赖性
1、IP地址配置和网络Yum源
yum管理是从指定服务器(网络Yum源)下载,所以必须要有网络或者自己手动配置一个本地yum源(不需要网络,后面会讲如何手动配置)。
(1)IP地址配置
注:
(2)网络yum源
2、Yum命令
只要Linux能接入互联网,默认网络yum源不做任何修改,yum命令就可以直接执行。
(1)查询
yum list
yum search 关键字(包名)
(2)安装
yum -y install 关键字
(3)升级
yum -y update 关键字(包名)
注:不包含包名则更新服务器所有软件,包括服务器内核。有可能会导致服务器崩溃
(4)卸载
yum -y remove 关键字(包名)
注:卸载软件会卸载其依赖的所有包,但有的包会被其他包依赖从而出现问题。尽量不用yum卸载。
3、yum软件组
既然是软件包组,说明包含不只一个软件包,通过 yum 命令可以查询某软件包组中具体包含的软件包,通过 yum 命令可以查询某软件包组中具体包含的软件包,命令格式如下:
yum groupinfo 软件组名
#查询软件组中包含的软件
(1)yum grouplist(列出所有可用的软件组列表)
(2)yum groupinstall 软件组名(安装指定软件组,软件组名可通过上述查询得到,若软件组名有空格则软件组名用双引号括起来)
(3)yum groupremove 软件组名(卸载指定软件组)
安装某个软件组比安装某软件包方便的多
4、光盘Yum源搭建
可以不通过网络
(1)挂载光盘
(2)让网络yum源文件失效
(3)修改光盘yum源文件
四、源码包管理
1、源码包和RPM包的区别
(1)区别:安装位置的不同
RPM不需要指定安装位置,会安装在默认位置,而源码包需要手动指定安装位置。
(2)RPM包安装位置
(3)源码包安装位置
源码包一般安装在指定位置中,一般是/user/local/软件名/
user:Unix的系统资源目录
local:系统指定的安装外来软件的目录
(4)安装位置不同带来的影响
① 由于RPM包安装会安装在默认安装目录下,而源码包安装会在指定位置。而service搜索的是默认路径。因此service这种类似的系统服务管理命令只能管理RPM包安装的服务。
② 源码包安装的服务只能用绝对路径命令管理(绝对路径+start)
第二个是简化命令,第一个是绝对路径命令
2、源码包安装过程
五、脚本安装包
注:
(1)脚本安装包不是一种独立的软件安装包类型
(2)一般讲脚本安装所安装的都是源代码包
(3)由于源码包的安装比较复杂,因此认为的将安装过程写成了自动安装的脚本,只要执行脚本,定义简单参数就可以完成安装。
(4)类似于Windows下软件的安装方式。
(5)常见的脚本安装包是一些硬件驱动,而个人软件的脚本安装包很少。