Linux软件安装管理

在Linux字符界面下安装软件

一、软件包管理简介

1.软件包分类
    |--源码包 
        |--优点
            |--开源,如果有足够的能力,可以修改源代码
            |--可以自由选择所需的功能
            |--软件是编译安装,所以更加适合自己的系统,更加稳定有效
            |--卸载方便
        |--缺点
            |--安装步骤较多,尤其安装较大软件集合如LAMP时,容易出错
            |--编译时间较长,安装比二进制安装时间长
            |--因为是编译安装,安装过程中一旦报错新手很难解决
    |--二进制包 (RPM包、系统默认包)
        |--二进制包优点
            |--包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
            |--安装速度比源码包安装快得多
        |--二进制包缺点
            |--经过编译,不再可以看到源代码
            |--功能选择不如源码包灵活
            |--多个安装包安装顺序的前后依赖性
    |--如何选择源码包与二进制包
        |--如果软件是给大量用户使用,建议使用源码包安装,由于源码包是自己编译,所以效率更高
        |--如果是少数用户使用,则选择二进制包(RPM包),安装方

2.有一种特别的安装包:
    |--脚本安装包
        |--所谓的脚本安装包就是把复杂的软件包安装过程写成了程序脚本
        |--初学者可以执行程序脚本实现一键安装
        |--但实际安装的还是源码包和二进制包
            |--优点:安装简单、快捷
            |--缺点:完全丧失了自定义性
    |--yum包
        |--其实就是rpm包的在线安装方法
            |--比如安装httpd-devel和gcc

二、rpm命令安装

1.RPM包命名规则
    |--RPM包的来源
        |--所有RPM包都在系统光盘的Packages目录中
            |--挂载光盘
            |--mkdir /mnt/cdrom
            |--mount /dev/sr0 /mnt/cdrom
            |--cd /mnt/cdrom/Package
            |--ls
    |--RPM包命名规则
        |--软件包名-软件版本-软件发布的次数-适合的Linux平台-适合的硬件平台-包扩展名
    |--RPM包依赖性
        |--树形依赖:a->b->c 
            |--解决方法:从后往前安装
        |--环形依赖:a->b->c->a
            |--解决方法:放在一条命令中安装即可
        |--库文件依赖
            |--查询www.rpmfind.net

2.安装命令
    |--包全名
        |--操作的包是没有安装的软件包时,使用包全名,而且要注意路径
    |--包名
        |--操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm中的数据库
    |--RPM安装
        |--rpm -ivh 包全名
            |--在/mnt/cdrom/Packages目录下执行
            |--选项
                |-- -i(install)安装
                |-- -v(verbose)显示详细信息
                |-- -h(hash)显示进度
                |-- --nodeps不检测依赖性
                    |--在正式环境中,安装时必须检测依赖性,否则即使安装成功也无法正常使用。因此,选项【--nodeps】不能加
    |--linux就两种软件包,一个是源码包,一个是rpm包,没有yum软件包
        |--yum安装的就是rpm包,yum其实就是rpm包的在线安装方法
        |--yum可以安装和卸载,但是不能对rpm包进行查询和校验
        |--查询和校验的话,还是要用rpm命令的
    |--例如:安装Apache
        |--rpm安装
            |--httpd-2.2.15...rpm
            |--httpd-manual-2.2.15...rpm
            |--httpd-tools-2.2.15...rpm
        |--yum安装(应为devel工具包的依赖太多)
            |--httpd-devel-2.2.15...rpm

3.升级与卸载
    |--RPM包升级
        |--rpm -Uvh 包全名
        |-- -U(upgrade)升级
    |--卸载
        |--rpm -e 包名
        |-- -e(erase)卸载
        |-- --nodeps不检查依赖性
    |--为什么Linux比Windows简单稳定?
        |--RPM包安装的时候,都是安装在了默认的位置(这个位置都是包的作者定的),所以位置不统一,比较混乱。
        |--因此,RPM提供了卸载命令,卸载时只需要提供包名即可,不用关心安装在了什么地方。
        |--若安装的是源码包,就没这些问题,只要把软件包目录删掉即可
        |--而Windows安装,都会在注册表中生成一大堆的垃圾文件,难以卸载、删除干净
    |--所有已安装的rpm包都保存在/var/lib/rpm/目录下的__db.00n数据库中
    |--我们在任何目录都可以输入卸载命令执行卸载操作,卸载的时候,不需要打包全名,只要打上包名即可
        |--linux会自动去上面的数据库中查找
    |--卸载的时候也有依赖问题,和安装的时候顺序相反
        |--和安装一样一定要解决依赖性

