码迷,mamicode.com
首页 > 系统相关 > 详细

Linux基础三(软件安装管理)

时间:2017-11-21 01:02:18      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:软件包安装   所有者   tool   oca   文档   local   反向   软件集   作者   

目录:

一、Linux 中软件包的分类

1.源码包

2.二进制包

3.源码包

4.软件安装的选择

二、软件安装之 RPM

1.背景知识

2.准备知识

3.安装升级与卸载

4.查询校验与提取

一、Linux 中软件包的分类:

1.源码包

1.1 源码包的简介

源码包就是各种源代码文件组合而成的压缩包,因为 Linux 是开源的,所以源码包中的源代码是可以查看甚至修改的,用户可以根据自己所需要的功能进行安装。但是源码包在安装的时候需要编译,即从源代码 abcd 编译成机器语言 0101,这个过程需要花费很长的时间。

在 Windows 中的程序都是经过编译的,并且一般认为编译是不可逆的,即反编译(0101->abcd是非常困难的),即使能勉强完成,也会丢失部分代码。也正因为这个原因,在 Windows 中需要用到某个程序,如果该程序向你收费,你也只能乖乖交钱,除非你不用。这也就是 Linux 开源的魅力所在!

1.2 源码包的优缺点

源码包有如下优点:

  1. 开源,如果有足够的能力,可以修改源码包中的源代码;
  2. 可以根据自己的需求选择安装特定功能;
  3. 软件是编译安装,所以更加适合自己的系统,更加稳定高效;
  4. 卸载方便,只需要把安装目录删除,就能不留痕迹。

源码包有如下缺点:

  1. 安装过程步骤多,尤其是安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误;
  2. 编译过程会比较长,所以安装的过程也比二进制包安装时间长;
  3. 对新手不太友好,因为是编译安装,所以一旦报错,新手很难解决。

2.二进制包

2.1 二进制包的简介

二进制包是已经编译好了的包,二进制包中的数据都计算机能直接识别的 0101 ,所以安装起来就省去了编译环节,这样可以节省很多时间。在 Linux 中,Redhat 系列的二进制包一般都是 rpm 包,而 Ubuntu 系列的二进制包一般都是 deb 包。

2.2 二进制包的优缺点

二进制包有如下优点:

  1. 包管理系统简单,只需要敲几个命令就能实现包的安装,升级,查询和卸载;
  2. 安装速度比源码包快得多;

二进制包有如下优点:

  1. 经过编译,不可以再看到源代码,不能根据自己的需求决定安装哪些功能;
  2. 功能的选择不如源码包灵活
  3. 效率不如源码包
  4. 依赖性

3.脚本安装包

3.1 脚本安装包的简介

对于一些复杂的环境搭建(如LAMP),太过于繁琐,有大神就写出了该环境的安装脚本,只需要运行该脚本,所有的东西都能装上。虽然给脚本安装包另外分了一个类,但是脚本安装包实际上还是安装源码包和二进制包。

3.2 脚本安装包的优缺点:

脚本安装包有如下优点:

  1. 安装简单,方便,只需要运行脚本,就能安装脚本包含的所有软件,也不会报错。

脚本安装包有如下缺点:

  1. 完全丧失自定义性,不能按照自己的需求安装需要的功能,安装的功能完全由脚本编写者帮你决定。

4. 软件安装的选择

如果是服务器,推荐源码包安装。因为服务器要被成千上万的人访问,源码包执行效率高。
如果是个人设备,推荐 RPM 包,当然也看个人自己的爱好了,想装什么包就装什么包,谁特么管你。




二、软件安装之 RPM :

1. 背景知识:

RPM包来源与光盘中,所以要先挂载光盘,才可以进行后面的步骤。挂载的示例如下:

  1. 创建挂载点并挂载:

    mkdir /mnt/cdrom
    mount /dev/sr0 /mnt/cdrom/
  2. 所有的 RPM 包都在 /mnt/cdrom/Packages/ 中,可用 ls 命令查看,如下图所示:

与挂载相关的内容,可以参考我的另一篇博客:
Linux基础二(挂载、关机重启与系统等级)

2.准备知识

知道了挂载后,还不能直接安装 RPM 包,还必须具备一些关于 RPM 包的准备知识(命名规则和依懒性)

2.1 命名规则

2.1.1 名称格式

如下所示:

httpd-2.2.15-29.el6.centos.x86_64.rpm
其中:
    httpd 为包名
    2.2.15 为版本号;
    29 为软件发布的次数
    el6.centos 为其适合的Linux平台
    x86_64 为其适合的硬件平台
    rpm 是包的扩展名
2.1.2 包名与包全名

包全名指的是完整的包名,包名是开头的第一个单词。

在上面的例子中:

httpd为包名;

