การติดตั้ง NS2 (2.34) บน Ubuntu 11.04

สวัสดีทุกท่านครับ ที่สนใจในการ Network Simulator เมื่อนานก่อนหน้านี้ผมได้ทดลองใช้งานและเรียนรู้การทำงานของ NS2 มาบ้างแล้ว แต่ก็ได้ขยับไปเรียนรู้ NS-3 แต่เนื่องด้วยงานวิจัยที่ผมทำบ้างเงื่อนไข จึงต้องทำให้ผมกลับมาใช้ NS2 อีกครั้ง

วันนี้ผมเลยมาจดบันทึกอะไรเล็กๆ น้อยๆ เกี่ยวกับการติดตั้ง NS2 บน Ubuntu 11.04

ในขั้นตอนแรกทำการติดตั้ง Library ที่จำเป็นต้องใช้ในการติดตั้ง NS2
[shell]
sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.4
[/shell]

หลังจากนั้นทำการดาว์นโหลดไฟล์ด้วยคำสั่ง wget และแตกไฟล์ด้วยคำสั่ง tar
[shell]
wget http://nchc.dl.sourceforge.net/sourceforge/nsnam/ns-allinone-2.34.tar.gz
tar xzvf  ns-allinone-2.34.tar.gz
cd ns-allinone-2.34
[/shell]

แต่ก่อนอื่นใดแล้วก่อนการติดตั้งต้องทำการแก้ไขคอนฟิกและซอร์สโค้ดนิดหน่อย ไม่ฉะนั้นแล้วทำการ Install ไม่ผ่านแน่นอน โดยทำการแก้ไขดังนี้

[shell]
gedit otcl-1.13/configure
[/shell]

บรรทัดที่ 6304 โดยแก้ไขดังนี้
[shell]
SHLIB_LD="ld -shared"
เป็น
SHLIB_LD="gcc -shared"
[/shell]

[shell]
gedit tcl8.4.18/unix/Makefile.in
[/shell]

บรรทัดที่ 270 โดยแก้ไขดังนี้
[shell]
CC = @CC@
เป็น
CC = @CC@ -V 4.4
[/shell]

และแก้ไขซอร์สโค้ดดังนี้

[shell]
gedit ns-2.34/tools/ranvar.cc
[/shell]
บรรทัดที่ 219 โดยแก้ไขดังนี้
[cpp]
return GammaRandomVariable::GammaRandomVariable(1.0 + alpha_, beta_).value() * pow (u, 1.0 / alpha_);
เป็น
return GammaRandomVariable(1.0 + alpha_, beta_).value() * pow (u, 1.0 / alpha_);
[/cpp]

[shell]
gedit ns-2.34/mobile/nakagami.cc
[/shell]
บรรทัดที่ 183 และ 185 โดยแก้ไขดังนี้
[cpp]
resultPower = ErlangRandomVariable::ErlangRandomVariable(Pr/m, int_m).value();
เป็น
resultPower = ErlangRandomVariable(Pr/m, int_m).value();
และ
resultPower = GammaRandomVariable::GammaRandomVariable(m, Pr/m).value();
เป็น
resultPower = GammaRandomVariable(m, Pr/m).value();
[/cpp]

จากขั้นตอนก่อนหน้านี้้เราก็ทำการปรับแต่งเสร็จเรียบร้อยแล้วในขั้นตอนนี้ก็มาติดตั้งกันเลยดีกว่า
[shell]
./install
[shell]

เมืื่อติดตั้ง NS-2 เสร็จแล้วต่อไปก็จะต้องทำการ path เพื่อทำให้สามารใช้ NS-2 ได้ดังนี้
[shell]
gedit ~/.bashrc
[/shell]

[text]
# LD_LIBRARY_PATH
OTCL_LIB=/home/attaphon/ns-allinone-2.34/otcl-1.13
NS2_LIB=/home/attaphon/ns-allinone-2.34/lib
X11_LIB=/usr/X11R6/lib
USR_LOCAL_LIB=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:$X11_LIB:$USR_LOCAL_LIB

# TCL_LIBRARY
TCL_LIB=/home/attaphon/ns-allinone-2.34/tcl8.4.18/library
USR_LIB=/usr/lib
export TCL_LIBRARY=$TCL_LIB:$USR_LIB

# PATH
XGRAPH=/home/attaphon/ns-allinone-2.34/bin:/home/attaphon/ns-allinone-2.34/tcl8.4.18/unix:/home/attaphon/ns-allinone-2.34/tk8.4.18/unix
NS=/home/attaphon/ns-allinone-2.34/ns-2.34/
NAM=/home/attaphon/ns-allinone-2.34/nam-1.14/
PATH=$PATH:$XGRAPH:$NS:$NAM
[/text]

เสร็จแล้วรันคำสั่ง
[shell]
source ~/.bashrc
[/shell]

คราวนี้ลองเรียกใช้ NS-2 ดูครับว่าสามารภทำงานได้หรือยัง
[shell]
attaphon@attaphon-ThinkPad-R61:~/ns-allinone-2.34$ ns
%
[/shell]

ถ้ามี prompt % แสดงอยู่ก็ใช้งานได้แล้วครับ ซึ่งขั้นตอนสุดท้ายก็ต้องทำการ validate NS2 เพื่อทดสอบว่า NS2 ที่ทำการติดตั้งไปนั้นสามารถทำงานได้อย่างถูกต้องหรือไม ซึ่งขั้นตอนนี้ใช้เวลานานมาก ผมถึงขั้นนอนหลับรอเลยทีเดียว
[shell]
cd ns-2.34/
./validate
[/shell]

ขอบคุณที่อ่านจนจบ สาระบ้าง น้ำบ้าง
สวัสดีครับ ในวันที่หัวใจรู้สึกๆ เหงา ๆ

Comments