linux安装应用的几种方式

本文内容为各个博客的整理

以下的操作都基于centos7。
centos安装软件,主要有以下3种方式
1.最简单最便捷的方式,使用yum命令
安装:yum install -y 软件名
更新:yum update -y 软件名
卸载:yum remove -y 软件名 或 yum erase -y 软件名

但是需要注意,似乎不是所有软件都可以直接使用yum命令安装,例如安装nginx时,因为nginx位于第三方的yum源里面,而不在centos官方yum源里面,因此需要先安装epel,安装epel可以选择直接yum install epel-release安装,也可以通过下面介绍的rpm的方式,到epel官网下载相应的rpm包通过rpm命令安装。

2.稍微复杂一点的,使用rpm方式,rpm英文是redhat package manager ,也就是redhat 软件包的管理。rpm是以一种数据库记录的方式来将所需要的套件安装在Linux主机的一套管理程序。也就是说Linux系统中存在一个关于rpm的数据库,它记录了安装的包与包之间的依赖相关性。rpm包是预先在Linux主机上编译好并打包的二进制文件,省去了下面介绍的源码包安装的编译等过程,安装起来非常快捷。

(1)对于需要安装的应用,到对应的官网下载对应的rpm包,然后放到对应的目录下,或者可以先cd到对应的目录,使用wget命令,例如wegt rpm包的url地址。
(2)执行命令rmp –ivh **.rpm,进行应用的安装
其中:
-i ,–install 安装软件包
-v, --verbose 提供更多的详细信息输出
-h ,–hash 软件包安装的时候列出哈希标记,加-h的目的是为了显示安装的进度条

ps:RPM常用命令:
-i 安装软件包
–nodeps 不验证软件包的依赖
  -v 可视化,提供更多的详细信息的输出
  -h 显示安装进度
  另外的常用的附带参数为:
   --force 强制安装,即使覆盖其他包的文件也要安装
-a 查询所有已经安装的软件包
-f 查询 文件所属于的软件包
-q 查询软件包(通常用来看下还未安装的软件包)
-l 显示软件包的文件列表
-d 显示被标注为文档的文件列表
-c 显示被标注为配置文件的文件列表 最后这两个用的很少了、

ps:
更新软件:rpm -Uvh soft.version.rpm
卸载软件:查找欲卸载的软件包 rpm -qa | grep XXX
例如找到软件mysql-4.1.22-2.el4_8.4 ,执行rpm -e mysql-4.1.22-2.el4_8.4
查询软件的安装目录: rpm -ql mysql-4.1.22-2.el4_8.4

3.通过源码包编译安装软件
原文链接:https://www.jianshu.com/p/ee60a9d6bd7d
源码包:即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包)。
二进制包:如 Red Hat发行版的.rpm包,Debian发行版的.deb包。源码包编译后产生二进制包

源码包的大致安装过程:
获取到软件的源码包->通过编译器编译源码->生成可执行的二进制文件
(1)获取软件的源码包:可以直接去对应官网下载,也可以像前面一样通过wget命令获取,下载的源码包一般为用gzip压缩过的tar包,后缀为.tar.gz。到源码包的目录下,执行tar -xzvf来解开这个包,如:
#tar -xzvf apache_1_3_6_tar.gz。这样就会在当前目录中创建了一个新目录(目录名与.tat.gz包的文件名类似),用来存放解压了的内容。如本例中就是apache_1.3.6
源码包安装的详细过程:
linux安装应用的几种方式
(2)在上图第二步中的–prefix后面接的路径表示这个软件将要安装到哪个目录去,如果没有指定–prefix=/path这个参数,通常默认为/usr/local。本人推荐安装位置为 /usr/local/XXX,XXX为自己的实际目录,这样会方便以后的管理。

ps:源码包安装方式的man文件默认保存在/usr/local/man或/usr/local/share/man中,如果你的安装路径自定义为如/usr/local/XXX,则man文件则一般是在/usr/local/XXX/share/man中。此时如果你想要通过man来查看你所安装软件的man手册,则需要自行修改man的路径配置文件(可能是man.config或者manpath.config)。需要在相应位置添加如下一行:
MANPATH /usr/local/XXX/share/man