httpd-2.2.15-29.el6.centos.x86_64.rpm是包全名

  1. 包全名:在操作没有安装的包的时候(安装和升级),要使用包全名,并且要注意路径(绝对路径或相对路径)
  2. 包名:已经安装了该软件之后,后续对该包的操作(卸载和查询)使用包名就可以了。当使用包名的时候,实际上是去搜索 /var/lib/rpm/ 中的数据库__db.001到__db.004(里面是乱码)

2.2 依赖性

  1. 树形依赖:a->b->c

    解决:装c再装b再装a
  2. 环形依赖:a->b->c->a

    解决:将a、b、c三个包放在一个命令里安装
  3. 模块依赖:也叫库依赖。

    最恶心,依赖以.so.n(n为数字)结尾的库文件,该库文件是 /mnt/cdrom/Packages 目录下的某一个rpm包中的文件,要先安装该包

    解决:如何判断在哪个包中,查询 www.rpmfind.net

3.安装升级与卸载

3.1 安装

命令:

rpm -ivh 包全名
选项:
    -i:安装(install)
    -v:显示详细信息(verbose)
    -h:显示进度(hash)
    --nodeps:不检测依赖性(不要用)

用 rpm 命令来安装软件时要注意其依赖性。可以根据 2.2 节中的思路来进行安装。

示例:安装 httpd

1. 进入挂载目录:cd /mnt/cdrom/Packages/
2. 安装 httpd:rpm -ivh http-tab(2次tab)
3. 经过 2. 后会提示几个 rpm 包,其中:
    1. httpd-2.2.15-29.centos.x86_64.rpm 为主包
    2. httpd-devel-* 为库包
    3. httpd-manual-* 为文档包
    4. httpd-tools-* 为工具包
4. 一般先安装主包,再安装附加包

注意:有两个100% 才算完成,第一个100% 是准备成功,第二个100% 出现才算安装成功

3.2 升级

命令:

rpm -Uvh 包全名
选项:
    -U:升级(Upgrade)
    --nodeps:不检测依赖性(不要用)
升级相当于安装一个版本更新的安装包,你也可以用升级命令来安装新包。

3.3 卸载

命令:

rpm -e 包名
选项:
    -e:卸载(erase)
    --nodeps:不检测依赖性(不要用)

说明:

  1. 卸载时只需输入包名即可,因为该软件包在安装的时候已经写入 /var/lib/rpm/ 中的数据库中了
  2. 卸载命令依然存在依赖性,按照安装时的反序卸载即可
  3. rpm 包在安装时没有指定安装位置,安装位置是该rpm包作者定义好的默认位置(如下图所示),会分布在磁盘的各个部分,若要手工删除不方便,所以才有了卸载命令。
  4. 而源码包没有卸载命令,因为源码包在安装过程中可以指定安装位置,只要把软件包安装位置所在目录删除就会将软件彻底删除。

技术分享图片

4.查询校验与提取

4.1 查询

命令:

rpm –q 包名           // 查询指定软件包是否安装
rpm –qa              // 查询所有已安装的软件包
rpm –qi 包名          // 查询指定包名的详细信息(里面只有帮助网站有点用)
rpm –qip 包全名       // 查询指定未安装包的详细信息(注意路径)
rpm –ql 包名          // 查询指定软件包都安装在哪些位置了
rpm –qf 系统文件名     // 查询该系统文件属于哪一个软件(必须是已经安装了的软件生成的文件才能反向追查)
rpm -qR 包名          // 查看软件包的依赖关系 (–p 未安装的软件包)

选项:
    -q:查询(query)
    -a:所有(all)  
    -i:信息(information)
    -p:包(package)
    -l:位置(local)
    -f:文件(file)

在查询的时候可以灵活应用管道符搭配 grep 命令使用

4.2 校验

命令:

rpm –V 已安装的包名       // 校验指定rpm包中的文件
选项:
    -V  (verify)        校验
示例:
rpm -V httpd

如果文件未被修改,则不会出现任何提示,若文件被修改,则会出现以下提示:

技术分享图片

其中,验证内容(即文件前面的 9 个.和一个c)分别代表:

S:文件的大小是否被改变
M:文件的类型或文件的权限是否被改变
5:文件的MD5校验和是否改变(可看成是文件内容是否改变)
D:设备的主从代码是否改变
L:文件路径是否改变
U:文件的属主(所有者)是否改变
G:文件的属组是否改变
T:文件的修改时间是否改变
c:这个字符所占的位置有以下意义:
    c:配置文件
    d:普通文档
    g:鬼文件,很少见,就是该文件不应该被这个 RPM 包所包含
    L:授权文件
    r:描述文件

4.3 提取

当某一个软件的某一个配置文件被误删除了,可以通过来提取命令来将该文件从 RPM 包提取出来。




三、软件安装之 YUM :

TODO




四、软件安装之源码包的安装:

TODO

Linux基础三(软件安装管理)

标签:软件包安装   所有者   tool   oca   文档   local   反向   软件集   作者   

原文地址:http://www.cnblogs.com/myyd/p/7868608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!