4.RPM包查询
    |--查询是否安装
        |--rpm -q 包名
    |--查询所有已经安装的RPM包
        |--rpm -qa
        |--rpm -qa | grep httpd (管道符)

    |--查询软件包详细信息
        |--查询已安装包软件信息
            |--rpm -qi 包名
        |--查询未安装包信息
            |--rpm -qip 包名

    |--查询包中文件安装位置,列表形式展现
        |--rpm -ql 包名
    |--查询未安装包信息
        |--rpm -qlp 包名
    |--RPM包默认安装路径
        |--/etc/ 配置文件安装目录
        |--/usr/bin/ 可执行的命令安装目录
        |--/usr/lib/ 程序所使用的函数库保存位置
        |--/usr/share/doc/ 基本的软件使用手册保存位置
        |--/usr/share/man/ 帮助文件保存位置

    |--查询系统文件属于哪个RPM软件包
        |--rpm -qf 系统文件名

    |--查询软件包的依赖性
        |--rpm -qR 包名
    |--查询未安装包信息
        |--rpm -qRp 包名

5.RPM包校验
    |--校验指定RPM包中的文件,查看是否和正版软件包一致
        |--rpm -V 已安装的包名
            |--S 文件大小是否改变
            |--M 文件的类型或文件的权限(rwx)是否被改变
            |--5 文件的MD5校验和是否改变(可以看成文件内容是否改变)
            |--D 设备的主从代码是否改变
            |--L 文件路径是否改变
            |--U 文件的属主(所有者)是否改变
            |--G 文件的属组是否改变
            |--T 文件的修改时间是否改变
                |--MD5在论坛上、软件发布时经常用,是为了保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统。
                |--每个文件都可以用MD5验证程序算出一个固定的MD5码来。软件作者往往会事先计算出他的程序的MD5码并帖在网上。
                |--因此,在网上看到某个程序下载旁注明了MD5码时,可以把它记下来,下载了这个程序后用MD5验证程序计算你所下载的文件的MD5码,
                |--和你之前记下MD5码比较,就知道你下的是不是原版了,如果两者相同,那么你所下载的是原版。
                |--如果计算出来的和网上注明的不匹配,那么你下载的这个文件不完整,或是被别人动过手脚。
    |--RPM包中的文件提取
        |--rpm2cpio
            |--将rpm包转换为cpio格式的命令,cpio是一个标准工具,用于创建软件档案文件和从档案文件中提取文件
            |--cpio只知道提取文件,并不知道要从什么地方提取文件
            |--因此我们通常要使用[|]管道符或[<]输入重定向告诉cpio我们应该从什么设备去取出文件
        |--使用输入重定向的cpio命令格式
            |--cpio 选项 < [文件|设备]
                |-- -i:copy-in模式,还原
                |-- -d:还原时自动新建目录
                |-- -v:显示还原过程
        |--使用管道符的cpio命令格式
            |--rpm2cpio 包全名 | cpio -idv .文件绝对路径
                |--前面的.代表当前路径,不能省略,也就是告诉了cpio要去包里提取哪个文件
        |--例如:ls移除,并重新部署在/bin/ls中
            |--whereis ls #查询ls命令的位置
            |--rpm -qf /bin/ls #查询ls命令属于哪个软件包
            |--mv /bin/ls /tmp/ #造成ls命令误删除假象
            |--rpm2cpio /mnt/cdrom/Packages/coreutils-8.4...rpm | cpio -idv ./bin/ls #提取RPM包中ls命令到当前目录的/bin/ls下
            |--cp /root/bin/ls /bin/ #把ls命令复制回/bin/目录,修复文件丢失

6.缺点
    |--安装过程中,rpm包依赖性太强
    |--如果所有rpm包都是手工安装,则rpm包使用难度较大

三、yum在线安装

1.yum源文件
    |--yum的优点
        |--将所有软件包放到官方服务器上,当进行yum在线安装时,可以自动解决依赖性问题
  |--yum的缺点
    |--redhat的yum在线安装需要付费,centOS不需要
  |--在/etc/yum.repos.d/目录中,默认有4个yum源文件
    |--其中CentOS-Base.repo是基本yum源文件,如果我们能上网,那它是默认生效的,而其他的都是默认不生效的

2.光盘搭建yum源
    |--如果没有网络,如何使用yum源?

    |--挂载光盘
        |--mkdir /mnt/cdrom #建立挂载点
        |--mount /dev/sr0 /mnt/cdrom #挂载光盘
    |--使网络yum失效
        |--cd /etc/yum.repos.d/ #进入yum源目录
        |--mv CentOS-Base.repo CentOS—Base.repo CentOS-Base.repo.bak #修改yum源文件后缀名,使其失效
    |--使光盘yum源生效
        |--vim CentOS-Media.repo
            |--baseurl=file:///mnt/cdrom #地址为你自己的光盘挂载地址
            |--enabled=1 #把enabled=0改为enabled=1,让这个yum原配置文件生效

    |--可以使用yum list命令列出当前yum源中的所有rpm包

3.yum命令
    |--查询
        |--yum list #查询所有可用软件包列表
        |--yum search 关键字 #搜索服务器上所有和关键字相关的包
            |--例如:yum search httpd
    |--安装
        |--yum -y install 包名
            |-- install #安装
            |-- -y #自动回答yes
            |--例如:yum -y install httpd-devel
                |--查询验证:rpm -qa | grep httpd
            |--例如:yum -y install gcc #编译器
                |--为后面源码包的安装做铺垫
    |--升级
        |--yum -y update 包名
            |-- update #升级
            |-- -y #自动回答yes
            |--尽量少升级
            |--yum -y update #会升级linux 所有程序 包括内核
    |--卸载
        |--yum -y remove 包名
            |-- remove #卸载
            |-- -y #自动回答yes
            |--尽量不用yum卸载

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

    |--yum软件组管理命令
        |--yum grouplist #列出所有可用的软件组列表
        |--yum groupinstall "软件组名" #安装指定软件组,组名可以由grouplist查询出来
        |--yum groupremove 软件组名 #卸载指定软件组

