iMisty的技术栈

iMisty的技术栈

Linux软件安装管理

998
2019-08-16

Linux软件安装管理

软件包分类

  • 源码包

  • 脚本安装包

  • 二进制包(RPM包,系统默认包)

Windows下的软件无法在Linux中安装

源码包

  • 源码包的优点是:

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

    • 可以自由选择所需要的功能

    • 软件是编译安装,所以更加适合自己的系统,更加稳定效率也更高

    • 卸载方便

  • 源码包的缺点

    • 安装的过程步骤比较多 ,尤其是安装较大的软件集合的时候(如LAMP环境搭建),容易出现拼写错误

    • 编译的过程时间比较长,安装比二进制安装时间长

    • 因为是编译安装,一旦安装出错新手很难解决

二进制包-RPM包(系统默认包)

  • 二进制包的优点

    • 包管理系统简单,只通过几个命令就可以实现包的安装,升级,查找和卸载
    • 安装速度比源码包安装快很多
  • 二进制包的缺点

    • 经过编译,不再可以看到源代码
    • 功能选择不如源码包灵活,因为是软件提供者编译好的非本机编译,所以效率不如源码包的效率高
    • 依赖性

脚本安装包

  • 所谓的脚本安装包,就是把复杂的软件包安装过程写成了程序脚本,初学者可以执行程序脚本实现一键安装,但是实际的安装还是源码包或者二进制包

  • 优点:安装简单快捷

  • 缺点:完全丧失了自定义性

RPM命令管理

  • RPM包的来源:所有的RPM包都在系统光盘中 /mnt/cdrom/Packages

  • RPM包的命名规则

    • httpd-2.2.15-15.el6-centos.1.i686.rpm
    • httpd 软件包名
    • 2.2.15软件版本
    • 15软件的发布次数
    • el6.centos适合的Linux平台
    • i686 适合的硬件平台
    • rpm rpm包的扩展名
  • RPM包的依赖性

    • 树形依赖 a->b->c;需要先安装c再安装b最后再安装c

    • 环形依赖 a->b->c->a

    • 模块依赖(库依赖) :查询网站www.rpmfind.net

    • 缺少相对应的库文件,而不是软件包,需要找到库文件在那个rpm包里面,然后再依赖上即可

  • 包全名与包名:

    • 包全名:操作的包是没有安装的软件包的时候使用包全名,而且要注意路径
    • 包名:操作已经安装的软件包的时候,使用包名,是搜索/var/lib/rpm中的数据库

RPM安装

  • rpm -ivh 包全名

    • 选项 -i(install)安装
    • -v(verbose) 显示详细信息
    • -h (hash) 显示进度
    • --nodeps 不检测依赖性

RPM包升级和卸载

  • rpm -Uvh 包全名 升级也相当于全新的包,需要使用包全名
  • 选项
    • -U(upgrade) 升级

其实升级安装可以当做安装命令使用 ,若是没有安装直接安装新包,否则直接安装

RPM包卸载

  • rpm -e 包名

    • 选项 :-e(erase)卸载
    • --nodeps不检查依赖性
  • 这里卸载也需要按照依赖顺序进行卸载, 实际操作过程中不允许使用 --nodeps

  • 和安装命令不一样的是卸载命令可以再任意的地方输入,RPM命令会自动去数据库查找
    img

源码包卸载只需要将软件包所在的目录删掉即可

RPM包的查询

  • 查询是否安装

    • rpm -q 包名 查询包是否已经安装 -q (query)

    • rpm -qa 查询所有已经安装的RPM包 -a(all)

      • 例子 rpm -qa |grep httpd
  • 查询软件包的详细信息

    • rpm -qi 包名
    • 选项: -i(information) 查询软件信息
    • -p 还可以查询未安装包信息(package)
  • 查询包中文件安装位置

    • rpm -ql 包名

    • 选项 -l 列表(list)

    • 选项 -p 还可以查询未安装包信息(package),即使软件未安装,也可以查看要装在哪

  • 查询系统文件属于哪一个RPM包

    • rpm -qf 系统文件名(这个文件必须是rpm安装包产生不可以是手动建立或者系统临时文件)
    • 选项 :-f 查询系统文件属于哪个软件包(file)
  • 查询软件包的依赖性

    • rpm -qR 包名

    • 选项 -R 查询软件包的依赖性(requires)

    • 选项 -p查询未安装包信息(packages)

