![f8d14e1616b3527208e87888d8d374c6.png](https://i-blog.csdnimg.cn/blog_migrate/100049e5a24f3926957a26fc73707dd8.jpeg)
【131】
Linux软件安装
这里主要有三种:
- 编译安装(麻烦,不推荐)
- rpm安装(一般,不太推荐)
- yum安装(推荐)
一、编译安装
编译安装是最麻烦的方式,一般不推荐使用。但是我们依然要了解下,万一以后不得已用到了呢?我们拿淘宝的Tengine(基于Nginx的Web服务器)的安装示例:
![94f1a726fa4b9046b00a7436cf4a34c7.png](https://i-blog.csdnimg.cn/blog_migrate/9354d1dc11ac802063adf98ea4e1cc79.png)
首先解压: tar -zxvf tengine-2.1.0.tar.gz
解压完成后,有一个tengine的文件夹,我们进入查看README文件
![b77a5acddd3b11c684950f9cc69e5ef5.png](https://i-blog.csdnimg.cn/blog_migrate/81843138e5a5426c790a158e779991c6.png)
README文件找到如下内容,要安装Tengine,需要执行下面三个步骤:
![d29fe9efe1655c0589bfc27a0d454cfd.png](https://i-blog.csdnimg.cn/blog_migrate/c7acf1883cc215bf282c77a045fc6520.png)
./configure :执行configure生成一个mikefile文件,用于生成各个模块依赖【./configure --help查看帮助】。
我们试着执行下,发现有个错误,C编译器环境没有,也就是没有gcc
![fdc47d321bfff5a6ba72c5012adf7b29.png](https://i-blog.csdnimg.cn/blog_migrate/2178c0afed4426e3172fb8a077db7785.png)
我们来安装下gcc ,命令yum install -y gcc
,安装完成后我们再次执行./configure命令,发现又有一个错误,缺少PCRE库:
![643a7b39e5e2b9e31fb237acaaf979d7.png](https://i-blog.csdnimg.cn/blog_migrate/b3cf370c8995eff45b1d96d4fdeea709.png)
我们不知道,PCRE是啥意思,命令yum search PCRE
查看如下,我们选择安装开发版本的pcre包,命令yum install pcre-devel
,不用选择32位的还是64位的,会自动识别。
![v2-c2d88a190535745992054348d65bf204_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=d37e2b06-bd12-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-c2d88a190535745992054348d65bf204_b.jpg)
安装完成,我们继续执行./configure文件,发现又有一个错误!!!,如图所示,和上面操作一样,安装吧。。。。。。
![be1c915a49dc70cad3ce7bfdecaa907b.png](https://i-blog.csdnimg.cn/blog_migrate/9592b9d40c817bee1c94abc70737f3df.png)
直到我们安装完,所有缺少的包,执行./configure,结果如下所示:
![2241ce337551589bcc5380a3c9bd7c01.png](https://i-blog.csdnimg.cn/blog_migrate/d1f8a18dbf974fdd7252277e16c58fda.png)
来查看一下,Makefile文件如下图所示,我们在读取README文件的时候知道第一步是执行./configure文集,第二步就是执行make命令(没有参数)。n那么没有参数,他就会默认找default对应的build。也就是执行/objs/下的Makefile文件,记得不是tengine-2.1.0文件下的Makefile。
![458b70933f2d27dd637500f16f74da6b.png](https://i-blog.csdnimg.cn/blog_migrate/f5d9aaa189043c91544fc29ed9883296.png)
/objs/Makefile里面有哪些东西呢?里面指定了一些文件安装的目录,以及编译过程描述。因此make就是执行我们Makefile所指定的编译过程。回到tengine根目录下执行make命令,然后执行make install。当看到如下显示,说明编译并安装完成。
![2fcfc4fbff4283b5229c637d46a051da.png](https://i-blog.csdnimg.cn/blog_migrate/77479f7b131a7333f52f48aa97a21805.png)
我们最后到来测试下nginx是否可以执行,到/usr/local/下找到nginx并找到可执行文件(说明:Linux默认都是安装在我们/usr/local文件目录下的):
![b523af0be187a83aaacf42e61c844bcc.png](https://i-blog.csdnimg.cn/blog_migrate/de5149cd06270bf350fc1b569f59570d.png)
nginx启动成功了。既然nginx是一个web服务器那么他就可以通过浏览器来访问【ps->记得关闭防火墙 service iptables stop
】:
![533c436dabf34e89de59e8b1d2fe1a9f.png](https://i-blog.csdnimg.cn/blog_migrate/785682342af8c56b39aa5ed125b2936d.jpeg)
至此我们的编译安装tengine的示例完成,但是特别麻烦,需要自己去安装一些依赖的库。因此不推荐,一般也不采用这样的方式。我们有更好的方式。
二、rpm安装
- Redhat提供了rpm管理体系
- 已经编译的软件包:针对不同的平台系统编译目标软件包
- 操作系统维护安装信息
- 软件包包含依赖检查,但,还需人为解决
示例安装:
安装jdk-7u67-linux-x64.rpm,执行命令如下:rpm -ivh jdk-7u67-linux-x64.rpm
- i:install
- v:显示安装进度
安装完如下,我们执行java -version
来查看发现安装成功了,但是我们并没有配置环境变量,在执行下java的内部命令jps
发现命令没有找到:
![afabe0347c705a8deead5af68057eadb.png](https://i-blog.csdnimg.cn/blog_migrate/d806ce43bc378152debb41c6a3cf9f42.png)
为什么环境变量没有配置反而java -version可以执行呢?
因为安装java的过程中会有个小脚本,让java指向/usr/java下的default
![f685eae7c7c562d09d8ebeb983d26843.png](https://i-blog.csdnimg.cn/blog_migrate/7ec9b43d1fe35822f458bd8209c2a8d0.png)
![d64ac824809bf66dcd30a868d6da7bb8.png](https://i-blog.csdnimg.cn/blog_migrate/732de020a004ca2f2c7bc7d195f2bd39.png)
配置环境变量:
![5e13f1ef70a0ab0d7fb8d282ff04ea8d.png](https://i-blog.csdnimg.cn/blog_migrate/2bde1936521317ada4dcfe7fb3d69ae1.png)
![3c7410bd0de8d7125a7fc0663ab97048.png](https://i-blog.csdnimg.cn/blog_migrate/0336f3aa427b8318ef96b92aac22167b.png)
生效并测试:
![7433105cc15f9a2c8f2b0467d1eef9ef.png](https://i-blog.csdnimg.cn/blog_migrate/856e2c0c3cbcf617fc4f15ae3024788a.png)
命令总结:
- rpm安装
- -ivh filename
- --prefix
- rpm升级
- -Uvh
- -Fvh
- rpm卸载
- -e PACKAGE_NAME
- rpm查询(类似windows 控制面板-程序/卸载)
- rpm -qa : 查询已经安装的所有包
- rpm -q PACKAGE_NAME: 查询指定的包是否已经安装
- rpm -qi PACKAGE_NAME: 查询指定包的说明信息
- rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表
- rpm -qc PACEAGE_NEME:查询指定包安装的配置文件
- rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件
- rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本
- rpm -qf /path/to/somefile: 查询文件是由哪个rpm包安装生成的
- 如果某rpm包尚未安装,需查询其说明信息、安装以后会生成的文件
- rpm -qpi /PATH/TO/PACKAGE_FILE
- rpm -qpl
![753cb3ef628e69fc23b5b00f31400212.png](https://i-blog.csdnimg.cn/blog_migrate/7455bdf25a5c1ebc37ab9cc22c002d5a.png)
查询某个工具需要安装那个包示例:
![b98a03a26a58cb913b47b3d7abf3d2b3.png](https://i-blog.csdnimg.cn/blog_migrate/e59a318dd8a6407dace3f827b8a663b3.png)
说明:rpm会有一个数据库记录文件安装的目录以及所对应的包,及时文件被移除,也能查询出来需要安装的包。但是:
有的包需要相关的依赖,如果没有还是会像编译安装一样先安装相关依赖的包比较麻烦。
三、yum安装
- 基于rpm包管理
- 提供rpm仓库
国内镜像仓库:
- http://mirrors.163.com/
- https://opsx.alibaba.com/mirror
查看yum仓库配置:
![5232802614492feab73f965d35dace9b.png](https://i-blog.csdnimg.cn/blog_migrate/a3a57214b8b3bd7f3520b88289c11c7e.png)
配置镜像仓库(如阿里的):
1.备份配置文件:
![1cc8d18a3a2c5a5ca5afb7fa7fe711c6.png](https://i-blog.csdnimg.cn/blog_migrate/7b5ac9e68ef78839a8722467e256afda.png)
2.安装wget工具:yum install wget -y
3.复制阿里云帮助文档的命令:
![ce85da4cb54ff7f8cb8076a75926753c.png](https://i-blog.csdnimg.cn/blog_migrate/017e4b022d0af8c85ed1974f10dfb051.png)
完成后有如下文件:
![0d1d8e24700fd97fe83884b85d94e0e1.png](https://i-blog.csdnimg.cn/blog_migrate/edf6175480b648a9fefe4fb85f614b42.png)
4.生成缓存【注意应当先清除之前的依赖】
![9915207ed9a5152f2404145b80a5fb9d.png](https://i-blog.csdnimg.cn/blog_migrate/0569309092158622d79c5ce950d4108e.png)
5.接下来就可以愉快的从阿里镜像库下载软件了。
6.网易镜像库同理,使用帮助:http://mirrors.163.com/.help/centos.html配置本地源:
1.修改CentOS-Base.repo文件
之前阿里云的配置如下:
![7ef473503748cc3d18590c27c77eb18f.png](https://i-blog.csdnimg.cn/blog_migrate/d90cad288cd5aea982ede68e5e1f4aca.png)
配置后如下:
![694df7da841a5ec5179d48a17c710ba5.png](https://i-blog.csdnimg.cn/blog_migrate/4a5362d85970020c4703d5d3e6eabb55.png)
说明:baseurl=
- http:// 互联网上
- file:// 本地
- ftp:// ftp服务
2.清除依赖-生成依赖yum clean all
yum makecache
3.注意记得挂载上含有仓库的目录 mount /dev/cdrom /myrepo
,有时候明明有依赖却下载失败,就是因为没有挂载上仓库目录。yum常用命令:
- yum repolist
- yum clean all
- yum makecache
- yum update
- 查询:
- yum list 列出安装的包
- yum search 查询
- yum info 如 yum info mysql-server
- 安装&卸载:
- yum install 安装
- remove|erase 卸载
- 分组
- yum grouplist
- yum groupinfo
- yum groupinstall
- yum groupremove
- yum groupupdate
注意如果安装的包中间包含空格,需要用引号括起来
如 Romanian Support 要括起来“Romanian Support”