Linux软件包管理

一 在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包
Linux软件包管理_第1张图片
我们拿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包
Linux软件包管理_第2张图片

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源的内容
我们打开看一下
Linux软件包管理_第3张图片
【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,要想让这个生效,需要将其他三个重名,
Linux软件包管理_第4张图片
然后修改CentOS-Media.repo
Linux软件包管理_第5张图片
我们输入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中
这里写图片描述
好了,源码包已经有了,然后解压缩
Linux软件包管理_第6张图片
先要执行./configure 软件配置与检查
1 定义需要的功能选项
2 检测系统环境是否符合安装要求
3 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
Linux软件包管理_第7张图片
make 编译
make clean
make install 编译安装
我这里环境报错了,这步没办法演示了,总之是相比RPM二进制包慢很多的,如果想卸载,直接删除安装目录即可,不会遗留任何垃圾文件

五 脚本安装包
1脚本安装包并不是独立的软件包类型,常见安装的是源码包
2 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装
3 非常类似于Windows下软件的安装方式,这个就不演示了

好了,Linux软件包管理就总结到这里,继续兄弟连Linxu之旅,如有问题,欢迎指正,谢谢。

你可能感兴趣的:(linux)