Chinaunix首页 | 论坛 | 博客
  • 博客访问: 846523
  • 博文数量: 180
  • 博客积分: 10029
  • 博客等级: 上将
  • 技术积分: 2185
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-06 09:15
文章存档

2010年(133)

2009年(47)

我的朋友

分类: 系统运维

2010-03-27 22:17:10


   最近接了一个需要进行网络模拟的项目。对与网络模拟一窍不通的本人算是一个挑战。于是乎开始整日上网搜索相关的资料,没想到这个世界的资源真是丰富多彩。最后发现了一个网络 模拟的流行软件NS2,在经过多次尝试后,终于成功的安装并运行了该软件。下面就分享一下本人的安装经验。(本文特别综合了各种安装方法、并成功解决了如 Cygwin没有生成home文件夹和.bashrc文件的问题以及提供了Cygwin的卸载方法)
      首先如果想要了解NS以及相关内容,我力荐下面这个论坛,资源可以说相当的丰富,而且斑竹认真负责
      闲话少说,下面进入正题,开始安装我们的NS2网络模拟器。可惜不巧的是这个模拟器只能运行在linux平台下。如果本身就是linux平台我们只要下 载相应的软件包解压后,运行install.exe,安装完成后再设定一下环境变量就ok了(具体的下载及安装过程见后面描述)。如果是windows平 台,一般有以下三种解决方案:
1.装双系统吧,就是划出一个分区装一个linux系统,通常就是red hat,fedora之类的啦,双系统的安装方法baidu或者google一下应该有一大堆,就不赘述了。
2.装个虚拟机也不错,通常就是Vmware和virtual PC这两款,安装简单,使用方便。装完虚拟机后,再在上面安装一个linux的操作系统就ok了。最后再在虚拟的操作系统上安装NS2就ok了,这种方法 的最大特点就是,非常的占系统资源,尤其是内存资源。如果系统配置不高的,就不要使用这个方法
3.这个方法也是我使用的方法,就是Cygwin+NS2了,这也是网络上通常推荐的做法。关于这个安装方法,网上也是写了一大堆,但是个人觉得最实用的是以下这个网址所推荐的:
http://hi.baidu.com/7stone7/blog/item/1f69b38bb5a0647f9e2fb4bb.html
这个里面提到的方法如下:
    1. 最好不要到下载cygwin..也就是说不要从Internet上安装cygwin,而要从本地安装(PS:往往千奇百怪的错误就是因为从internet下载的cygwin的版本引起的)。,从这里下载
    2.解压下载的文件点setup..选“Install from Local Directory”,选好下载的文件所在的位置"ftp%3a%2f%2fftp.nctu.edu.tw%2fWindows%2fcygwin", 安装 XFree86-base, XFree86-bin, XFree86-prog, XFree86-lib, XFree86-etc, make, patch, perl, gcc, gcc-g++, gawk, gnuplot, tar and gzip 。
     在这里有几点解释,首先cygwin也是一个linux的模拟环境(准确说是一个unix模拟环境,为了方便解释理解为一个linux的模拟环 境),但是它不像上面提到的虚拟机,不会占用系统的很大资源,关于cygwin和虚拟机的区别的具体描述大家可以从网上搜到相关的文章。下面进入正题,下载cygwin的确有一些麻烦,进入网站后,在网站的右上角有一个install now的图标,点击后就会得到一个几百k的setup.exe文件,这个文件就是一个专门下载cygwin软件的一个客户端,可以让用户自定义下载所需的部分,并且支持短点续传。
       运行下载下来的setup.exe大家可以选择三种方式,第一个是直接从网上安装,这个方法会帮用户将软件下载到本地和安装这两个动作一起完成。第二个是 只下载不安装,第三个则是从已下载的本地文件安装,按照上面的地址下载的压缩包已经包含了setup.exe和下好的软件安装包,大家选择从本地直接安装 就可以了。
        如果大家没有下载上面的安装包,而是直接选择第一项,点击下一步就会出现提示输入软件要安装的位置(这里推荐直接安装在c:\cygwin目录下, 不然可能会有问题),再点一下步则会提示你选择软件安装文件保存在本地的位置。在点下一步会让你选择连接网络的方式,通常就是第一项直接连接,点击下一步 后,客户端会下载镜像列表,下载完成后列出可用的下载站点。如果你是教育网,你就选择一个含有edu的ftp或http地址,如果你是公网就选择台湾的 ftp或http地址好了,如果这些网站都很慢,你就选择http里的cygwin.basemirror或cygwin.cybermirror这两个 比较通用。选择完成后点击下一步,这时客户端会下载一个setup.bz文件,这个文件包含了你选择的下载站点的安装文件的目录信息。完成后客户端会列出 所有的软件列表,这时用户可以自行选择需要安装的部分,建议点击all右边的defaul,让它变成install,这样就是完整安装,不过这样比较大, 安装文件有600多兆,安装后可以达到2g左右,如果空间不是很大的人,建议下载上面给出的软件包,完全安装后也非常小。选择完成后客户端就开始下载软 件,下载完成后就会开始自动安装,安装完成后,弹出一个提示框installation complete.
     如果,由于某种原因在下载中途你关闭了setup.exe你可以重新启动它,按照刚才的步骤重新选择,但是注意所有的选项都必须和以前一样 (setup.exe会自动记住你上次的选择)。如果你改变了任意一项都将不能再断点续传。但是注意,如果某一个具体文件,比如perl.tar.gz 大小为3m左右,如果你下载了1m时退出,它还是会重新下载这个文件。但是perl.tar.gz以前的文件则不会重新下载了。
       选择第一项按装的时候,会在setup.exe文件所在目录下生成一个setup.log文件,这个文件记录着用户的下载和安装进度。所以在下载和安装完 成之前不要删除这个文件。但是如果安装完成后,你又卸载了Cygwin软件后,再想重新从本地安装的时候,请先删除这个文件,否则系统提示不需要安装。
       如果你选择了第二项只保存不安装那么,点击下一步后不会问你软件需要安装的位置,而是直接问你软件要保存的位置,选择好后后面的步骤跟选择第一项时一模一样。    
       如果你选择了第三项从本地安装,点击下一步后,它会首先提示你软件要安装的位置,点击下一步后,它会让你选择你所下载的软件保存的位置,如果你直接下载了 我所说的软件压缩包,那么你可以选择压缩包里的ftp%3a%2f%2fftp.nctu.edu.tw%2fWindows%2fcygwin文件夹, 选择完成后一直点击下一步软件将自动完成安装过程。
       安装完成后,在桌面上会看到一个Cygwin的图标,双击运行后会弹出一个类似linux的一个字符界面。如果你点击了该图标没有反应,那么恭喜你,你的 bash文件没有安装成功,尽管你在安装的时候可能已经全选了shell包,但是这没有用,具体还需要安装哪些文件笔者也没有摸索清除,所以建议一开始就 选择完全安装。这个时候,你可以重新完全安装覆盖原来的安装文件夹,或者卸载已安装的软件,重新安装(具体卸载方法请看后文)。如果第一次启动, Cygwin会在你的安装目录下(c:\cygwin)目录下生成一个home目录,并在home目录下建立一个和你的windows账户名一样的一个文 件夹,比如文件夹名为yourid。并且会在这个文件夹下(c:\cygwin\home\yourid)生成三个配置文件,.bashrc,. bashprofile和.inputrc文件,这三个文件中最重要的是.bashrc文件,用户以后要自定义环境变量要用到该文件。如果你没有将软件安 装在c:\cygwin目录下,首先请验证是否在你的安装目录下生成了home文件夹,如果没有请去c盘看看是否在c盘生成了一个cygwin目录,并在 底下建立了相应的home文件夹。
       注意,在这里很多人会遇到没有生成home文件夹或者三个配置文件的情况(本人就深被此问题折磨)。于是在网上狂搜了一阵,确实发现了有人给出了解决方 案,比如说重启windows系统,重装系统后一开始直接装cygwin等。但是,我只能说这些方法都是不灵验的,因为没有找到根本原因。后来本人仔细读 了C:\ cygwin\ etc\ profile 文件发现了问题的所在,关键问题出现在profile中第31行的脚本中,如下所示:
