您的位置:首页 > 运维架构 > Linux

Linux软件包管理

2016-11-01 15:30 190 查看
一 在Linux系统中,软件包分为两类,源码包和二进制包(我的环境是Centos,所以二进制包是RPM包)

源码包的优点:

1 开源,如果有足够的能力,可以修改源代码

2 可以自由选择所需的功能

3 软件是编译安装,根据经验,服务效率会比RPM包高一些

4 卸载方便,直接删除安装路径即可。

源码包的缺点:

1 安装过程步骤较多,尤其是安装较大的软件集合时(LAMP),容易出错

2 编译过程较长,源码包安装时间比RPM包要长很多

3 因为是编译安装,一旦安装过程中报错,新手很难解决

二进制包的有点:

1 包管理系统简单,只需要几个简单明了就可以实现RPM包安装,升级,查询,卸载

2 安装速度比源码包快很多

二进制包的缺点:

1 经过编译,不能再看到源代码

2 功能选择不如源码包灵活

3 依赖性(这个很头大,后面会举例子说明)

二 RPM包管理-rpm命令管理

1 先来看看包命名规则,我们首先看ISO镜像里的,先创建一个挂载目录,然后挂载镜像



然后进入/temp/cdrom目录,就可以看到ISO镜像里的文件了,其中Packages全都是RPM包



我们拿Apache的rpm做例子来看一下

httpd-2.2.15-15.e16.centos.1.i686.rpm

httpd 软件包名

2.2.15 软件版本

15 软件发布的次数

e16.centos 适合的linux平台

i686 适合的硬件平台

rpm rpm包扩展名

如果在安装的时候遇到了rpm包依赖,就需要先安装依赖包,如果遇到了模块依赖,也就是这个依赖是其他rpm包的一部分,那么就需要到http://www.rpmfind.net/网站进行查询,根据模块名查rpm包名

2 RPM包安装

rpm -ivh 包全名

选项:

-i(install) 代表安装

-v(verbose)代表显示详细信息

-h(hash) 显示进度

下面我们来安装Apache的rpm包



我们看到报错了,表示需要先安装这些依赖包,那我们先安装apr-util-ldap



又需要apr-util,这些依赖非常多,我在这里就不一一演示了,大家肯定觉得很烦了,那么有没有更简单的方法呢,yum在线管理就可以很好的解决这个问题,不需要我们去操心这些依赖包,而是一次性帮我们装好,后面再说

3 RPM包升级

rpm -Uvh 包全名

-U(upgrade) 升级,由于我们直接拿到的是ISO镜像里的包,这里就不演示升级了,跟安装是类似的

4 RPM包卸载

rpm -e 包名,注意,这里不需要加包的全名了,只需要加包名即可,Linux用数据库来维护这些包名

5 查询是否安装

rpm -q 包名



我们发现刚刚的httpd是没有安装成功的

rpm -qa

查询所有已经安装的RPM包



6 查询软件包的详细信息

rpm -qi 包名

-i查询软件信息

-p查询未安装包信息

7 查询包中文件安装位置

rpm -ql 包名

-l列表

-p 查询未安装包信息

8 查询系统文件属于哪个rpm包

rpm -qf 包名

-f查询文件属于哪个rpm包

9 查询软件包的依赖

rpm -qR 包名

三 RPM包管理-yum在线管理

1 网络yum源



我们进入到/etc/yum.repos.d/中,其实CentOS-Base.repo就是网络yum源的内容

我们打开看一下



【base】 容器名称

name 容器说明

mirrorlist 镜像站点,这个可以注释掉

baseurl 我们yun源服务器的地址,默认是CentOS官网的yum源地址,是可以使用的,如果觉得慢,可以改成国内yum源地址

enabled 此容器是否生效,如果不写或者=1生效,=0 不生效

2 yum list 查询所有软件包列表

3 yum search 关键字

搜索服务器上所有和关键字相关的包

4 yum -y install 包名

install 安装

-y 自动回答yes

5 yum -y update 包名

update 升级

-y 自动回答yes

6 yum -y remove 包名

remove 卸载

-y 自动回答yes

除了CentOS服务器可以做为yum源,我们还可以把我们的镜像ISO做为yum源,就在刚刚那个路径下的 CentOS-Media.repo,要想让这个生效,需要将其他三个重名,



然后修改CentOS-Media.repo



我们输入yum list ,发现生效了



四 源码包管理

还是先说下源码包和RPM包的区别,安装位置不同



而源码包安装位置,一般在 /usr/local/软件名/

RPM包安装的服务可以使用系统服务管理命令service来管理,比如

service httpd start

但是源码包只能用绝对路径

/usr/local/apache2/bin/apachertl start

好了,下面说源码包的安装,我们先在windows下下载http://mirror.bit.edu.cn/apache/httpd/

下载好后,通过winscp这个工具,把这个文件从windows传到linux中



好了,源码包已经有了,然后解压缩



先要执行./configure 软件配置与检查

1 定义需要的功能选项

2 检测系统环境是否符合安装要求

3 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑



make 编译

make clean

make install 编译安装

我这里环境报错了,这步没办法演示了,总之是相比RPM二进制包慢很多的,如果想卸载,直接删除安装目录即可,不会遗留任何垃圾文件

五 脚本安装包

1脚本安装包并不是独立的软件包类型,常见安装的是源码包

2 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装

3 非常类似于Windows下软件的安装方式,这个就不演示了

好了,Linux软件包管理就总结到这里,继续兄弟连Linxu之旅,如有问题,欢迎指正,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux