开发者

Linux安装及管理软件程序全过程

目录
  • 一、linux安装程序的几种方式
    • 1.源码编译安装(二进制安装)
    • 2.rpm安装
    • 3.yum软件仓库
    • 4.下载安装包
  • 二、安装管理软件程序
    • 1.rpm包管理工具
      • (1)一般命名格式
      • (2)拆包后分类
      • (3)包管理器相关文件
      • (4) 查询安装包信息命令
      • (5)rpm安装管理软件
    • 2.源码编译安装
      • (1)源码
      • (2)程序包编译安装
      • (3)步骤
      • (4)源码编译安装实操
    • 3.yum安装管理软件
      • (1)c/s架构
      • (2)安装过程
      • (3)配置本地yum源
      • (4)yum安装软件实操
  • 总结

    一、Linux安装程序的几种方式

    1.源码编译安装(二进制安装)

    实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。

    源码包经过成功编译之后产生二进制包,最后安装写入硬盘。

    由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快(同 Windows下安装软件速度相当),且安装过程报错几率大大减小。

    优点:

    • 开源。如果你有足够的能力,则可以修改源代码。
    • 可以自由选择所需的功能。
    • 因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。
    • 卸载方便。

    不足:

    • 安装过程步骤较多,尤其是在安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误。
    • 编译时间较长,所以安装时间比二进制安装要长。
    • 因为软件是编译安装的,所以在安装过程中一旦报错,新手很难解决

    2.rpm安装

    由Red Hat公司提出,被众多Linux发行版所采用建立统一的数据库文件(一张对应表将信息写入)详细记录软件包安装、卸载等变化信息自动分析软件包依赖关系。

    优点:

    • 统一的安装包格式
    • 已经帮你编译完成
    • 使用简单

    不足:

    • 因为软件存在依赖关系,需要先手动下载各依赖包(过于繁琐,安装软件时基本不用)

    3.yum软件仓库

    解决rpm包依赖关系而诞生

    优点:

    • 安装简单
    • 自动解决依赖关系

    4.下载安装包

    二、安装管理软件程序

    获取软件包的几种方式

    • 红帽官方
    • 第三方组织提供
    • 软件项目官方站点
    • 自己制作

    以下实操演示通过挂载镜像文件,获取其中的rpm安装包来安装软件程序

    挂载 :

    • linux当中一切皆文件,无论硬件软件都要当成文件来使用,硬件不能直接当成文件来使用,再加硬盘只能在根分区下进行操作。
    • 挂载是将硬件和根分区下某一文件夹做关联,相当于这个文件夹是进入硬盘的一个入口

    1.rpm包管理工具

    (1)一般命名格式

    bash-4.1.2-15.el6_4.x86_64.rpm

    bash——shell环境 4.1.2——版本信息 15——发布次数 x86_64——系统架构

    (2)拆包后分类

    [root@localhost Packages]# ll httpd*
    -rw-rw-r--. 2 root root 2835196 8月 11 2017 httpd-2.4.6-67.el7.Centos.x86_64.rpm
    -rw-rw-r--. 2 root root 197360 8月 11 2017 httpd-devel-2.4.6-67.el7.centos.x86_64.rpm
    -rw-rw-r--. 2 root root 1402824 8月 11 2017 httpd-manual-2.4.6-67.el7.centos.noarch.rpm
    -rw-rw-r--. 2 root root 89284 8月 11 2017 httpd-tools-2.4.6-67.el7.centos.x86_64.rpm
    // 主包 开发包 手册包 工具包

    (3)包管理器相关文件

    - 包文件组成 (每个包独有)

    • 包内的文件
    • 元数据,如:包的名称,版本,依赖性,描述等
    • 可能会有包安装或卸载时运行的脚本

    - 数据库(公共):/var/lib/rpm (安装好后会将一些公共的数据放入数据库中)

    • 程序包名称及版本
    • 依赖关系
    • 功能说明
    • 包安装后生成的各文件路径及校验码信息

    (4) 查询安装包信息命令

    查询指定软件是否安装

    rpm -q 软件名

    查询已安装软件的信息

    • -qa //显示当前系统中以 RPM 方式安装的所有软件列表
    • -ql //显示指定的软件包在当前系统中安装的所有目录、文件列表
    • -qi //查看指定软件包的名称、版本、许可协议、用途描述等详细信息
    • -qc //列出已QfoUvyUhq安装的指定软件的配置文件
    • -qd //列出已安装的指定软件的软件包文档所在位置
    • -qf //查看指定的文件或目录是由哪个软件包所安装的

    查询已安装软件包的信息

    • -qpl //显示指定的软件包在当前系统中安装的所有目录、文件列表
    • -qpi //查看指定软件包的名称、版本、许可协议、用途描述等详细信息
    • -qpc //列出已安装的指定软件的配置文件
    • -qpd //列出已安装的指定软件的软件包文档所在位置

    (5)rpm安装管理软件

    [root@localhost Packages]# rpm -i 软件名 //rpm安装软件
    
    -v //显示过程
    
    -h //显示进度条####
    
    -e //卸载软件
    
    -U //升级软件(需要升级包)
    //无依赖关系,安装成功
    [root@localhost Packages]#rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
    warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:tree-1.6.0-10.el7                ################################# [100%]
    
    //存在依赖包,需要手动安装依赖包
    [root@localhost Packages]#rpm -ivh 编程客栈httpd-2.4.6-67.el7.centos.x86_64.rpm 
    错误:依赖检测失败:
    	httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
    [root@localhost Packages]#rpm -ivh httpd-tools-2.4.6-67.el7.centos.x86_64.rpm 
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:httpd-tools-2.4.6-67.el7.centos  ################################# [100%]
    [root@localhost Packages]#rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm 
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:httpd-2.4.6-67.el7.centos        ################################# [100%]

    2.源码编译安装

    (1)源码

    大部分是C语言开发的,更方便的使用

    1. 软件版本比较新,新功能,修复bug
    2. 可以自行定义配置文件的路径
    3. 源码可能有100个功能,红帽认为你可能不需要会自行处理砍掉,自行定制50

    (2)程序包编译安装

    源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 --> 执行

    多文件:文件中的代码之间,很可能存在跨文件依赖关系虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自已下载源码,进行编译安装。

    另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。

    但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度

    (3)步骤

    第一步:./configure 软件作者写的脚本(安装包中会有)

    • 可以更改你的安装路径,
    • 选择你要安装软件的功能
    • 检测你的安装环境

    第二步:make 将源代码编译成二进制语言

    常见的编译软件 gcc gcc-c++

    第三步:make install 将二进制 数据写入硬盘,安装进系统

    (4)源码编译安装实操

    [root@localhost ~]#mkdir /app /data
    [root@localhost data]#ls
    httpd-2.4.29.tar.bz2
    
    //解压安装包
    [root@localhost data]#tar xf httpd-2.4.29.tar.bz2
    
    //进入安装包
    [root@localhost data]#cd httpd-2.4.29
    
    //安装依赖环境需要的工具包
    [root@localhost httpd-2.4.29]#yum install apr* gcc* pcre* -y
    
    //配置安装路径到/app
    [root@localhost httpd-2.4.29]#./configure --prefix=/app
    
    //使用使用2颗cpu编译
    [root@localhost httpd-2.4.29]#make -j2
    
    //安装写入硬盘
    [root@localhost httpd-2.4.29]#make install
    
    //检查是否安装成功——httpd网页服务是否开启
    [root@localhost httpd-2.4.29]#/app/bin/apachectl start
    AH00558: httpd: Could not reliably determine the server's fully qualified this message
    
    //80端口打开说明网页服务开启
    [root@localhost httpd-2.4.29]#ss -ntap |grep 80
    LISTEN     0QfoUvyUhq      128       [::]:80                    [::]:*                   users:(("httpd",pid=25821,fd=4),("httpd",pid=25820,fd=4),("httpd",pid=25819,fd=4),("httpd",pid=25818,fd=4))

    3.yum安装管理软件

    yum是一个基于RPM包构建的软件更新机制,能够自动解决软件包之间的依赖关系,解决了日常工作中的大量查找安装依赖包的时间。

    [root@localhost Packages]# yum [选项] 操作 软件包
    
    -y install //安装过程提示选择全部yes
    
    -q install //不显示安装过程
    
    info //显示安装包信息
    
    list //不加包名显示所有已安装和可安装的包信息
    
    deplist //查看包依赖情况
    
    remove //卸载软件
    
    clean //清理缓存目录下的软件包

    (1)c/s架构

    需要服务器来提供服务

    成为服务器一定要有以下两个文件夹 Packages 和 repodata

    • Packages——安装包(Packages不固定,但是统一叫Packages)
    • repodata——元数据(安装包路径,依赖关系,元数据等)

    客户端

    • 客户端需要配置一个文件指明服务器的路径
    • 客户端的配置文件固定位置在 /etc/yum.repos.d/ (客户端配置文件必须以.repo结尾)

    (2)安装过程

    • 客户端第一次连接服务端会将元数据文件保存下来;
    • 再根据元数据中的依赖关系和包路径,将所需要的安装包全部下载下来,放到缓存目录;
    • 安装结束后,将缓存目录中的安装包全部删除。

    (3)配置本地yum源

    一般来说,默认的仓库路径会需要访问互联网,当我们不能访问互联网时,就需要我们搭建本地yum仓库。这样客户端就可以通过本地yum仓库安装软件等。

    搭建一个本地yum仓库需要:

    服务端

    • 安装包 Packges:通过挂载、复制等
    • 元数据 repodata:通过自行生成、复制等

    客户端

    手写配置文件(以.repo结尾)

    //配置文件一般格式
    [base]           --仓库的名字,自定义
    name=CentOS-$releasever - Base     --仓库的描述,自定义
    baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/   --仓库服务器的路径
    gpgcheck=1      --检验包的安全性完整性(1代表需要,0代表不需要)
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7   --如果gpgcheck=1,需要指明验证文件的位置
    enabled=1            --代表启用该仓库(1代表启用,0代表关闭,不写默认开QfoUvyUhq启)
    
    注:
    仓库服务器 baseurl 有四种表示方式
    file://       --本地的路径(当前系统的路径)
    http://       --网页的形式
    https://      --加密
    ftp://        --文件共享服务来实现

    (4)yum安装软件实操

    //通过挂载获取安装包
    [root@localhost ~]#mount /dev/sr0 /mnt
    mount: /dev/sr0 写保护,将以只读方式挂载
    
    //切换到yum源配置目录下
    [root@localhost ~]#cd /etc/yum.repos.d/
    
    //ls查看目录下有很多yum源
    [root@localhost yum.repos.d]#ls
    CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
    CentOS-CR.repo         CentOS-Media.repo      CentOS-x86_64-kernel.repo
    CentOS-Debuginfo.repo  CentOS-Sources.repo
    
    //新建bak目录,将原有yum源移动进去
    [root@localhost yum.repos.d]#mkdir bak
    [root@localhost yum.repos.d]#mv * bak/
    [root@localhost yum.repos.d]#ls bak
    CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
    CentOS-CR.repo         CentOS-Media.repo      CentOS-x86_64-kernel.repo
    CentOS-Debuginfo.repo  CentOS-Sources.repo
    
    //新建本地yum源配置文件并编辑
    [root@localhost yum.repos.d]#vim local.repo
    [local]
    name=local
    baseurl=file:///mnt
    gpgcheck=0
    enabled=1
    
    //清理yum缓存目录
    [root@localhost yum.repos.d]#yum clean all
    已加载插件:fastestmirror, langpacks
    正在清理软件源: local
    Cleaning up list of fastest mirrors
    Other repos take up 850 M of disk space (use js--verbose for details)
    
    //重新建立源数据
    [root@localhost yum.repos.d]#yum makecache 
    已加载插件:fastestmirror, langpacks
    Determining fastest mirrors
    local                                                    | 3.6 kB     00:00     
    (1/4): local/group_gz                                      | 153 kB   00:00     
    (2/4): local/filelists_db                                  | 3.3 MB   00:00     
    (3/4): local/primary_db                                    | 3.3 MB   00:00     
    (4/4): local/other_db                                      | 1.3 MB   00:00     
    元数据缓存已建立
    
    //尝试通过本地yum源下载软件(以php为例)
    [root@localhost yum.repos.d]#yum install php -y
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 php.x86_64.0.5.4.16-48.el7 将被 安装
    --> 正在处理依赖关系 php-common(x86-64) = 5.4.16-48.el7,它被软件包 php-5.4.16-48.el7.x86_64 需要
    ...
    已安装:
      php.x86_64 0:5.4.16-48.el7                                                    
    
    作为依赖被安装:
      httpd.x86_64 0:2.4.6-95.el7.centos  httpd-tools.x86_64 0:2.4.6-95.el7.centos 
      libzip.x86_64 0:0.10.1-8.el7        mailcap.noarch 0:2.1.41-2.el7            
      php-cli.x86_64 0:5.4.16-48.el7      php-common.x86_64 0:5.4.16-48.el7        
    
    完毕!              --安装成功,说明本地yum源可以使用

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新运维

    运维排行榜