# Here is how HOME is set, in order of priority, when starting from Windows
#  1) From existing HOME in the Windows environment, translated to a Posix path
#  2) from /etc/passwd, if there is an entry with a non empty directory field
#  3) from HOMEDRIVE/HOMEPATH
#  4) / (root)
# If the home directory doesn't exist, create it.
if [ ! -d "$HOME" ]; then
mkdir -p "$HOME"
echo "Copying skeleton files."
echo "These files are for the user to personalise"
echo "their cygwin experience."
echo
echo "These will never be overwritten."
echo
cd /etc/skel
/bin/find . -type f | while read f; do
  fDest=`echo $f | sed -e 's/^\.//g'`
  if [ ! -e "$HOME$fDest" -a ! -L "$HOME$fDest" ]; then
   /usr/bin/install -D -p -v "${f}" "${HOME}/${fDest}"
  fi
done
fi
       我们从头5行注解中可以看到(#打头的行为注解行,每一个#代表一行),cygwin的home文件加的获取优先次序是首先从windows系统的环境变 量中获取用户的windows中的home文件夹位置作为home,这样通常启动后,用户在屏幕中敲入pwd会看到显示的目录是c:\document and settings\userid,cygwin不会在安装目录下生成专门的home目录和配置文件了。如果cygwin获取不到windows的用户 home环境变量的内容,还会依次从2、3、4中寻找是否有合适的用户home信息,只有这些都没有的时候,cygwin才会尝试开始创建专门的用户 home目录以及相应的配置文件。
      知道了问题所在,解决起来也就容易了,首先一个最简单的方法就是在我的电脑上点击右键,选择属性,在弹出的菜单中选择高级,然后点击环境变量,在 userid的用户变量(userid是你的账户名称)的菜单栏中找到HOME变量一栏,点中后选择删除(建议删除前先备份其中的值,以便以后有需要可以 恢复。)然后点确定,确定就可以了。然后重新点开cygwin就可以看到屏幕上提示正在写用户信息。然后到c盘cygwin目录下就可以看到生成了 home\userid文件夹,并在里面生成了相应的三个配置文件信息。
      当然你可能会质疑上面的方法是否会造成系统的不稳定,至少笔者到目前还没有发现任何不稳定现象。当然实际上我们之所以需要cygwin的home目录主 要是希望能够获得.bachrc这个重要的用户信息配置文件。然而通常我们用cygwin都只有我们自己这一个用户,而不像在linux中可能的多用户。 所以我们如果不想破坏windows系统的环境变量设置,可以采取的方法是,我们直接将想要配置的信息放到全局.bashrc文件中就可以了。全局. bashrc是安装完cygwin就存在的,它位于:c:\cygwin\etc目录下,名字是bash.bashrc。打开它会发现有一行注解# System-wide .bashrc file。只要将自己想要设的环境变量放到这里,效果和放到用户自己目录下的.bashrc中是一样的。
关于cygwin的使用信息,大家可以参看linux下的常用命令。这里推荐一个好的网站:
http://blog.csdn.net/onefish/archive/2004/12/25/229192.aspx
这个网站描述了一些cygwin使用的比较好的设置技巧,比如说如何显示中文文件名等问题。
关于cygwin的卸载,下面是一个比较好的网址:
http://blog.sina.com.cn/u/4b8c4f4c010007g9
这里提示的是,通常可以直接删除cygwin文件夹,再删掉注册表里的两条内容就可以了。
关于cygwin的安装过程就介绍到这里,下面开始讲解如何在linux下安装ns2的方法。具体方法依然可以参看
http://hi.baidu.com/7stone7/blog/item/1f69b38bb5a0647f9e2fb4bb.html
具体描述如下:
3. 到, 下载ns-allinone-2.29到c:\cygwin\home\stone\(stone是我的机器名,机器名不能是有空格的两个单词,如a b)目录下。
4.点桌面图标进入cygwin,自动创建3个文件,在C:\cygwin\home\stone下,分别是.bashrc .bash_profile 和.inputrc
     用tar xvfz ns-allinone-2.29.tar.gz解压文件。
     修改C:\cygwin\home\dinglan\ns-allinone-2.29\nam-1.11\agent.h文件第73行NULL为0。
     用cd ns-allinone-2.29进入/home/dinglan/ns-allinone-2.29目录。
     用./install进行ns安装。
     进入 /home/stone/.bashrc(最好用Uedit32编辑器)编辑.bashrc文件
        在文件的最后加入
     export NS_HOME="/home/stone(你的机器名)/ns-allinone-2.29"
     export PATH="$NS_HOME/tcl8.4.11/unix:$NS_HOME/tk8.4.11/unix:$NS_HOME/bin:$PATH"
     export LD_LIBRARY_PATH="$NS_HOME/tcl8.4.11/unix:$NS_HOME/tk8.4.11/
     unix:$NS_HOME/otcl-1.11:$NS_HOME/lib:$LD_LIBRARY_PATH"
     export TCL_LIBRARY="$NS_HOME/tcl8.4.11/library"
    5.若要验证的就用cd ns-allinone-2.29/ns-2.29 ; ./validate
不过要花好长时间,我没等验证完就关了。可以运行example2.tcl 的例子:启动cygwin,cd ns-allinone-2.29/ns-2.29,cd ns-tutorial/examples,然后startxwin.bat,ns example2.tcl。
    如果错误是“找不到NAM命令”,那么把nam.exe和ns.exe都copy到examples目录下就行了
     这几个步骤描述的非常的详细和正确,不需要笔者再赘述了,需要提示的如果系统提示“找不到NAM命令”时(笔者没有出现这个问题),nam.exe 和ns.exe的位置在C:\cygwin\home\userid\ns-allinone-2.29\bin目录中。但是也有特殊的情况就是如果在 bin目录下找不到nam命令时,首先进入目录home/userid/ns-allinone-2.29/nam-1.11,然后运行命令 (./configure && make && make install)后会在home\userid\ns-allinone-2.29\nam-1.11目录下生成一个nam.exe文件,把 nam.exe文件拷贝到home\userid\ns-allinone-2.29\bin目录下就可以了。需要注意的是如果bin目录下有 nam.exe和ns.exe目录,依然提示找不到NAM命令,通常是由于没有在环境变量中正常设定ns的path。请重新验证自己在.bashrc文件 中设置的环境变量是否正确。大家还可以在网络中找到更多类似的设定ns环境变量的文章。
    再次还需要提示的是,如果用户输入startxwin.bat命令后,没有弹出一个新的x字符窗口,那么首先请确定在安装cygwin时,x11包是完全 安装了的,否则请重新完全安装。如果的确完全安装了x11包,那么请到C:\cygwin\usr\X11R6\bin目录中找到 startxwin.bat文件,右键编辑找到SET CYGWIN_ROOT=\cygwin,确定CYGWIN_ROOT变量确实对准了安装路径。
到此,ns的安装就结束了,如果有什么不正确的地方欢迎大家多多指正,不当之处多多谅解。
 
阅读(1681) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~