一、学习中问题
最近学习在学习Hadoop的一个子项目Zookeeper,在测试其中的“四字命令”---”echo ruok|nc localhost 2181“时发现命令无法被识别,如下图所示:
[root@hadoop ~]# echo ruok|nc localhost 2181
-bash: nc: command not found
从提示信息中我们可以知道,是由于nc命令无法被找到。出现该情况有两种可能:
(1)没有配置nc命令的环境变量;
(2)该系统没有安装nc命令;
我查看了一下在/usr/bin目录中并没有nc命令,所以我可以认为出现该情况的原因是第二种情况
二、解决办法
由于我的Linux(CentOS6.4)没有安装该命令,所以我需要安装一下该命令,安装办法有两种在线安装和下载后安装。我先尝试的是通过使用yum命令进行在线安装,由于我的系统配置问题并有成功,所以使用了第二种方法安装成功后,后来经过上网查阅,解决了在使用一种方法时所遇到的问题。在此,记录和大家分享一下,首先先介绍下载安装的办法。
(1)下载安装
下载地址: http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1-1.i386.rpm/download
安装方法:
1) 下载后得到一个rpm包,如:netcat-0.7.1-1.i386.rpm
2) 将该包通过Wincp将其上传到Linux目录中,我上传的目录是/root/Downloads
3) 进入该目录,执行命令:rpm -ihv netcat-0.7.1-1.i386.rpm,进行安装
4) 安装成功后可以执行命令:nc --help,进行测试
(2)在线安装
在线安装需要我们使用yum命令,由于nc命令通过上述方法已经安装好了,就不在以nc命令为例了。我们以另一种远程联机指令telnet为例。首先我们执行命令:echo ruok|telnet localhost 2181,同样提示该命令无法找到如下图所示:
[root@hadoop ~]# echo ruok|telnet localhost 2181
-bash: telnet: command not found
所以我们也学要安装一下,在这我使用第一种办法,步骤如下:
1)配置yum
yum是一种在线安装和更新软件的工具,使用该工具要保证网络连接,还要有一个可用的软件源,可以使用163或sohu的软件源,软件源地址如下:
a:163的网址:http://mirrors.163.com/ ,进入后点击右列的“fedora使用帮助”,有使用说明
b:sohu的网址:http://mirrors.sohu.com/
c: Centos自带的源
在此我使用的是Centos自带的源,如果使用163下载源,则步骤如下:
a:下载fedora-163.repo和fedora-updates-163.repo, 通过winCP放入Linux中/etc/yum.repos.d/目录
b:运行以下命令生成缓存:yum clean all、yum makecache
在执行上述两条命令后结果如下:
2)执行命令:yum list telnet*;查看telnet相关的安装包,结果如下:
[root@hadoop ~]# yum makecache
Loaded plugins: fastestmirror, refresh-packagekit, security
Repository updates is listed more than once in the configuration
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=i386&repo=os error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot find a valid baseurl for repo: base
注意:
又出现了问题,出现如下错误信息,是因为DNS配置错误,我装的是Cent OS 6.4 ,没有图形界面,这个版本默认安装后,配置文件中没有配置DNS。
解决办法:
使用vi打开DNS的配置文件进行修改,执行命令: vi /etc/resolv.conf,添加及几行内容,下面是一个例子文件:
nameserver 8.8.8.8
nameserver 8.8.4.4
search localdomain合法的参数及其意义如下:
nameserver 表明DNS 服务器的IP 地址。可以有很多行的nameserver,每一个带一个I P 地址。在查询时就按nameserver 在本文件中的顺序进行,且只有当第一个nameserver 没有反应时才查询下面的nameserver.
domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS 查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( . )前面的内容。
search 它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search 声明的域中分别查找。domain 和search 不能共存;如果同时存在,后面出现的将会被使用。
sortlist 允许将得到域名结果进行特定的排序。它的参数为网络/掩码对。允许任意的排列顺序。
再次执行命令:yum list telnet*,结果如下:
Cannot retrieve metalink for repository: Fedora. Please verify its path and try again
注意:
出现该提示信息的原因是,原因是我在以前/etc/yum.repos.d/下建立了一个163的源,那个文件可能不正确,将那个源移除,再运行yum makecache时就可以了。
再次执行命令:yum list telnet*,结果如下:
[root@hadoop network-scripts]# yum list telnet* Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn Available Packages telnet.i686 1:0.17-47.el6_3.1 base telnet-server.i686 1:0.17-47.el6_3.1 base [root@hadoop network-scripts]#
这次运行成功,telnet.i686表示客户端,telnet-server.i686表示服务端。我们需要的是客户端,安装telnet.i686即可。
3)执行命令:yum install telnet.i686,进行安装,结果如下:
[root@hadoop network-scripts]# yum install telnet.i686 Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package telnet.i686 1:0.17-47.el6_3.1 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: telnet i686 1:0.17-47.el6_3.1 base 57 k Transaction Summary ======================================================================================================================================================================== Install 1 Package(s) Total download size: 57 k Installed size: 102 k Is this ok [y/N]: y Downloading Packages: telnet-0.17-47.el6_3.1.i686.rpm | 57 kB 00:00 warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 Importing GPG key 0xC105B9DE: Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org> Package: centos-release-6-4.el6.centos.10.i686 (@anaconda-CentOS-201303020136.i386/6.4) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 Is this ok [y/N]: y Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : 1:telnet-0.17-47.el6_3.1.i686 1/1 Verifying : 1:telnet-0.17-47.el6_3.1.i686 1/1 Installed: telnet.i686 1:0.17-47.el6_3.1 Complete!
4)验证,执行命令:telnet --help,如下所示,表示安装成功。
[root@hadoop network-scripts]# telnet --help telnet: invalid option -- '-' Usage: telnet [-8] [-E] [-L] [-S tos] [-a] [-c] [-d] [-e char] [-l user] [-n tracefile] [-b hostalias ] [-r] [host-name [port]] [root@hadoop network-scripts]#