本文是我学习Hadoop搭建过程中的各种笔记,内容来自于各种公开的教程,起点非常低,从Linux基础开始,直至在PC上搭建Hadoop成功,是真正的从零开始。
感谢过程中帮助我的各位认识的和不认识的老师。
14、Linux中二进制包安装(Linux中jdk的安装)-1:
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
基本信息
在Linux下安装软件难度高于Windows、Android、iOS和windows python下软件的安装,Linux下软件的安装大概可以分为如下几种:
二进制程序的安装(最简单的安装)
Rpm程序安装(后缀名为 *.rpm)
Yum在线安装(本质也是rpm安装,它只是rpm的一种安装方式而已)
源码安装
1.二进制程序安装
Linux下二进制格式的软件是指事先已经在各
种平台编译安装好相关软件,然后压缩打包,在安装时只需解压或者执行文件即可。这种软件发行格式类似于Windows系统,这样做的原因是保护源代码程序不对外泄露,保护知识产权。
二进制软件包优点:安装简单容易
缺点:缺乏灵活性,相应的软件包执行在对应平台下安装,离开这个环境软件就无法运行。
二进制软件包提供了很多类型的打包方式,最常见的就是RPM格式包,还有以“*.tar.gz、 *.tgz、 *.bz2”等形式的二进制软件包,最后一个就是提供安装程序进行安装的二进制软件包,下面分别介绍:
1.1安装“*.tgz、 *.bz2”二进制软件包
这种格式的软件包,安装其实就是简单的解压过程,根据不同的软件打包格式,用相应的解压命令解压即可
对于*.tgz软件格式解压:tar –zxvf xxxxxx.tar.gz
对于*.bz2软件格式解压:tar –jxvf xxxxxx.tar.gz
这类软件的卸载,对于解压后只有单一目录的软件,可以直接删除对应软件目录即可,如果解压后文件分散在几个目录中,需要一一手动删除目录
列如:我们常用的应用服务器容器tomcat软件就是基于这种打包压缩格式发行的,我们只需下载后解压即可,如果需要卸载,直接删除对应的toncat目录即可
在安装软件(java)之前,查看有没有,是什么版本: java –version
[[email protected] home]# java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
这里有java,要卸载,卸载有两种:改名字和真正卸载,以防后面用到,改名字:
查看java的位置:
[[email protected] home]# which java
/usr/bin/java
改Java的名字:mv / urs/bin/java urs/bin/java.bak
[[email protected] home]# mv /usr/bin/java /usr/bin/java.bak
此时再which java,就找不到了,Java的版本信息也都没有了(达到了卸载的效果)
[[email protected] home]# which java
/usr/bin/which: no java in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[[email protected] home]# java -version
-bash: /usr/bin/java: No such file or directory
【把包拿到home目录下 连接不上Xftp5
【把jdk的包解压的usr/local下面:tar –zxvf ./jdk-7u79-linux-x64.gz –C /usr/local/】
【查看ll/usr/local,下面就多了jdk-7u79】
【cd/usr/local/jdk1.7.0_79/】
【此时查看java –version还是不行的,原因是没有配置环境变量】
【可以这样: ./bin/java -version】
【配置环境变量:vi /etc/profile (/etc/profile是全局的,所以用户都能用)】
【跑到最后一行的操作:Shift + G】
【按O换行】
【敲:my settings
JAVA_HOME=】
【yes c键退出】
【输入:cd/usr/local/ jdk1.7.0_79/】
【JAVA_HOME= cd/usr/local/ jdk1.7.0_79/】
把它加到环境变量:
【PATH=$PATH:$JAVA_HOME/bin:】
【source /etc/profile】
【which java】
【Java版本:java -version】
实际操作:
1. 切到home目录下:
[[email protected] ~]# cd /home/
2. 找到jdk,打开(下载):
3. [[email protected] home]# rz
rz不出来,解决:
1. Linux连接外网:
[[email protected] ~]# ping www.baidu.com
ping: unknown host www.baidu.com
unknown host 此时是无法连上公网的,要上公网,要:
2.在VMware Workstation打开一个终端:
[[email protected] Desktop]#vi /etc/hosts
输入:192.168.219.111 hadoop01 www.hadoop01.com
www.hadoop01.com 这个域名指针对这台虚拟机管用
[[email protected] Desktop]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
此时连接上公网↑
连接好公网,输入此命令: yum install lrzsz –y (自动安装yum)
[[email protected] home]# yum install lrzsz –y
[[email protected] ~]# rz
4. 解压jdk:
[[email protected] home]# tar –zxvf ./ jdk-8u144-linux-x64.tar –C /usr/local/
5. 查看当前目录下(多了一个jdk)
[[email protected] home]# ll /usr/local/
total 48
drwxr-xr-x. 2 root root 4096 Sep 23 2011 bin
drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc
drwxr-xr-x. 2 root root 4096 Sep 23 2011 games
drwxr-xr-x. 2 root root 4096 Sep 23 2011 include
drwxr-xr-x. 8 uucp 143 4096 Jul 22 2017 jdk1.8.0_144
drwxr-xr-x. 2 root root 4096 Sep 23 2011 lib
drwxr-xr-x. 2 root root 4096 Sep 23 2011 lib64
drwxr-xr-x. 2 root root 4096 Sep 23 2011 libexec
drwxr-xr-x. 2 root root 4096 Sep 23 2011 sbin
drwxr-xr-x. 5 root root 4096 Apr 17 03:02 share
drwxr-xr-x. 2 root root 4096 Sep 23 2011 src
6. 查看jdk有哪些目录:
[[email protected] home]# cd /usr/local/jdk1.8.0_144/
[[email protected] jdk1.8.0_144]# ll
total 25848
drwxr-xr-x. 2 uucp 143 4096 Jul 22 2017 bin
…………
7. 查看Java –version ,此时仍然不行:
[[email protected] jdk1.8.0_144]# java -version
-bash: /usr/bin/java: No such file or directory
8. 配置环境变量:
[[email protected] jdk1.8.0_144]# ./bin/java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
全局环境变量配置文件:vi /etc/profile/
[[email protected] jdk1.8.0_144]# vi /etc/profile
Shift + G跑到最后一行的操作;按O换行
JAVA_HOME=/usr/local/jdk1.8.0_144/
PATH=$PATH:$JAVA_HOME/bin:
保存并退出 :wq
9. 识别刚才的修改:
[[email protected] jdk1.8.0_144]# source /etc/profile
10. 查看Java有没有:
[[email protected] jdk1.8.0_144]# which java
/usr/local/ jdk1.8.0_144/bin/java
11. 查看(刚才安装的)java版本:
[[email protected] jdk1.8.0_144]# java –version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
1.2提供安装程序的软件包
这种软件包都提供了安装脚本或者安装向导程序,只需在下载此类软件包后解压,然后进入安装目录,找到类似的setup、install、install.sh之类的可执行文件运行即可,然后根据提示(比如安装路径,参数设置等等)进行相应的设置,接着安装完成。
这类软件的卸载也提供了相应的卸载脚本或者卸载向导,根据提示即可完成软件卸载
15、Linux的rpm的介绍和安装:
1.rpm程序安装
1.1 RPM包管理工具的介绍:
RPM是Red Hat Package Manager的缩写,本意就是Redhat软件包管。是最先由Redhat公司开发出来的Linux下软件包管理工具,由于这种软件管理方式非常方便,逐渐被其他Linux发行商所借用,现在已成为Linux平台下同用的软件包管理方式。
RPM包管理类似于 windows下的“添加/删除程序”但是功能却比“添加/删除程序”强大很多。在Linux的系统安装光盘中,有很多以“.rpm”结尾的软件包,这些文件就是我们所说的RPM文件。每个RPM文件中包含了已经编译好的二进制可执行文件,其实就是将软件源码文件进行编译安装,然后进行封装,就成了RPM文件,类似于windows安装包中“.exe”文件,还有其他依赖运行的文件。
RPM包管理方式的优点是:安装简单方便,因为软件已经编译完成打包完毕,安装只是个验证环境和解压过程。此外通过RPM工具都会记录软件的安装信息,这样方便了软件日后的查询,升级和卸载。
RPM包管理方式的缺点是:对操作系统环境的依赖很大,它要求RPM包的安装环境必须与RPM包封装时的环境相一致或相当。还需要满足安装时与系统某些软件包的依赖关系,列如需要安装A软件,但是A软件需要系统有B和C软件的支持,那么就必须先安装B和C软件,然后才能安装A软件。这也是我们再RPM包方式安装软件需要特别注意的地方。
1.2 RPM包种类和命令
RPM包的封装格式一般有两种,分别是RPM和SRPM, SRPM包也是一种RPM,但是它包含了编译时的源码文件和一些编译指定的参数文件,因而在使用时需要重新进行编译,通常SRPM对应的RPM文件类似于“xxxxxxxx.src.rpm”格式。
两种RPM包对应的文件名含义:
列如一个rpm文件:nxserver-2.1.0-22.i386.rpm
“nxserver”——软件(软件包的)名称
“2.1.0”——软件版本号
“22”——软件更新发行的次数
“i386”——表示更合适硬件的平台
“.rpm”——rpm软件包的标识 (通常以.rpm结尾的就是一个安装文件)
几个rpm包如下:
MySQL-server-5.5.47-1.linux2.6.x86_64.rpm
nc-1.84-22.el6.x86_64.rpm (el6:redad-hat enterprise linux6)
help2man-1.36.4-2.noarch.rpm (noarch:没有任何平台限制)
一般的RPM封装包的命令格式都有这五部分组成,由于SPRAM包是需要编译才能够使用的,因此没有上面显示项中对应的平台选项,其他与RPM包命令格式一样。
对于RPM包的五个组成部分,它们的含义如下:
软件名称:是对软件包的标识
软件版本号:每个软件都有自己的版本号,版本号可以说明软件从开始到现在发行了多少了,软件是否更新等。
软件更新发行次数:由于一个版本在运行后可能出现bug或者漏洞,那么就需要修复和从新分装,每修复分装一次,软件的名称就要更新一次。
合适的硬件平台:由于RPM包要在各种不同的Linux硬件平台上使用,但是由于每个不同的硬件平台RPM打包分装的参数也各不相同,这样就出现了针对 i368、i686、x86_64、noarch等的平台名称标识。
i368 指这个软件包适用于intel 80386以后的x86架构的计算机。
i686 指这个软件包适用于intel 80386以后(奔腾pro以上)的x86架构的计算机。
x86_64 指这个软件包适用 x86构建的64位处理器的计算机。
noarch 表示这个软件包与硬件框架无关,可以通用。
需要注意的是:i386软件包可以在任意的x86平台下使用,无论是i686或是x86_64的机器,相反,i686的软件包不一定能在i386硬件上面使用,由于i686软件包一般都是对CPU进行了优化,所有具有向后兼容性,但不具有向前兼容的特性。
RPM软件包标识:RPM软件包标识用于指明此文件是rpm格式的文件,一般有两种后缀标识,分别是以“.rpm”结尾和以“.src.rpm”结尾。
rpm安装需要注意包名和包全名概念:包名是指软件名,对已经安装的软件使用包名即可,比如查询、删除、更新等。而对为安装的软件需要使用包全名,如软件安装。
1.3 RPM工具使用
Man rpm
RPM 工具的使用分为安装、查询、验证、更新、删除等操作,分别介绍:
1. 安装软件包
【举例:安装nc包: rpv –ivh nc-1.84-22.el6.x86_64.rpm 】
【安装包的位置: ll/home/】
【查询(只用包名nc即可): rpm –ql nc (结果是nc没有装,接下来我们就可以装)】
【查询到底有没有装,(比较全) rpm –qa | grep nc(结果如果nc按了,要卸了再按nc)】
【查看有没有nc :which nc】
【安装nc : rpm –ql nc】
【依赖的问题:过滤gcc : rpm –ql | grep gcc
rpm –qa | grep gcc(这个找到gcc,叫做libgcc)
需要让你安装 cpp 当安装是cpp了,它还会让你安装别的】
命令格式:rpm-i[辅助选项]file1.rpm file2.rpm……fileN.rpm
主选项说明:-i:install的意思,就是安装软件;也可以用“--install”
参数说明:file1.rpm file2.rpm……fileN.rpm是指定将要安装RPM包的文件名,可以多个文件一起安装。
常用辅助选项解释如下:
| -q : query 查询
| -a : all 所有
| -v : 显示附加信息
| -h : 安装时输出标记“#”
| --test : 指对安装进行测试,并不实际安装
| --nodeps : 不检查软件之间的依赖关系,加入此选项可能会导致软件不可用
| --force : 忽略软件包以及软件冲突
| --replacepkgs : 强制重新安装以及安装的软件包
| --prefix : 将安装包安装到由指定的路径下
【rpm包一般不指认按在哪里,它有默认的按在哪里比较好】
| --percent : 以百分比形式输出安装的进度
| --excludedocs : 不安装软件包中的说明文件
| --includedocs : 安装软件包,包含说明文件
举例:
(1)下面操作显示了安装gcc-3.4.4-2.i386.rpm包过程,出现了安装包依赖问题,下面是出来过程:
[[email protected] ~]# rpm –ivh gcc-3.4.4-2.i386.rpm 执行结果如下:
warning:gcc-3.4.4-2.i386.rpm:V3 DSA signature:NOKEY,key ID db42a60eerror:
Failed dependencies:
glibc-deve >=2.2.90-12 is needed by gcc-3.4.4-2.i386Suggested resolutions:
glibc-deve-2.3.4-2.13.i386.rpm
这里显示说明安装gcc编译器之前需要安装glibc-devel包的支持,这个包的详细版本是glibc-devel-2.3.4-2.13.i386.rpm.因此,我们需要先安装这个软件包。
[[email protected] ~]# rpm –ivh glibc-devel-2.3.4-2.13.i386.rpm 执行结果如下:
2. 查询软件包
命令格式:rpm –q[辅助选项]package1……packageN
主选项说明:-q: query 的意思,也可以使用“--query”
参数说明:package1……packageN 为已经安装的软件包名称。
辅助选项说明:
| -f :查询操作系统中某个文件属于哪个对应的rpm软件包。
例如:
[[email protected]~]#rpm –qf/bin/bash
bash-3.0-19.2
| -p :查询以“.rpm”为后缀的软件包安装后对应的包名称
例如:
[[email protected] ~]# rpm -qp gcc-3.4.4-2.i386.rpmgcc-3.4.4-2从这里查询可以得知,“gcc-3.4.4-2.i386.rpm”安装到系统以后,对应的包名为gcc-3.4.4-2.i386.rpm
|-l: 显示软件包中的所有列表。此选项后面跟软件包安装后对应的包名,切记不是以“.rpm”为后缀的rpm包。
列如:[[email protected] ~]# rpm -qp gcc-3.4.4-2
/usr/bin/c89
/usr/bin/c99
/usr/bin/cc
/usr/bin/gcc
/usr/bin/gcov
……(以下省略)……
已替换状态,表明此文件已经被其他软件包修改替换过了)net shared(网络共享状态,表明此文件处于网络共享状态)。
例如:查看ipvsadm-1.24-6包中每个文件的状态,使用以下命令:
[[email protected]~]#rpm –I –excludedocs
ipvsadm-1.24-6.i386.rpm[[email protected]~]#rpm –qs
ipvsadm-1.24-6normal /ect/rc.d/init.d/ipvsadmnoormal /sbin/ipvsadm
normal /sbin/ipvsadm-restore
normal /sbin/ipvsadm-save
not installed/usr/share/doc/ipvsadm-1.24not installed
/usr/share/doc/ipvsadm-1.24/READMEnot installed
/usr/share/man/man8/ipvsadm-restore.8.gznot installed
/usr/share/man/man8/ipvsadm-save.8.gznot installed
/usr/share/man/man8/ipvsadm.8.gz
从上面可以看到,我们再安装ipvsadm-1.24-i386.rpm的时候指定不按装说明文档,然后通过“-s”命令查看文件状态时,软件包的说明文档状态均为“not installed”。
I-R(或requires):显示软件包功能,所谓功能,可以是软件包标识,也可以是共享动态库文件等等,软件包的依赖关系就是依靠功能来实现的,如果所需的功能不存在,则依赖关系一定的不到满足
I-provides:显示软件包提供的功能,这个功能可以是动态库文件,也可以是虚拟软件的包名等等。
例如:查看nxclient-2.1.0-17.i386.rpm提供的功能,使用以下命令:
[[email protected]~]# rpm –qp –provides nxclicent-2.1.0-17.i386.rpmnxcclient = 2.1.0-17 可以查看到这个软件提供了nxclient的功能
3.验证软件包
验证已经安装的软件包
校验软件包比较的是某软件包安装的文件和原始文件中的同一文件的信息是否一致。它校验每个文件的大小、权限、MD5值、类型、所以者、以及组群。
命令格式:rpm –V[辅助选项]package1……packageN
主选项说明:-V:verify的意思,也可以用“--verify”替代。此参数主要校验已经安装的软件包内的文件和当初安装时是否一致。
参数说明:package1……packageN表示需要验证的且已经安装的软件包名
辅助选项说明:
|–p:验证软件包文件
例如:下面是验证rsh包的安装状态,操作过程如下:
[[email protected]~]# rpm –V rsh-0.17-25.3
package rsh-0.17-25.3 is not installed
[[email protected]~]# rpm –V rsh-0.17-25.3.i386.rpm
依赖的软件不可用。
小结:
删除:rpm –e nc
如果报冲突,删不掉,操作: which –e –nodeps nc
Rpm –q (rpm的查询—q,可以是ql,qa,qf,qg,qd等等)
Rpm –ivh(rpm的安装—ivh,可以是--foece[强制安装],--nodpes,--prefix)[全包名]
Rpm –Vp (rpm的检测—Vp)
Rpm –Uvh(rpm更新的软件—Uvh, Rpm –Uvh./[最新的包放进来]./[可以更新多个])
Rpm –e (rpm的卸载—e,不检查依赖关系:Rpm –e –-nodeps,加卸载的包名即可
Rpm –e –-nodeps nc)