实际使用直接安装即可,报了依赖性错误,再去安装依赖,这样查询的太多,不够易用

RPM包默认安装位置

img

RPM包校验

  • rpm -V 已安装的包名

    • 选项 -V 校验指定RPM包中的文件(verify)
    • rpm -V httpd

        #命令输出内容
    S.5....T.    c  /etc/httpd/conf/httpd.conf
  • 验证内容中的八个信息的具体内容如下
    img

  • 文件类型 img

    RPM包中的文件提取

  • rpm2cpio 包全名 | cpio -idv .文件绝对路径

  • rpm2cpio 将rpm包转换为cpio格式的命令

  • cpio 是一个标准工具 ,他用于创建软件档案文件和从档案文件中提取文件

    • cpio 选项 <[文件|设备]
    • -i: copy-in模式,还原
    • -d : 还原时自动新建目录
    • -v : 显示还原过程
  • 通过归档文件还原丢失的命令,若是命令找不到了可以使用该方法在归档文件中找回
    img

    .不可以省略,代表当前目录;不要在光盘目录直接提取,因为光盘是只读的

RPM包安装的缺点

*   安装过程中,rpm包的依赖性太强
*   如果所有的RPM包都是手工安装,则RPM包的使用难度较大

yum在线管理

  • 官方通过访问搭建的远程服务器来自动进行包的管理,依赖(包依赖和库文件依赖),并进行下载安装rpm包;若是没有网络,也可以通过光盘建立本地yum
  • RedHat yum服务属于售后支持,需要付费(但是有绕开的办法)
  • yum只能安装卸载升级yum包,但是不能查询校验,需要查询校验还是得需要RPM命令

yum源文件

