Tác giả:
+ Lê Anh Đức
+ Ngô Tự Nhiên
Chương này nói về quá trình cài đặt chi tiết của bộ thư viện ANTS. Ta cũng đưa ra các dấu hiện nhận biết của quá trình cài đặt như thế nào là thành công. Trên các bước hướng dẫn, có các link để tiện cho việc download thư viện dễ dàng. Sau khi cài đặt xong là phần kiểm tra sự thành công của quá trình cài đặt.
Sau khi cài xong, ta nêu ra một bổ sung nhỏ trong thư viện để phục vụ cho quá trình biên dịch. Ta cũng nêu ra cách bêin dịch một ứng dụng như thế nào, cách đóng gói và giới thiệu các file script trong môi trường shell để điều khiển ứng dụng.
5.1. Cài đặt thư viện ANTS
• Máy có cài đặt Linux Redhat 7.3
• Download packet j2re-1_3_1_16-linux-ị86.rpm.bin tại http://java.sun.com/
• Cài đặt Java Virtual Machine cho hệ điều hành bằng lệnh ./j2re-1_3_1_16-linux-ị86.rpm.bin
• Download packet ants-2.0.3.tar.gz (version mới nhất hiện thời) tại website http://www.cs.utah.edu/flux/janos/ants.html
• Giải nén bằng gunzip –d và tar –cvf
• Sau khi giải nén xong, sẽ cho ra thư mục ants-2.0.3. Vào thư mục ấy, bắt đầu cài đặt ANTS bằng hai lệnh:
%./configure
%make all
• Sau khi quá trình cài đặt hoàn tất, ta sẽ kiểm tra sự thành công bằng lệnh ./sanitycheck trong thư mục ants-2.0.3/scripts. Nếu cài đặt thành công, kết quả sẽ ra như sau:
[root@localhost scripts]# ./sanitycheck
ANTS v2.0 Sanity Check
This is a simple sanity checking script that should be useful for
debugging your Java/JNodeOS/ANTS setup. It will try running the
basic jvm, then some more complicated commands. For each it will
print a hint about what the expected output is. If you get an
exception message, or shell error then something very basic is wrong.
If none of the classes are found, perhaps you should set the
JVM_DEFAULT in ./defaultEnv to point to your installed copy
of the antsvm script.
Good luck.
Looking for ./defaultEnv to setup default environment...
Found it, sourcing ./defaultEnv
Checking that './antsvm -version' works...
java version "1.3.1_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_16-b06)
Java HotSpot(TM) Client VM (build 1.3.1_16-b06, mixed mode)
...ok
Trying command: ./antsvm edu.utah.janos.nodeos.Main
Should print something like: 'ERROR: Must supply a class to load into root flow'
--- BEGIN OUTPUT
Janos Java NodeOS v1.2.0
ERROR: Must supply a class to load into root domain.
Shutting down.
--- END OUTPUT
Trying command: ./antsvm edu.utah.janos.nodeos.Main ants.core.NodeConfigure
Should print something like: 'usage: ants.core.NodeConfigure ...'
--- BEGIN OUTPUT
Janos Java NodeOS v1.2.0
ANTS v2.0
usage: ants.core.NodeConfigure <activeaddr> <physaddr> [options].
-consoleport <int>: Start a telnet-able console on the given port.
-routes <file>: Static routing table is in given file.
-updateRoutes: Turn on dymanic routing updates.
-application <appfile>: Read given file to configure & start an applicat
ion.
-simpleapp <string>: Start a simple application, string is tokenized
for arguments.
-extension <extfile>: Read given file to configure and install an exte
nsion [NOT IMPL].
-msgprefix <string>: Prefix all console messages with the given strin
g.
--- END OUTPUT
ANTS v2.0 sanitycheck is complete.
5.2. Bổ sung vào thư viện ANTS để phục vụ cho quá trình biên dịch
Trong thư viện ANTS sẵn có chỉ cung cấp file antsvm trong thư mục /ants2.0.3/scripts dành cho việc chạy chương trình, chứ không thể biên dịch.
Ta bổ sung một file tên là antsvmc vào thư mục /ants2.0.3/scripts với nội dung như sau:
#!/bin/sh
#
# antsvm
#
# Copyright (c) 2001 University of Utah and the Flux Group.
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this file
# for any purpose with or without restriction is hereby granted.
#
#
# A simple wrapper around a JVM that adds the ANTS classes
# to the classpath.
#
# Define 'JAVA' environment variable to override the JVM.
#
topbuilddir=/root/luanvan/ants-2.0.3
jar_ext=jar
jnodeos_lib=/root/luanvan/ants-2.0.3/lib/jnodeos-pj-debug.zip
jvmulation_lib=/root/luanvan/ants-2.0.3/lib/emuJanosVM.jar
jvmkit_lib=/root/luanvan/ants-2.0.3/lib/JanosVMKit.jar
ants_lib="${topbuilddir}/src/ants.${jar_ext}"
ants_apps_lib="${topbuilddir}/src/apps.${jar_ext}"
ants_tests_lib="${topbuilddir}/src/tests.${jar_ext}"
## Default JAVAC to 'javaC'
if test -z "$JAVAC"; then
JAVAC=javac
fi
## Append ANTS classes to classpath
ants_classes="${jnodeos_lib}:${jvmulation_lib}:${j vmkit_lib}:${ants_lib}:${ants_apps_lib}:${ants_tes ts_lib}"
if test -n "$CLASSPATH"; then
CLASSPATH=${CLASSPATH}:${ants_classes}
else
CLASSPATH=${ants_classes}:.
fi
export CLASSPATH
exec $JAVAC "$@"
#eof
5.3. Tổ chức file của ANTS:
Thực chất, ANTS là một bộ máy chạy trên nền JVM của Linux. Vì vậy, bất kỳ một file binary nào muốn chạy cũng sẽ dùng lại lệnh java. Tương tự, muốn biên dịch file *.java thì cũng phải dùng đến lệnh javac.
Sau khi cài JDK_1.3.1 cho Linux, mặc định nó sẽ nằm trong thư mục /urs/java/jdk1.3.1. Vì vậy, mỗi lần muốn chạy hoặc biên dịch, ta phải cài path cho JVM bằng lệnh:
%PATH=$PATH:/urs/java/jdk1.3.1/bin
ANTS là một máy truyền capsule trên nền Janos Virtual Machine nằm trong thư mục /ants-2.0.3/lib. Tất cả những file phục vụ cho Janos VM đã được biên dịch sẵn và đóng gói trong thư viện của ANTS. Trong thư viện này không chứa những file nguồn của Janos VM. Nếu cần, chúng ta có thể vào http://www.cs.utah.edu/flux/janos/ để download source của Janos VM.
Lệnh biên dịch và lệnh chạy chính thức của ANTS chính là antsvmc và antsvm nằm trong thư mục ants-2.0.3/scripts.
Trong antsvmc và antsvm có khai báo tất cả các classpath cần thiết cho Janos VM như jnodeos, jvmulation, jvmki, và các application, các test file của ANTS như ants_lib, ants_apps, ants_tests.
Tất cả các file dùng để chạy trong ANTS đều phải được đóng gói thành file jar. Vì vậy, nếu chỉnh sửa thư viện hoặc viết một ứng dụng mới bất kỳ nào thì ta phải đóng gói thành file .jar trước khi đưa vào vận hành trong ANTS.
5.4. Các bước biên dịch, đóng gói một ứng dụng mới trong ANTS
• Ví dụ, muốn thêm ứng dụng caching vào ANTS, ta tạo một thư mục riêng ở /ants-2.0.3/src/apps/caching và soạn tất cả các file nguồn .java trong thư mục này.
• %PATH=$PATH:/urs/java/jdk1.3.1/bin
• Biên dịch : %/ants-2.0.3/scripts/antsvmc /ants-2.0.3/src/apps/caching/BindCapsule.java
• Làm tương tự với các file nguồn còn lại. Các file nào có extend một class khác thì phải được bêin dịch sau khi đóng gói .jar các class cần được extend.
• Đóng gói: bằng lệnh:
%jar cvf apps.jar /ants-2.0.3/src/apps/
5.5. Chạy một ứng dụng
Để chạy được một ứng dụng, ta phải hiểu được và soạn các file scripts cho chúng. Thông thường, một ứng dụng đơn giản sẽ được chạy bởi 3 file scripts trong thư mục /ants2.0.3/scripts sau:
cache.routes: là file dùng để cấu hình topology cho mạng, trên nền IPv4 hoặc localhost
cache.config: là file dùng để tạo channel, cấu hình node, tạo dứng dụng trên node, truyền các thông số, tạo connect chính thức.
cache.start: là file dùng để kích hoạt thật sự một ứng dụng ANTS bằng câu lệnh chính $JVM edu.utah.janos.nodeos.Main ants.core.ConfigurationManager, và các cấu hình cần thiết khi chạy như xác định tên file .routes, tên file .config, tạo Xterm, wait,…
+ Lê Anh Đức
+ Ngô Tự Nhiên
Chương này nói về quá trình cài đặt chi tiết của bộ thư viện ANTS. Ta cũng đưa ra các dấu hiện nhận biết của quá trình cài đặt như thế nào là thành công. Trên các bước hướng dẫn, có các link để tiện cho việc download thư viện dễ dàng. Sau khi cài đặt xong là phần kiểm tra sự thành công của quá trình cài đặt.
Sau khi cài xong, ta nêu ra một bổ sung nhỏ trong thư viện để phục vụ cho quá trình biên dịch. Ta cũng nêu ra cách bêin dịch một ứng dụng như thế nào, cách đóng gói và giới thiệu các file script trong môi trường shell để điều khiển ứng dụng.
5.1. Cài đặt thư viện ANTS
• Máy có cài đặt Linux Redhat 7.3
• Download packet j2re-1_3_1_16-linux-ị86.rpm.bin tại http://java.sun.com/
• Cài đặt Java Virtual Machine cho hệ điều hành bằng lệnh ./j2re-1_3_1_16-linux-ị86.rpm.bin
• Download packet ants-2.0.3.tar.gz (version mới nhất hiện thời) tại website http://www.cs.utah.edu/flux/janos/ants.html
• Giải nén bằng gunzip –d và tar –cvf
• Sau khi giải nén xong, sẽ cho ra thư mục ants-2.0.3. Vào thư mục ấy, bắt đầu cài đặt ANTS bằng hai lệnh:
%./configure
%make all
• Sau khi quá trình cài đặt hoàn tất, ta sẽ kiểm tra sự thành công bằng lệnh ./sanitycheck trong thư mục ants-2.0.3/scripts. Nếu cài đặt thành công, kết quả sẽ ra như sau:
[root@localhost scripts]# ./sanitycheck
ANTS v2.0 Sanity Check
This is a simple sanity checking script that should be useful for
debugging your Java/JNodeOS/ANTS setup. It will try running the
basic jvm, then some more complicated commands. For each it will
print a hint about what the expected output is. If you get an
exception message, or shell error then something very basic is wrong.
If none of the classes are found, perhaps you should set the
JVM_DEFAULT in ./defaultEnv to point to your installed copy
of the antsvm script.
Good luck.
Looking for ./defaultEnv to setup default environment...
Found it, sourcing ./defaultEnv
Checking that './antsvm -version' works...
java version "1.3.1_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_16-b06)
Java HotSpot(TM) Client VM (build 1.3.1_16-b06, mixed mode)
...ok
Trying command: ./antsvm edu.utah.janos.nodeos.Main
Should print something like: 'ERROR: Must supply a class to load into root flow'
--- BEGIN OUTPUT
Janos Java NodeOS v1.2.0
ERROR: Must supply a class to load into root domain.
Shutting down.
--- END OUTPUT
Trying command: ./antsvm edu.utah.janos.nodeos.Main ants.core.NodeConfigure
Should print something like: 'usage: ants.core.NodeConfigure ...'
--- BEGIN OUTPUT
Janos Java NodeOS v1.2.0
ANTS v2.0
usage: ants.core.NodeConfigure <activeaddr> <physaddr> [options].
-consoleport <int>: Start a telnet-able console on the given port.
-routes <file>: Static routing table is in given file.
-updateRoutes: Turn on dymanic routing updates.
-application <appfile>: Read given file to configure & start an applicat
ion.
-simpleapp <string>: Start a simple application, string is tokenized
for arguments.
-extension <extfile>: Read given file to configure and install an exte
nsion [NOT IMPL].
-msgprefix <string>: Prefix all console messages with the given strin
g.
--- END OUTPUT
ANTS v2.0 sanitycheck is complete.
5.2. Bổ sung vào thư viện ANTS để phục vụ cho quá trình biên dịch
Trong thư viện ANTS sẵn có chỉ cung cấp file antsvm trong thư mục /ants2.0.3/scripts dành cho việc chạy chương trình, chứ không thể biên dịch.
Ta bổ sung một file tên là antsvmc vào thư mục /ants2.0.3/scripts với nội dung như sau:
#!/bin/sh
#
# antsvm
#
# Copyright (c) 2001 University of Utah and the Flux Group.
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this file
# for any purpose with or without restriction is hereby granted.
#
#
# A simple wrapper around a JVM that adds the ANTS classes
# to the classpath.
#
# Define 'JAVA' environment variable to override the JVM.
#
topbuilddir=/root/luanvan/ants-2.0.3
jar_ext=jar
jnodeos_lib=/root/luanvan/ants-2.0.3/lib/jnodeos-pj-debug.zip
jvmulation_lib=/root/luanvan/ants-2.0.3/lib/emuJanosVM.jar
jvmkit_lib=/root/luanvan/ants-2.0.3/lib/JanosVMKit.jar
ants_lib="${topbuilddir}/src/ants.${jar_ext}"
ants_apps_lib="${topbuilddir}/src/apps.${jar_ext}"
ants_tests_lib="${topbuilddir}/src/tests.${jar_ext}"
## Default JAVAC to 'javaC'
if test -z "$JAVAC"; then
JAVAC=javac
fi
## Append ANTS classes to classpath
ants_classes="${jnodeos_lib}:${jvmulation_lib}:${j vmkit_lib}:${ants_lib}:${ants_apps_lib}:${ants_tes ts_lib}"
if test -n "$CLASSPATH"; then
CLASSPATH=${CLASSPATH}:${ants_classes}
else
CLASSPATH=${ants_classes}:.
fi
export CLASSPATH
exec $JAVAC "$@"
#eof
5.3. Tổ chức file của ANTS:
Thực chất, ANTS là một bộ máy chạy trên nền JVM của Linux. Vì vậy, bất kỳ một file binary nào muốn chạy cũng sẽ dùng lại lệnh java. Tương tự, muốn biên dịch file *.java thì cũng phải dùng đến lệnh javac.
Sau khi cài JDK_1.3.1 cho Linux, mặc định nó sẽ nằm trong thư mục /urs/java/jdk1.3.1. Vì vậy, mỗi lần muốn chạy hoặc biên dịch, ta phải cài path cho JVM bằng lệnh:
%PATH=$PATH:/urs/java/jdk1.3.1/bin
ANTS là một máy truyền capsule trên nền Janos Virtual Machine nằm trong thư mục /ants-2.0.3/lib. Tất cả những file phục vụ cho Janos VM đã được biên dịch sẵn và đóng gói trong thư viện của ANTS. Trong thư viện này không chứa những file nguồn của Janos VM. Nếu cần, chúng ta có thể vào http://www.cs.utah.edu/flux/janos/ để download source của Janos VM.
Lệnh biên dịch và lệnh chạy chính thức của ANTS chính là antsvmc và antsvm nằm trong thư mục ants-2.0.3/scripts.
Trong antsvmc và antsvm có khai báo tất cả các classpath cần thiết cho Janos VM như jnodeos, jvmulation, jvmki, và các application, các test file của ANTS như ants_lib, ants_apps, ants_tests.
Tất cả các file dùng để chạy trong ANTS đều phải được đóng gói thành file jar. Vì vậy, nếu chỉnh sửa thư viện hoặc viết một ứng dụng mới bất kỳ nào thì ta phải đóng gói thành file .jar trước khi đưa vào vận hành trong ANTS.
5.4. Các bước biên dịch, đóng gói một ứng dụng mới trong ANTS
• Ví dụ, muốn thêm ứng dụng caching vào ANTS, ta tạo một thư mục riêng ở /ants-2.0.3/src/apps/caching và soạn tất cả các file nguồn .java trong thư mục này.
• %PATH=$PATH:/urs/java/jdk1.3.1/bin
• Biên dịch : %/ants-2.0.3/scripts/antsvmc /ants-2.0.3/src/apps/caching/BindCapsule.java
• Làm tương tự với các file nguồn còn lại. Các file nào có extend một class khác thì phải được bêin dịch sau khi đóng gói .jar các class cần được extend.
• Đóng gói: bằng lệnh:
%jar cvf apps.jar /ants-2.0.3/src/apps/
5.5. Chạy một ứng dụng
Để chạy được một ứng dụng, ta phải hiểu được và soạn các file scripts cho chúng. Thông thường, một ứng dụng đơn giản sẽ được chạy bởi 3 file scripts trong thư mục /ants2.0.3/scripts sau:
cache.routes: là file dùng để cấu hình topology cho mạng, trên nền IPv4 hoặc localhost
cache.config: là file dùng để tạo channel, cấu hình node, tạo dứng dụng trên node, truyền các thông số, tạo connect chính thức.
cache.start: là file dùng để kích hoạt thật sự một ứng dụng ANTS bằng câu lệnh chính $JVM edu.utah.janos.nodeos.Main ants.core.ConfigurationManager, và các cấu hình cần thiết khi chạy như xác định tên file .routes, tên file .config, tạo Xterm, wait,…