四、源码包安装

    |--源码包和RPM包的区别
        |--安装之前的区别:概念上的区别
        |--安装之后的区别:安装位置不同
            |--RPM
                |--RPM包是安装在默认位置中
                    |--rpm安装可以指定安装位置:rpm --help | grep prefix
                    |--但是不建议手工指定rpm包的安装位置
                    |--由于RPM包默认安装位置到处都是,所以linux给我们提供了"rpm -e 包名"的卸载命令
                |--RPM包安装的服务可以使用系统服务管理命令(service)来管理
                    |--例如RPM包安装apache的启动方法:
                        |--/etc/rc.d/init.d/httpd start
                        |--service httpd start --> 实际上搜索的就是/etc/rc.d/init.d/目录
            |--源码包
                |--安装在指定位置当中,一般是/usr/local/软件名/
                    |--因为源码包没有卸载命令,所以只能安装到指定位置中,这样才好删除
                |--源码包安装的服务不能被服务管理命令(service)管理,因为没有安装到默认路径中
                    |--只能用绝对路径进行服务的管理,如:
                        |--/usr/local/apache2/bin/apachectl start
                    |--如果将源码包安装后的启动程序复制到/etc/rc.d/init.d目录中,则也是可以使用service命令执行的
            |--安装位置不同,启动方法是有区别的
                |--源码包是不能使用service命令来启动服务,因为源码包的安装位置由用户指定,放在哪并不统一
                |--而rpm包安装后,通常都是放在/etc/rc.d/init.d目录中的,而service命令执行时,会自动搜索该目录,所以rpm包安装的服务可以使用service命令

    |--源码包安装过程
        |--安装准备
            |--安装C语言编译器
                |--yum -y install gcc
                |--rpm -qa | grep gcc
            |--下载源码包
                |--http://mirrors.ustc.edu.cn/apache/httpd下载
            |--下载WinSCP与服务器进行文件的上传下载
        |--"挂载"就是把硬件分区和指定的盘符关联起来的过程,相应盘符称为挂载点,我们只能通过挂载点来访问分区中的内容
            |--比如第一块硬盘的第一个分区/dev/sda1挂载到/boot目录下-->安装系统的同时已经完成
            |--比如插入的光盘/dev/sr0挂载到/mnt/cdrom目录下-->mount /dev/sr0 /mnt/cdrom(卸载-->unmount /mnt/cdrom)
            |--查看硬盘分区使用情况-->df -h
            |--找到光盘完整路径名-->ll /dev | grep cdrom
        |--因为安装位置不同,所以可以同时装上rpm包的和源码包的Apache,但是启动只能二选一
        |--安装注意事项
            |--源代码保存位置:/usr/local/src
            |--软件安装位置:/usr/local
            |--如何确定安装过程报错:
                |--安装过程停止,并出现error、warning或no的提示
        |--源代码安装过程
            |--下载源码包,并用WinSCP上传至服务器
            |--解压缩下载的源码包 tar -zxvf httpd-2.2.31...tar.gz
            |--安装时必须进入到解压缩后的目录中 cd httpd-2.2.31
            |--执行./configure命令,该命令用于软件配置与检查
                |--基本上每个源码包都会有该命令,即使个别的没有该命令,也会提供相关替代命令,功能如下:
                    |--定义需要的功能选项
                    |--检测系统环境是否符合安装要求
                    |--把a中定义好的功能选项和b中检测系统环境的信息都写入Makefile文件,用于后续的编辑
                        |--后续的make和make install命令都会依赖该文件
                |--执行命令./configure --prefix=/usr/local/apache2,该命令用于指定安装位置为/usr/local/apache2
                    |--其中的apache2目录不需要提前创建,make install命令执行时会自动创建
                |--命令执行后,会在当前目录生成Makefile文件
            |--执行make命令,编译源码,这一步通常比较耗时
            |--执行make install命令,安装程序,此时会创建/usr/local/apache2目录
            |--没有报错,安装成功。执行/usr/local/apache2/bin/apachectl start启动源码包安装版的apache

            |--注:如果命令执行过程中发生终止,并且出现error、warn或no提示,则表明出错,否则,一切正常
                |--若执行./configure或make命令时出现错误,是不需要删除/usr/local/apache2目录的,因为程序还没有真正安装
                    |--只需要执行make clean命令即可,该命令用于清除缓存、临时文件等,使安装环境恢复到未安装状态
                |--若执行make install命令时报错,则需要删除/usr/local/apache2目录,并且执行make clean命令才行

五、脚本安装包

    |--Nginx一款强大的轻量级Web服务器/反向代理服务器及电子邮件代理服务器,支持高并发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值