![img](https://gitee.com/iMist/Linux/raw/master/image2/image6.png)
  • mirrorlist镜像站点和yum服务器站点baseurl选择一个即可
  • enabled使容器生效,其他的有重复配置,选择一个镜像即可
  • 数字证书默认生效的,防止下载到第三方的非官方包造成安全性问题
  • CentOS-Base.repo 默认生效,有网络的情况下采用默认配置下载官方的包,网速慢可以更换镜像源

光盘yum源搭建

  • 当没有网络的环境使用光盘搭建本地yum源
   mkdir /mnt/cdrom 建立挂载点

    mount /dev/cdrom /mnt/cdrom/ 挂载光盘 

    cd /etc/yum.repos.d/ 进入yum源目录

    mv CentOS-Base.repo CentOS-Base.repo,bak 修改yum源文件后缀名,使其失效 
  • 使光盘yum源生效
    img

    • 注释必须顶头注释,不可以缩进
    • 配置光盘源路径的三个文件,在centos5以前若是路径文件不存在会报错并且无法下载源,centos6之后会报错,但是不影响,但是还是建议注释,保留一个可用的光盘挂载路径即可
    • 使enabled=1使其生效
    • 其他部分不动
  • 查看yum的可用软件包 yum list确定光盘yum源起作用 ,vi 查看光盘yum源是否与当前使用的源名字一致;此时即使Linux不能联网也可以使用
    img

    其实本地yum源更加快速稳定不占用带宽,若是没有更新需求可以使用本地yum源

    yum命令

  • 常用yum命令

    • yum list 查询所有的可用软件安装包列表

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

    • yum -y install 包名 install 安装 ,-y自动回答yes

    • 例子 yum -y install gcc 安装C语言解释器

    • yum -y update 包名 升级 ,并且自动回答yes

    • yum -y remove 包名 卸载并且自动应答yes

    • 服务器使用最小化安装,用什么软件安装什么,尽量不要卸载

    yum 软件组管理命令

  • yum grouplist 列出所有可用的软件组列表

  • yum groupinstall 软件组名 安装指定的软件组,组名可以由grouplist查询出来

  • 注意:软件组名必须是英文,第一步查看的时候若是中文的语言环境,需要 LANG=en_US 切换成英文,切换回中文 LANG=zh_CN.utf8 切换回中文编码和中文语言环境

  • yum groupremove 软件组名 卸载指定的软件组

    yum 安装只需要包名即可,自动添加依赖包和依赖库

    源码包和RPM包的区别

  • 安装之前区别:概念上的区别

  • 安装之后的区别:安装位置不同

  • RPM包安装的位置

  • 是在默认的安装位置中
    img

  • rpm 安装可以指定安装位置 rpm --help |grep prefix

  • rpm -e httpd 提供卸载命令,但是rpm不推荐修改默认的安装位置

  1. /etc/rc.d/init.d/httpd start 安装路径启动
  2. service httpd start 直接使用命令启动(默认安装)
  • 安装不同的位置带来的影响,启动方法不一样

  • rpm包安装的服务可以使用系统服务管理命令(service) 来管理,例如rpm包安装 的apache的启动方法是:

    linux标准的启动方式就是 文件路径 加上启动命令,使用默认的安装路径命令直接保存在 sbin或者bin目录下,可以直接使用

    源码包安装位置

  • 安装在指定位置,一般是 /usr/local/软件名/

  • 源码包没有卸载命令,直接删除安装路径下的文件即可

  • 源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中,只能使用绝对路径对服务进行管理

  • 如:/usr/local/apache2/bin/apachectl start

    源码包安装

  1. 安装准备 ,安装C语言编译器gcc,下载源码包 http://mirror.bit.edu.cn/apache/httpd

    若是给众多客户端进行访问,为了要求效率,建议使用源码包,若是本机使用,直接使用编译好的rpm包即可

  2. 安装注意事项

    • 源码保存位置 /usr/local/src

    • 软件安装位置 :/usr/local

    • 没有安装停止并且没有报错说明安装成功,如何确定安装过程报错:

      • 安装过程停止
      • 并出现 error warning 或no提示
  3. 源码包安装过程

    • 下载源码包

    • 解压缩下载的源码包

    • 进入解压缩目录

    • ./configure 软件配置与检查

      • 定义需要的功能选项;./configure --help 查看功能选项;./configure --prefix=/usr/local/apache2 指定安装路径,安装完成自动创建目录
      • 检测系统环境是否符合安装要求
      • 把定义好的功能选项和检测系统环境的信息都写入Makefile文件用于后续的编辑
    • make 编译

    • make clean 清除缓存文件和临时文件,若是编译出错需要执行一下重新编译

    • make install 编译安装

    • 若是安装出错,不仅需要清除缓存,还需要删除安装目录
      4.源码包卸载

    • 不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件

查看安装步骤,查看源码解压包下的 INSTALL 文件
![img](https://gitee.com/iMist/Linux/raw/master/image2/image11.png)

#### 注意事项
  • setup弹出的界面关闭防火墙;

  • 注意源码包的Apache和rpm包的apache一定不可以使用相同的端口会出现端口冲突,但是可以通过两种方式同时安装

  • 实际安装Apache建议使用源码包的安装,因为需要给客户端访问并且有性能需求

    脚本安装

  • linux只有源码包和rpm包,只是通过脚本编写的安装命令封装了复杂的安装过程

  • 补充:Nginx服务器

  • NGINX是一款轻量级的web服务器/反向代理服务器以及电子邮件(IMAP/POP3) 代理服务器,由俄国公司在2004年发布

  • Nginx与Apache,lighttpd的综合对比
    img

    Nginx的并发访问远高于Apache服务器

  • 准备工作

    • 关闭rpm包安装httpd和mysql ,因为脚本安装的软件会占用80端口和mysql的3306端口
    • 保证yum源正常可用 ,yum list 源配置是否正常
    • 关闭selinux和防火墙
    `vi  /etc/selinux/config    SELINUX=disabled    #然后重启计算机
    
    
  • centos.sh分析

    • 所谓的一键安装包,实际上还是安装的源码包与rpm包,只是把安装过程写成了脚本,便于初学者安装

    • 优点:简单快捷方便

    • 缺点:

      • 不能定义软件安装的版本(可以在脚本中等待用户交互)
      • 不能定义所需要的软件功能
      • 源码包的优势丧失
  • 下载,然后解压或者执行脚本连带下载执行脚本一键安装包

[LMNP脚本下载路径](http://lnmp.org/install.html)

  • 脚本一键安装包
    img

    新版本安装变成了./install.sh