2010年12月30日 星期四

SVN Installation on Linux Ubuntu 10.10

很高興lab的大家都至少開始用svn了,對於工作上真的方便很多。整理一下svn的安裝說明,其實設定起來很快速的。
1. 首先安裝相關套件
   $ sudo apt-get install subversion libapache2-svn apache2
2. 建立 repository,我們先假定建一個repository叫做project1 在/opt/svnroot下
   $ sudo mkdir /opt/svnroot; cd /opt/svnroot
   $ sudo svnadmin create project1
   $ sudo chown  -R www-data:subversion project1;sudo chmod -R g+rws project1
3. 讓使用者可以透過https來access資料
   $ sudo vim /etc/apache2/mods-available/dav_svn.conf
   貼上
<Location /project1> #https://localhost/project1
DAV svn
SVNPath /opt/svnroot/project1   #repository位址
AuthType Basic
AuthName "project1 subversion repository"
AuthUserFile /opt/svnroot/passwd
</Location>
4.重新啟動apache2
$ sudo /etc/init.d/apache2 restart
5.hey~我們還沒設定密碼檔記得嗎?
$ sudo htpasswd -c /opt/svnroot/passwd [user_name]
p.s. 如果要新增第二個帳號記得把-c改成-m否則會洗掉喔! 
6. 試著打開瀏覽器到https://[ip]/project1  或者在Windows上安裝trotoissvn 在Linux上可以直接使用$ svn co https://[ip]/project1 來取得資料
 
Reference:https://help.ubuntu.com/community/Subversion

2010年11月12日 星期五

Install Intel C/C++ Compiler(include mkl)

在科學計算領域,很多人都不相信gnu compiler(gcc)!原因有很多,例如效能?程式結果?取而代之的,大家可能會選用Intel 出產的compiler。但其實Intel有noncomertial的版本可以使用不用錢的。網址是: Intel non-comertial Software 我們只要下載Intel® Parallel Studio XE 2011 for Linux後就幾乎都有了。

下載完解壓縮後,記得先安裝相依套件ex. l_ccompxe_2011.0.084_redist.tgz 所有的安裝都是解壓縮後以root執行install.sh就可以了。

C compiler是icc,C++ compiler是icpc

2010年11月11日 星期四

Mount hdfs on Linux Ubuntu 10.04 Server x86-64

其實主要是參考Mounting HDFS ,主要步驟就3個:
ant compile-c++-libhdfs -Dlibhdfs=1
ant package
ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
然而,事情有這麼順利嗎?如果有就好了...以下是我所有步驟,以root權限執行。

  1. 安裝相關套件 JAVA5 JAVA6 subversion ant automake
          1.1加入套件庫
                將以下兩列加入/etc/apt/sources.list
                deb http://us.archive.ubuntu.com/ubuntu/ jaunty    multiverse
                deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates     multiverse
           1.2 更新套件庫、安裝
               sudo apt-get update
               sudo apt-get install subversion ant automake sun-java5-jdk sun-java6-jdk

     2.設定環境變數
               echo "export HADOOP_HOME=[hadoop位址]">>~/.bashrc ex. echo "HADOOP_HOME=/opt/app/hadoop">>~/.bashrc
               echo "export JAVA_HOME="/usr/lib/jvm/java-6-sun">>~/.bashrc
               source ~/.bashrc
     3.編譯第一步
               cd $HADOOP_HOME
               ant clean
               ant compile-c++-libhdfs -Dlibhdfs=1
     4.Download forrest and install fuse
               wget http://apache.ntu.edu.tw//forrest/apache-forrest-0.8.tar.gz
               tar zxf apache-forrest-0.8.tar.gz
               chmod +x apache-forrest-0.8/bin/forrest
               ant package -Djava5.home=/usr/lib/jvm/java-1.5.0-sun -Dforrest.home=$(pwd)/apache-forrest-0.8
               wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffuse%2Ffiles%2Ffuse-2.X%2F&ts=1289382396&use_mirror=nchc
               mv fuse-2.8.5.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Ffuse%2Ffiles%2Ffuse-2.X%2F fuse-2.8.5.tar.gz            
               tar zxf fuse-2.8.5.tar.gz
               cd fuse-2.8.5
               mkdir -p /opt/app/fuse;./configure --prefix=/opt/app/fuse
               make -j2
               make install
               cd ..
               echo "export FUSE_HOME=/opt/app/fuse">>~/.bashrc
               source ~/.bashrc
     5.最後一步編譯            
               ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
     6. 設定dynamic libarary
               echo "/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/" >>/etc/ld.so.conf
               ldconfig
     7.透過fuse_dfs_wrapper.sh掛載
               cd build/contrib/fuse-dfs
               chmod +x fuse_dfs_wrapper.sh
               echo "export PATH=$PATH:$HADOOP_HOME/build/contrib/fuse-dfs" >>~/.bashrc
               source ~/.bashrc
               mkdir hadoop
               fuse_dfs_wrapper.sh dfs://[namenode]:[port] hadoop -d 參考:conf/core-site.xml ex. fuse_dfs_wrapper.sh dfs://oct5:55011 video -d

這樣就可以把hadoop mount 到hadoop資料夾了。
p.s. namenode請填入hostname不要直接打IP

詭異的arm-linux-gnueabi-g++ -fopenmp

一直以來把OpenMP 的程式compile到arm執行都是去sourcery下載專業試用版的toolchain或自己編一個toolchain來搞,但是就覺得很麻煩。在Ubuntu 10.10我看到了g++-4.5-arm-linux-gnueabi的套件,眼睛一亮就裝來玩,但...

/usr/lib/gcc/arm-linux-gnueabi/4.5.1/../../../../arm-linux-gnueabi/bin/ld: warning: librt.so.1, needed by /usr/lib/gcc/arm-linux-gnueabi/4.5.1/libgomp.so, not found (try using -rpath or -rpath-link)

/usr/lib/gcc/arm-linux-gnueabi/4.5.1/../../../../arm-linux-gnueabi/bin/ld: warning: libc.so, needed by /usr/lib/gcc/arm-linux-gnueabi/4.5.1/libgcc_s.so.1, not found (try using -rpath or -rpath-link)
/usr/lib/gcc/arm-linux-gnueabi/4.5.1/libgomp.so: undefined reference to `clock_getres@GLIBC_2.4'
/usr/lib/gcc/arm-linux-gnueabi/4.5.1/libgomp.so: undefined reference to `clock_gettime@GLIBC_2.4'

於是乎,把 librt.so.1, libc.so找出來,原來是在/usr/arm-linux-gnueabi/lib/所以就把這個路徑加到/etc/ld.so.conf在ldconfig一下就搞定了~
# echo "/usr/arm-linux-gnueabi/lib/" >>/etc/ld.so.conf
# ldconfig

ssh tunel

假設有一台電腦連接著內網,你想透過這一台電腦從外網連到一台只有內網的電腦,例如A: 140.128.98.2, 192.168.1.2   B:140.128.98.3  C:192.168.1.3   你想要從B電腦透過A連到C怎麼辦呢?Well,其實只需要在B電腦打:
sudo ssh -L 140.128.98.3:12345:192.168.1.3:80 joe@140.128.98.3
然後就可以在B開啟browser連到A電腦看到C電腦的80port了