• Linux软件安装


    前面的话

      window里面的软件无法在linux中安装,好处是windows中绝大多数的木马、病毒对Linux没有影响,坏处是软件需要针对linux再次开发。本文将详细介绍Linux软件安装

    分类

    【1】源码包

      源码包的优点:

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

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

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

      4、卸载方便;

      源码包的缺点:

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

      2、编译过程时间较长,安装比二进制安装时间长

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

    【2】二进制包(RPM包、系统默认包)

      二进制包是指源码包经过编译之后的包,也就是常说的RPM包

      二进制包的优点:

      1、包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

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

      二进制包的缺点:

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

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

      3、依赖性

    【3】脚本安装包

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

      优点:安装简单、快捷

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

    RPM

      所有RPM包都在系统光盘的Packages目录中

    mkdir /mnt/cdrom/
    mount /dev/sr0  /mnt/cdrom/
    cd /mnt/cdrom/Packages/

    【命名规则】

    httpd-2.2.15-15.el6.centsos.1.i686.rpm

      httpd 软件包名

      2.2.15 软件版本

      15 发布的次数

      el6.centos 适合的Linux平台

      i686 适应的硬件平台

      rpm 包扩展名

    【依赖性】

      1、树形依赖:a->b->c 解决方法:从后往前安装

      2、环形依赖:a->b->c->a 解决方法:放在一条命令中安装即可

      3、模块依赖:库文件依赖,库也叫模块,就是linux中的函数,它有一个典型的特征,就是以【.so.数字】结尾,它依赖的其实是一个文件,而不是软件包。该文件藏身在某一个软件包当中。只要将该文件所在的软件包安装上,该文件也就安装了。解决方法:登录www.rpmfind.net网站,输入库文件名称查询到对应的rpm包,然后安装即可

      

    RPM安装

    【包名】

      包全名:操作的包是没有安装的软件包时,要使用包全名,且要注意路径

      包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库

      比如,httpd-2.2.15-15.el6.centsos.1.i686.rpm是包全名,而httpd是包名

    【安装命令】

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

    【升级命令】

    rpm -Uvh 包全名
    选项:
        -U(upgrade) 升级

    【卸载命令】

      [注意]卸载命令使用的是包名,而且不一定要在安装目录下

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

    查询与检验

    【查询是否安装】

    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包】

    rpm -qf 系统文件名
      -f 查询系统文件属于哪个软件包(file)

    【查询软件包的依赖性】

    rpm -qR 包名
        -R 查询软件包的依赖性(requires)
        -p 查询未安装包信息(package)

    【校验】

    rpm -V 已安装的包名
        -V: 校验指定RPM包中的文件(verify)

      执行 rpm -V httpd 后,无任何提示,代表该文件没有被做任何修改。因此,判断本地的apache与官方给出的是否一致, 从而判断是否被修改

      修改文件 /etc/httpd/conf/httpd.conf , 在注释行添加任意内容后, 再次执行rpm -V httpd 后,有如下提示

    S.5....T. c /etc/httpd/conf/httpd.conf

      验证内容中的8个信息的具体内容如下

    S : 文件大小是否改变
    M : 文件的类型或文件的权限( rwx )是否被改变
    5 : 文件MD5校验和是否改变( 可以看成文件内容是否改变 )
    D : 设备的主从代码是否改变
    L : 文件路径是否改变
    U : 文件的属主( 所有者 ) 是否改变
    G : 文件的属组是否改变
    T : 文件的修改时间是否改变 

    【RPM包中的文件提取】

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

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

    rpm2cpio 包全名 | cpio -idv .文件绝对路径
    cpio选项 < [文件|设备]
    选项
        -i: copy-in模式,还原
        -d:还原时自动新建目录
        -v:显示还原过程

    YUM

      使用yum安装的好处在于,所有软件包都在官方服务器上,当进行yum在线安装时,可以自动解决依赖性问题

      [注意]redhat的yum在线装需要付费,centOS不需要

    【yum源文件】

      在/etc/yum.repos.d/目录中,默认有4个yum源文件,其中CentOS-Base.repo是基本yum源文件,如果能上网,那它是默认生效的,而其他的都是默认不生效的

    [base]:容器名称,一定要放在[]中,名字可以随便起
    name:容器说明,名字也是随便起
    mirrorlist:镜像站点,这个可以注释掉
    baseurl:yum源服务器的地址,默认是CentOS官方的yum源服务器。如果觉得慢,可以修改为其他yum源地址
    enabled:如果不写或写成enable=1则生效,写成enable=0则不生效。默认最后一个容器不生效,其他容器都生效
    gpgcheck:如果是1,则RPM的数字证书生效,0则不生效。一般都要开启,开启后安装时会验证rpm包是否是官方的,以保证系统安全
    gpgkey:数字证书的公钥文件保存位置,不用修改

      默认系统安装后,在目录/etc/pki/rpm-gpg下都会存在数字证书。前面的file://表示文件协议,后面的/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7是数字证书的位置

    【光盘yum源搭建】

      1、挂载光盘

    mkdir /mnt/cdrom
    #建立挂载点
    
    mount /dev/sr0 /mnt/cdrom
    #挂载光盘

      2、使网络yum源失效

      判断yum源是根据后缀名repo来实现的,修改后缀名则可以使该yum源失效

    cd/etc/yum.repos.d/
    #进入yum源目录
    mv CentOS-Base.repo CentOS-Base.repo.bak
    #修改Yum源文件后缀名,使其失效

      3、使光盘yum源生效

    vim CentOS-Media.repo

      baseurl=file:///mnt/cdrom:地址为光盘挂载地址,如果有多余的光盘挂载点,需要注释掉不存在或不需要使用的光盘挂载地址

      [注意]注释的时候,一定要把引号写在行首,否则不生效

      enabled=1:把enabled=0改为enabled=1,使该yum源配置生效

      4、命令

      yum list:该命令可验证目前使用的yum源有哪些可用的rpm包

    【yum命令】

    【查询】

    yun list
    #查询所有可用软件包列表
    yum search 关键字
    #搜索服务器上所有和关键字相关的包

    【安装】

      yum安装只写包名即可

    yum -y install 包名
      选项:
      -install 安装
      -y  (自动回答yes)

    【gcc安装】

      gcc是C语言的编译器,gdk是java的编译器,bash是linux命令行的编译器

    yum -y install gcc

    【升级】

      如果不写包名,只写yum -y update会导致系统直接崩溃

    yum -y update 包名
        -update:升级
        -y:自动回答yes

    【卸载】

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

    yum -y remove 包名
        -remove:卸载
        -y:自动回答yes

    【组管理命令】

    yum grouplist
    #列出所有可用的软件列表
    
    yum groupinstall 软件组名
    #安装指定软件组,组名可以由grouplist查询出来
    
    yum gourpremove 软件组名
    #卸载指定软件组

      [注意]groupinstall中的软件组名只支持英文 

    【语言设置】

    LANG=en_US:切换至英文(临时生效)
    LANG=zh_CN.utf8:切换至中文(临时生效)

    源码包安装

      源码包和RPM包在安装之后,最主要的区别在于安装位置的不同

      源码包是不能使用service命令来启动服务,因为源码包的安装位置由用户指定,放在哪并不统一,一般将其放在“/usr/local/软件名”目录下;而rpm包安装后,启动文件通常都是放在/etc/rc.d/init.d目录中的,而service命令执行时,会自动搜索该目录,所以rpm包安装的服务可以使用service命令

    service httpd start

      因为源码包安装的服务不能被服务器管理命令管理,所以只能使用绝对路径进行服务的管理

    /usr/local/apache2/bin/apachectl start

      当然,如果将源码包安装后的启动程序复制到/etc/rc.d/init.d目录下,也可以使用service命令执行

    【安装准备】

      1、安装gcc

      由于源码包都是c语言写的,所以要先安装c语言编译器:gcc

      2、源码包下载

      从官方网站下载源码包,若是下载到了windows上面,可以使用winSCP等软件传到linux上

       [注意]若已安装了二进制包,则源码包也是可以继续安装的,因为两者安装目录不一样。但是,并不建议这样做,因为端口会冲突

      对于要求效率的软件,要安装源码包版本,因为是本机编译,更具有兼容性和效率,而rpm包是软件开发者提供的大众版本,可用于不注重效率的应用

    【注意事项】

      源代码保存位置:/usr/local/src/

      软件保存位置: /usr/local/

      如何确定安装过程报错:安装过程停止,并出现error、warning或no的提示

    【安装】

      源码包的安装过程和安装顺序是固定的,下面以安装apache2为例,解压缩后的目录为httpd-2.2.31

      1、安装时必须进入到解压缩后的目录httpd-2.2.31中

      2、configure命令用于软件配置与检查(基本上每个源码包都会有该命令,即使个别的没有该命令,也会提供相关替代命令)

      它有以下几点功能:

      a、定义需要的功能选项;

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

      c、把a中定义好的功能选项和b中检测系统环境的信息都写入Makefile文件,用于后续的编辑(后续的'make'和'make install'命令都会依赖该文件)

      执行命令 ./configure --prefix=/usr/local/apache2,该命令用于指定安装位置为:/usr/local/apache2 (其中的'apache2'目录不需要提前创建,'make install'命令执行时会自动创建)。命令执行后,会在当前目录生成Makefile文件

      3、执行‘make’命令,编译源码(这一步通常比较耗时)

      如果在编译过程中报错,则执行make clean命令来清除缓存、临时文件等,使安装环境恢复到未安装状态

      4、执行make install命令,安装程序,此时会创建/usr/local/apache2目录

      若在安装过程中报错,则需要删除/usr/local/apache2目录,并且执行make clean命令

      

    脚本安装

      所谓的一键安装包,实际上还是安装的源码包与RPM包,只是把安装过程写成了脚本,便于初学者安装。优点是简单、快速、方便。缺点是不能定义安装软件的版本,不能定义所需要的软件功能,源码包的优势丧失

      下面以安装LNMP(http://lnmp.org/download.html)为例

    【准备工作】

      1、先停止之前安装的apache和mysql服务(最好将源码包安装的apache目录'/usr/local/apache2'也删除

    service apache stop
    service httpd stop

      2、保证yum源正常:可以使用"yum list"命令测试。若是光盘yum源,记得挂载光盘

      3、关闭SELinux和防火墙

      a、永久关闭SELinux的方法:编辑文件"/etc/selinux/config",将"SELINUX=enforcing"改为"SELINUX=disabled",然后重启系统即可

      b、永久关闭防火墙的方法:"chkconfig iptables off",开启为:"chkconfig iptables on";

      临时关闭防火墙的方法:"service iptables stop",开启为:"service iptables start"

    【开始安装】

      1、将lnmp.org网站的一键安装包上传到服务器根目录下

      2、解压缩安装包

    tar -zxvf lnmp1.4-full.tar.gz

      3、进入安装目录

    cd lnmp1.4

      4、执行install.sh脚本

    ./install.sh

    【安装过程】

      运行上述LNMP安装命令后,会出现如下提示:

      目前提供了较多的MySQL、MariaDB版本和不安装数据库的选项,需要注意的是MySQL 5.6,5.7及MariaDB 10必须在1G以上内存的更高配置上才能选择!输入对应MySQL或MariaDB版本前面的序号,回车进入下一步.

      需要设置MySQL的root密码(不输入直接回车将会设置为root)如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除(个别情况下是只需要Backspace键)。输入后回车进入下一步,如下图所示:

      询问是否需要启用MySQL InnoDB,InnoDB引擎默认为开启,一般建议开启,直接回车或输入 y ,如果确定确实不需要该引擎可以输入 n,输入完成,回车进入下一步。注意:选择PHP7等高版本时需要自行确认是否与自己的程序兼容。

      输入要选择的PHP版本的序号,回车进入下一步,选择是否安装内存优化:

      可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车,直接回车为默认为不安装

      接着,会提示"Press any key to install...or Press Ctrl+c to cancel"后,按回车键确认开始安装。 LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响

      界面如下,表示安装完成

    【错误处理】

      如果安装卡在了"php-fpm"那里,通常表示已安装成功,只是"php-fpm"那里卡住了(物理机少见,但虚拟机比较常见),解决的方法就是:使用命令"pkill -9 php-fpm"杀掉"php-fpm"进程,然后重新启动该进程"/etc/rc.d/init.d/php-fpm start"即可

  • 相关阅读:
    童鞋,[HttpClient发送文件] 的技术实践请查收
    有关[Http持久连接]的一切,卷给你看
    浅谈MemoryCache的原生插值方式
    HTTP1.1 KeepAlive到底算不算长连接?
    C2 hits the assertion assert(base>is_AddP()) failed: should be addp but is Phi
    C2 EA
    OOM Hook
    C2 Loop predicate
    C2 Build IR
    C2 CCP
  • 原文地址:https://www.cnblogs.com/xiaohuochai/p/7635185.html
Copyright © 2020-2023  润新知