一、Linux软件包分类
1.1 源码包
优点:
-
开源,如果有足够的能力,
可以修改源代码
;
-
可以自由选择所需的功能;
-
软件是编译安装,所以更加适合自己的系统,更加稳定、效率更高;
-
卸载方便;
缺点
:
-
安装过程步骤较多,尤其安装较大的软件集合时(如
LAMP
环境搭建),容易出现拼写错误;
-
编译过程时间较长,安装比二进制安装时间长;
-
因为是编译安装,安装过程中一旦报错新手很难解决;
注:
对于要求效率的软件,要安装源码包版本,因为是本机编译,更具有兼容性和效率,
而
rpm
包是软件开发者提供的大众版本,可用于不注重效率的应用。
1.2 二进制包(
RPM
包)
优点:
-
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载;
-
安装速度比源码包安装快的多;
缺点:
-
经过编译,不再可以看到源代码;
-
功能选择不如源码包灵活;
-
依赖性;
1.3 yum在线安装
可以方便的解决
RPM
安装依赖文件,一条命令就可以帮用户从网上(本地也可以)找到安装包进行安装。
注:
RedHat
的
yum
是收费服务,而
CentOS
的
yum
是免费服务。
1.4 脚本安装包
所谓的脚本安装包如:
lnmp/lamp
LNMP一键安装包,就是
把复杂的软件包安装过程写成了程序脚本
,初学者可以执行脚本实现一键安装。但
实际安装的还是
源码包和二进制包
。
优点:
安装简单、快捷;
缺点:
完全丧失了自定义性;
总结:
其实
Linux
中软件包只有
源码包
和
二进制(RPM)包
两种软件安装包。
二、RPM命令管理
2.1 RPM包的来源
所有
RPM
包都在
系统光盘
的
Packages
目录中
2.2 RPM包命名规则
软件包名-软件版本-软件发布的次数-适合的Linux平台-适合的硬件平台-包扩展名
httpd-
2.2.15-15.el6.centsos.1.i686.rpm
httpd软件包名-2.2.15软件版本-15发布的次数-el6.centos适合的Linux平台-i686适应的硬件平台-rpm包扩展名,el6是redhat的企业版
2.3 RPM包依赖性
a、树形依赖:a->b->c 解决方法:从后往前安装
b、环形依赖:a->b->c->a 解决方法:放在一条命令中安装即可
c、模块依赖:库文件依赖,库也叫模块,就是linux当中的函数,它有一个典型的特征,就
是以【.so.数字】结尾,它依赖的其实是一个文件,而不是软件包。该文件藏身在某一
个软件包当中。我们只要将该文件所在的软件包安装上,该文件也就安装了。解决方法:
登录www.rpmfind.net网站,输入库文件名称查询到对应的rpm包,然后安装即可。
2.4 yum在线安装
可以方便的解决依赖文件,一条命令就可以帮用户从网上(本地也可以)找到安装包进行安装。
注:
RedHat
的
yum
是收费服务,而
CentOS
的
yum
是免费服务。
2.5 RPM安装
rpm -ivh 包全名
-i(install) 安装; -v(verbose) 详细信息; -h(hash) 进度;
2.6 RPM升级和卸载
升级命令
rpm-Uvh
包全名
(要升级到的软件版本),如果没有安装这个软件的任何版本,这个命令可以代替
rpm-ivh
。
卸载命令
rpm -e 包名(比如Httpd,不需要包全名)
这个命令不同于安装和升级,它可以在任何目录运行,原理是去
/var/lib/rpm
目录中的数据库(如
__db0
)中查找对应的软件包(已经安装过的rpm包都在这些数据库中),然后卸载。
--nodeps
这个选项不管是在安装和卸载的时候,最好都不要使用。
rpm
安装包安装的位置是由软件包开发者决定的,安装后的位置会非常凌乱,所以最好是使用
rpm-e
命令卸载。
相对于二进制安装,源码安装是指定安装目录了,卸载的时候只需要删除对应的目录就可以完全的卸载,不留一点残余。
2.7 RPM包查询
1.查询是否安装
rpm -q 包名
rpm -qa
q ==> query a ==> all
查询所有已经安装的RPM包
rpm -qa | grep httpd
grep 后跟正则表达式, find 后跟通配符
2. 查询软件包详细信息
rpm -qi 包名
rpm -qip 包全名
i ==> infomation
p ==> package : 查询
未安装包
信息
有时遇到问题, 可根据未安装包信息中所提供的网站进行查询资料
3. 查询包中文件安装位置
rpm -ql 包名
l ==> list
-p ==> package : 查询未安装包信息
可查看包作者欲将包安装的位置
RPM 包默认安装位置
4. 查询系统文件属于哪个 RPM 包
rpm -qf 系统文件名
f ==> file : 查询系统文件属于哪个软件包
该文件必须是通过 RPM 包安装的
5. 查询软件包的依赖性
rpm -qR 包名
R ==> requires : 查询软件包的依赖性
p ==> package : 查询未安装包的信息
2.8 RPM 包校验
rpm -V 已安装的包名
-V ==> (verify) : 校验指定RPM包中的文件
执行 rpm -V httpd 后, 无任何提示, 代表该文件没有被做任何修改
判断本地的
apache
与官方给出的是否一致, 从而判断是否被人修改
修改文件
/etc/httpd/conf/httpd.conf
, 在注释行添加任意内容后, 再次执行
提示 :
S.5....T. c /etc/httpd/conf/httpd.conf
验证内容中的8个信息:
S : 文件大小是否改变
M : 文件的类型或文件的权限( rwx )是否被改变
5 : 文件MD5 校验和是否改变( 可以看成文件内容是否改变 )
D : 设备的主从代码是否改变
L : 文件路径是否改变
U : 文件的属主( 所有者 ) 是否改变
G : 文件的属组是否改变
T : 文件的修改时间是否改变
验证内容中的文件类型:
c (config file) : 配置文件
d (documentation) : 普通文档
g (ghost file) :
"鬼"文件, 很少见, 就是该文件不应该被这个RPM包包含
L (license file) : 授权文件
r (read me) : 描述文件
MD5校验
作用:
用来校验文件的完整性(文件内容是否被改变)。
例如, 在官网下载的游戏, 官方会给出MD5校验码, 将下载的游戏通过专用的MD5校验工具校验后生成一份MD5校验码, 对比两份校验码是否一致, 不一致则说明,下载的文件可能丢包, 可能文件损坏, 可能被其他人动过手脚一直木马等。
三、yum在线安装
3.1 yum源文件
yum的优点:
将所有软件包放到官方服务器上,当进行
yum
在线安装时,可以
自动解决依赖性问题
。(
rpm缺点
:安装过程中,
rpm
包依赖性太强)。
redhat
的
yum
在线安装需要付费,
CentOS
不需要。
在【
/etc/yum.repos.d/
】目录中,默认有4个yum源文件,其中【
CentOS-Base.repo
】是基本
yum
源文件,如果我们能上网,那它是默认生效的,而其他的都是默认不生效的。
mirrorlist和baseurl一个是主站点,一个是辅助站点,这两个有一个就行。可以找一个163或清华大学的yum源更换。
[root@CentOS6 ~]# cd /etc/pki/rpm-gpg
[root@CentOS6 rpm-gpg]# ll
总用量 16
-rw-r--r--.
1 root root 1706 11月 27 2013 RPM-GPG-KEY-CentOS-6
-rw-r--r--. 1 root root 1730 11月 27 2013 RPM-GPG-KEY-CentOS-Debug-6
-rw-r--r--. 1 root root 1730 11月 27 2013 RPM-GPG-KEY-CentOS-Security-6
-rw-r--r--. 1 root root 1734 11月 27 2013 RPM-GPG-KEY-CentOS-Testing-6
3.2 光盘yum源搭建:
1、挂载光盘
mkdir /media或mnt/cdrom:建立挂载点;
mount /dev/cdrom /media或mnt/cdrom:挂载光盘;
2、使网络yum源失效:
cd/etc/yum.repos.d/:进入yum源目录;
mv CentOS-Base.repo CentOS-Base.repo.bak:修改Yum源文件后缀名,使其失效;(判断yum源是根据后缀名repo来实现的,修改后缀名则可以使该yum源失效)
3、使光盘yum源生效:
vim CentOS-Media.repo
baseurl=file:///mnt或media/cdrom:地址为光盘挂载地址,如果有多余的光盘挂载点,需要注释掉不存在或不需要使用的光盘挂在地址;
enabled=1:把enabled=0改为enabled=1,使该yum源配置生效;
4、命令:yum list:该命令可验证目前使用的yum源有哪些可用的rpm包;
3.3 yum命令
1.查询
yun list --查询所有可用软件包列表
yum search 关键字 --搜索服务器上所有和关键字相关的包
2.安装
yum -y install 包名 (-y 自动回答yes)
yum安装只写包名即可! eg:yum -y install gcc --c语言编译器
3.升级/卸载
升级:
yum-y update包名
-update:升级;
-y:自动回答yes;
卸载:
yum-y remove包名
-remove:卸载;
-y:自动回答yes;
!!!服务器使用最小化安装,用什么软件安装什么,尽量不要卸载!!!
4.yum软件组管理命令
yum grouplist:列出所有可用的软件列表;
yum groupinstall 软件组名:安装指定软件组,组名可以由grouplist查询出来;
yum gourpremove 软件组名:卸载指定软件组;
①LANG=en
US:切换至英文;(临时生效)
②LANG=zh
CN.utf8:切换至中文;(临时生效)
四、源码包安装
4.1 源码包与RPM包区别
安装之前的区别: 概念上的区别
安装之后的区别: 安装位置不同
4.2 安装位置不同带来的影响
4.2.1 rpm包安装位置
rpm
包安装的服务可以使用系统服务管理命令(
service
)来管理,
例如:
RPM
包安装的
apache
的启动方法是:
/etc/rc.d/init.d/httpd start
service httpd start
请注意:
rpm
包安装也是可以指定安装位置的,
service
命令是
redhat
的专有命令,所以
/etc/rc.d/init.d/XXXX start
是最标准的启动方式。如果为
rpm
包指定了安装目录,抱歉,两个启动方法都不能用了。
4.2.2 源码包安装位置
安装在指定位置当中,一般是:
/usr/local/软件名/
源码包安装的服务,
只能用绝对路径进行服务的管理。
4.2.3 总结
1、源码包是不能使用【
service
】命令来启动服务,因为源码包的安装位置由用户指定,放在哪并不统一。而rpm包安装后,通常都是放在【
/etc/rc.d/init.d
】目录中的,而【
service
】命令执行时,会自动搜索该目录,所以
rpm
包安装的服务可以使用【
service
】命令。
2、综上所述,安装位置不同,启动方法是有区别的。
3、使用绝对路径启动程序的方法是通用的,通常软件包中会写上启动程序的方法的。
4、如果将源码包安装后的启动程序复制到【
/etc/rc.d/init.d
】目录中,则也是可以使用【
service
】命令执行的。
5、源码包一定要指定安装目录,不指定的话,会和
rpm
一样安装的到处都是,但是,不能用-e卸载了。一般指定目录是
/usr/local
(可以看出
Windows
的
ProgramFiles
)。同时,源码包不能用
service
命令启动的,原因在于,
service
命令是搜索
/etc/rc.d/init.d/
目录来启动服务的。
4.3 源码包安装步骤
4.3.1 安装准备和源码包获取
1、由于源码都是
c
语言写的,所以要先安装
c
语言编译器:
gcc
。
2、从官方网站下载源码包,若是下载到了
windows
上面,可以使用
winSCP
传到
linux
上。
注:若已安装了二进制包,则源码包也是可以继续安装的,因为两者安装目录不一样。但是,并不建议这样做,因为端口会冲突。
对于要求效率的软件,要安装源码包版本,因为是本机编译,更具有兼容性和效率,