(3)关于源码包安装软件的卸载:
通过源码包安装的软件,当你想要卸载的时候,只需要把整个安装路径删除掉就行了,100%卸载,不会像windows那样经常会残留那多注册表之类的垃圾。
根据你的安装时候选择的安装路径,源码包的卸载又仓库两种情况:
如果你安装时候指定的路径为: --prefix=/usr/local/XXX,那么卸载的时候只需要把XXX这个文件夹删除即可,因为该软件安装的所有文件都是放置在XXX这个文件夹。
但如果你进行源码包安装的时候没有指定位置(默认值一般为/usr/local/),或指定的位置为–prefix=/usr/local,则这时候你安装软件生成的文件将分别存储在/usr/local/里面的bin、lib或ect等目录中,这时候卸载起来就相对麻烦一点了。
另外,也可以在安装目录执行make uninstall,如果不支持,才选择直接删除安装所产生的文件

附:RPM包默认安装路径
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件保存位置
/usr/local/ 源码包安装位置
安装在指定位置当中,一般是/usr/local/软件名/

4.查看centos某个软件是否已经被安装
(1)yum方法安装的,可以用yum list installed查找,如果是查找指定包,命令后加 | grep “软件名或者包名度”。
(2)rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep “软件或者包的名字”。
(3)如果是以源码包自己编译安装的,例如.tar.gz或者tar.bz2形式的,这个只能看可执行文件是否存在了,
上面两种方法都看不到这种源码形式安装的包。如果是以root用户安装的,可执行程序通常都在/sbin:/usr/bin目录下,如果是用户自定义安装的则文件都在该目录下。

5.3种安装方式的优缺点
5.3.1 yum优缺点
优点:yum安装的优点,做运维的都很清楚,安装东西,方便快捷,特别是不用考虑包依赖。
缺点:(1)安装过程,人为无法干预,不能按需,安装。源里面有什么就安装什么,安装的版本也比较低。
(2)此方式适合初学者,简单方便,不用考虑依赖关系。但有些软件并不能通过yum来安装。
(3)YUM不能自定义软件的模块和功能,不能自定义软件部署的路径,对后期的维护成本会增加;
(4)大部分生产环境要求服务器的环境配置要一致,如果是yum安装,机房和机房之间,国家和国家之间,yum的库不能保持一致,会很蛋疼。
5.3.2 rpm优缺点
优点:(1)包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
(2)RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:
/etc/rc.d/init.d/httpd start
service httpd start
(3)RPM包是经过编译的,不能看到源代码,但是它安装更快,报错更容易解决,只有依赖性问题
缺点:(1)功能选择不如源码包灵活
(2)经过编译,不可以再看到源码

5.3.3 源码优缺点
优点:(1)‘最大的好处就是可以自行调整编译参数,最大化地定制安装结果。
(2)源码安装可以选择最新的软件包,而Linux系统(包括FreeBSD)自带的软件包一般都是最稳定的版本,但不能保证是最新的。
(3)源码包安装的软件卸载时极为方便和简单,更重要的是,它比较安全,尤其是对线上的生产环境而言
(4)迁徙也比较方便,如果不涉及系统库文件,复制到另一台机器上也可以使用
缺点:(1)源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如:
/usr/local/apache2/bin/apachectl start
(2)源码包是开源的,比RPM包安装更*,但是它安装更慢,更容易报错
(3)由于安装包过新或者是其他问题,导致依赖的包没有,或者版本过低。这个时候就要解决包的依赖问题,linux系统中有的包,一个依赖一个,可能装一个小东西,就要解决一堆包的依赖问题,花很多时间解决包的依赖问题,得不尝失。源码安装的多了,不敢升级系统,升级系统,可能会导致以前手动装的东西,不能用。

5.3.4综上所述,大型的软件包、软件服务,采用源码编译
小型的软件环境,库文件,YUM