cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。
在进行hadoop的windows安装后,第二步就是cygwin的安装,虽然很多人建议在linux环境下来进行hadoop的学习,但是很多人由于没有现成的环境,比如我,又比较懒,只好在windows下尝鲜了。cygwin在windows下虽然可能遇到很多问题,但是由于现在cygwin是由redhat在维护,我还是很有信心的,虽然遇到了一些问题,但是可以在windows下模拟unix的一些东西,抛开hadoop的学习不说,仅仅安装一个软件就可以能模拟unix难道不是一件很爽的事情吗,闲话少说了。
一、cygwin的安装
我们可以到Cygwin的官方网站下载Cygwin的安装程序,地址是: http://www.cygwin.com/或者直接使用下载连接来下载安装程序,下载连接是:http://www.cygwin.com/setup.exe
下载完成后,运行setup.exe程序,出现安装画面。直接点“下一步”,出现安装模式的对话框,如下图所示:
我们看到有三种安装模式:
- Install from Internet,这种模式直接从Internet安装,适合网速较快的情况;
- Download Without Installing,这种模式只从网上下载Cygwin的组件包,但不安装;
- Install from Local Directory,这种模式与上面第二种模式对应,当你的Cygwin组件包已经下载到本地,则可以使用此模式从本地安装Cygwin。
这里需要说明一下的是,第一次全部安装选择第一种模式,但是后续我们开发过程中发现一些组件包没有安装的话,可以再次运行安装程序,选择第二种模式,也就是单独下载组件包而不安装,这样可以分次下载需要的组件包。等全部组件包下载完毕后,在运行第三种模式从本地安装组件包。
需要特别注意的是,下载和安装的时候一定要记住使用的镜像站点,因为软件把组件包按照不同的镜像放置在不同的目录,如果几次下载的镜像不一样,那从本地安装的时候,是只能找到最新的一次的镜像下载的组件包的,这里需要注意。
从上述三种模式中选择适合你的安装模式,这里我们选择第一种安装模式,直接从网上安装,当然在下载的同时,Cygwin组件也保存到了本地,以便以后能够再次安装。选中后,点击“下一步”,
这一步选择Cygwin的安装目录,以及一些参数的设置。默认的安装位置是C:\cygwin\,你也可以选择自己的安装目录,然后选择“下一步”,
这一步我们可以选择安装过程中从网上下载的Cygwin组件包的保存位置,选择完以后,点击“下一步”,
这一步选择连接的方式,选择你的连接方式,然后点击下一步,会出现选择下载站点的对话框,如下图所示,
在这一步,需要注意,为了获得最快的下载速度,我们首先在列表中寻找Cygwin中国镜像的地址:http://www.cygwin.cn,如果找到就选中这个地址;如果找不到这个地址,就在下面手动输入中国镜像的地址:http://www.cygwin.cn/pub/,再点击“Add”,然后再在列表中选中。选择完成后,点击“下一步”,
(这里是之前的文档,目前最新的列表中,国内的有163的和中国科技大学的镜像站点,开始我选择的是163的镜像站点mirrors.163.com 但是这个镜像不稳定在我的环境中速度很慢,后来发现有科技大的镜像wstc.edu.cn这个镜像估计是由于使用人不多,速度非常快,强烈推荐)
这一步,我们选择需要下载安装的组件包,为了使我们安装的Cygwin能够编译程序,我们需要安装gcc编译器,默认情况下,gcc并不会被安装,我们需要选中它来安装。为了安装gcc,我们用鼠标点开组件列表中的“Devel”分支,在该分支下,有很多组件,我们必须的是:
binutils
gcc
gcc-mingw
gdb
扩充一下:我们需要下载组件包如下:我是按照此顺序下载并正确安装成功的,注意选择不同包的最新版本,如autoconf我目前看到的最新的2.5,大家可以自行选择。
Devel分支下:
autoconf2.5
automake1.9
binutils
gcc
gcc-core
gcc-g++
gcc-mingw-core
gcc-mingw-g++
gdb
subvision
Base分支下:sed,主要是在eclipse下编译用的
net分支下:openssh和openssl
Editors分支下:vim用在修改配置文件
鼠标点击组件前面的循环按钮,会出现组建的版本日期,我们选择最新的版本安装,下图是选中后的四类组件的截图:
这里特别需要注意,选中的是那个带叉的图标,很奇怪的图标,但是老外就是这样。
![]() binutils组件 | ![]() gcc组件 |
![]() gcc-mingw组件 | ![]() gdb组件 |
选完以后,我们选择下一步,进入安装过程,如下图所示,
安装的时间依据你选择的组件以及网络情况而定。安装完成后,安装程序会提示是否在桌面上创建Cygwin图标等,点击完成退出安装程序。
二、cygwin的配置
这步骤是最多出现问题的地方,大家需要做好心里准备。
1.环境变量的设置
path环境变量需要设置为cygwin的bin目录,在上一篇java安装的过程中也有提及。需要在path后增加e:\hadoop\cygwin\bin;
2.安装sshd服务
启动cygwin terminal,输入ssh-host-config进行配置操作。出现have fun就代表配置成功了。
这里一点需要特别重要的是:在should privilege separation be used?一定要注意输入no ,也就是不为sshd的服务生成单独的用户,如果选择yes会单独生成用户,配置就会不成功的。
出现have fun后需要启动sshd的服务,如下图:
我就是在这一步出错的,总是启动不成功。
查了很多的资料,主要是windows账户和linux账户root的区别,我尝试了ssh-host-config重新配置,并使用yes模式下生成sshd的账户方式,但是后来发现解决不了问题。
后来采用了如下的方式:
删除已经安装的sshd的服务:sc delete sshd
然后重新配置sshd,执行ssh-host-config使用yes yes no yes 空格
也就是覆盖ssh_config文件,覆盖sshd_config文件 ,不生成单独账户,安装sshd为单独的服务,不输入任何值,在提示配置成功后,按照页面提示运行cygrunsrv -S sshd来启动sshd的服务,通过在运行中输入“services.msc”来查看服务的运行状况,如果cygwin sshd的运行状况是已启动,那说明服务安装成功。
3.配置sshd登陆
在terminal窗口中输入ssh-keygen成功密钥文件。生成id_rsa.pub
cp id_rsa.pub authorized_keys
然后关闭terminal,然后在启动输入ssh localhost
在窗口提示中提示输入的地方,输入yes完成sshd的登陆配置。
至此,完成cygwin安装已经sshd的安装配置