2010年11月17日 星期三

VituralBox安裝guest addition的方法

.

這篇文章其實是篇備忘
我個人以往安裝VirtualBox的guest addition都是將geust addition的安裝光碟mount起來後,再將其copy到某個資料夾,再在該資料夾下安裝(執行./VBoxLinuxAdditionals-x86.run)

因為若不這樣做,而是直將在guest addition的光碟中執行安裝程式,那麼若將該光碟移除,你的VirtualBox guest os將會失去guest addition的功能

但有一天我在某處找到另外的安裝方法,特擷取出來給大家,我其實忘了在哪找到的,因此,若你是原作者,請通知我,謝謝
(我剛用google搜尋到一篇,應該是出自這裡

指令如下,其實和copy guest addition的內容後再安裝沒什麼差別
但個人覺得這種方法比較好,因此就擷錄出來了

下列的指令執行後,會將guest addition安裝到"~/vbox"下
另外,我忘了,需不需要在安裝前,先將"~/vbox",如果有機會重灌vm,我會注意的


1. [裝置] -> [安裝客端額外功能] ,把VboxAdditions這片光碟掛載起來,並到終端機內

2. 進入光碟機的目錄下:cd /media/cdrom0

3. 執行VBoxLinuxAdditionals-x86.run,並把目標指定到/vbox的目錄下:

./VBoxLinuxAdditionals-x86.run --target ~/vbox



.

2010年10月14日 星期四

在Linux mint 8 (Ubuntu 9.10)下安裝ns 2.29

.

之前雖然成功的在Fedora Core 5下成功的安裝了ns 2.29和BittorrentSim
但是我常用的VM還是LinuxMint 8

若要同時開兩個VM,這不是個辦法
真要解決問題,還是得在Linux mint 8 (Ubuntu 9.10)下將ns 2.29裝起來才行

你會看到這篇文章的出現,就代表我已經成功的裝了起來

1.下載ns-allinone-2.29.3.tar.gz並解開

tar zxvf ns-allinone-2.29.3.tar.gz


2.在.bashrc下設定一些變數,設定完後logout,再login一次,讓變數發生作用
我自己的變數設定如下:


NSPATH229=$HOME/ns-allinone-2.29

PATH=$NSPATH229/bin:$NSPATH229/tcl8.4.11/unix:$NSPATH229/tk8.4.11/unix:$PATH
LD_LIBRARY_PATH=$NSPATH229/otcl-1.11:$NSPATH229/lib
TCL_LIBRARY=$NSPATH229/tcl8.4.11/library
export NSPATH229 PATH LD_LIBRARY_PATH TCL_LIBRARY


PS:
這裡的變數設定有參考 linux下安裝ns
但為什麼我的變數為NSPATH229而非NSPATH?
因為我之前有安裝過ns2.34,NSPATH已經被用掉了,因此我將原來的NSPATH comment掉,而NSPATH229就留給ns2.29

3.
在ns-allinone-2.29下,執行

grep 'system=MP-RAS-' ***/*/* -n

結果應如下:


將system=MP-RAS-`awk '{print $3}' /etc/.relid'`
'刪除
變成system=MP-RAS-`awk '{print $3}' /etc/.relid`
將所有有多出'的Makefile.in的行改掉,如下圖


4.我在這裡會遇到下面的問題:

undefined reference to `__stack_chk_fail_local'
ld: libotcl.so: hidden symbol `__stack_chk_fail_local' isn't defined
ld: final link failed: Nonrepresentable section on output
make: *** [libotcl.so] Error 1
otcl-1.11 make failed! Exiting ...

解法是參考這裡:NS-2 problem llType


簡單說,先安裝一些套件:

sudo apt-get install libx11-dev libxmu-dev libxmu-headers libxt-dev libtool g++-4.1

再下載tk-8.4-lastevent.patch (點我下載)
然後進入ns-allinone-2.29/tk-8.4.11/下

cd ns-allinone-2.29.3/tk-8.4.11/

執行:

patch -p0 < tk-8.4-lastevent.patch


再修改下列目錄中的"Makefile.in",將@CC@改成gcc-4.1,@CPP@改成g++-4.1

otcl-1.11/, line 7 : CC = gcc-4.1
tclcl-1.17/, line 40 : CC = gcc-4.1
tclcl-1.17/, line 41 : CPP = g++-4.1
ns-2.29/ , line 36 : CC = gcc-4.1
ns-2.29/ , line 37 : CPP = g++-4.1
nam-1.11/, line 44 : CC = gcc-4.1
nam-1.11/, line 45 : CPP = g++-4.1


若你在這之前有執行ns-allinone-2.29下的./install過,記得到ns-allinone-2.29/otcl-1.11/中執行make clean
(原文有說還要砍掉"Makefile",但我實驗的結果是,make clean即會砍掉"Makefile")

到這裡,我執行完ns-allinone-2.29下的./install
ns2.29就裝起來了

可喜可賀

.

2010年10月6日 星期三

在Windows 7,錄製桌面時沒有聲音 (Realtek HD打開立體聲混音)

.

最近需要在Windows 7下面錄製桌面,遇到的最大困難為錄製不到聲音……
我的Notebook的音效晶片為Realtek ALC662


首先,Realtek HD立體聲混音(Sterio Mix)裝置是隱藏的,且被停用
要打開它

這是Realtek(瑞昱)的裝置管理員圖示


在該圖上按右鍵,選音訊裝置


接著,先將頁面切換到錄製頁面
在下面的裝置上,按右鍵,選擇"顯示已停用的裝置"


如圖,在"顯示已停用的裝置"被打勾後,會看到"立體聲混音"這個裝置跑出來
要注意,這個時候它是透明的,因為這時它預設是停用的,圖中可以看到狀態為"停用"
在"立體聲混音"上按右鍵,選啟用


啟用"立體聲混音"後,"立體聲混音"變成非透明的,狀態為"就緒"


此時,再去錄製桌面,錄音裝置選"立體聲混音"就應該有聲音了

但也有可能沒有聲音,我就是這個case
在google一番後,有人說是Realtek HD的driver有問題,要安裝官網的版本才會有聲音

是的,我在裝置管理員中去選Realtek HD這個device,並選"更新驅動程式",它一直跟我說,你的驅動程式已經是最新,無需更新

但是,在我到Realtek的官網去下載最新的驅動程式並安裝後,我的"立體聲混音"裝置就有聲音了
在Realtek的官網上,它似乎將所有驅動程式整合成一包,不再是根據晶片去分,只有根據OS去分
WinXP/2000一包
Win7一包
Win7的版本為:Vista_Win7_R252
而在裝完後,版本為6.0.1.6194

有圖有真相,圖中可以看到我的驅動程式版本為:6.0.1.6194


.

motoroal的藍芽晶片(CSR)搜尋藍芽裝置

.

我的Notebook為msi cr420,藍芽dongle為csr,driver為Motorola的
在要與Motorola的藍芽耳機H375連接時,遇上困難

最大的困難時,我不知道該怎麼搜尋藍芽裝置
Toshiba的話,會有輔助程式協助你搜尋藍芽裝置
而Motorola的話,雙擊藍芽裝置的圖案,只會出現MyBlueTooth
如圖


搜尋資料後發現,只要在MyBlueTooth中按F5,就會開始搜尋藍芽裝置………
在搜尋藍芽裝置時,工作列上的藍芽圖案會一明一暗

一明

一暗

.

在VirtualBox的windows guest os中和host os進行資料夾分享

.
紀錄一下在virtual box中,若guest os為windows,如何進行和host os資料夾分享

host os指的是你真的主機的os,也就是你virtual machine的宿主,在這個範例中,我的host os為windows xp

guest os指的是你安裝的virtual macine,在這個範例中,我的guest os也為windows xp

而現在,我想在host os和guest os兩者間進行資料的分享,要如何設定?

首先,在開啟virtual machine前,打開VirtualBox的設定,選擇左下的"共用資料夾"後,再選右上的加入


接著,在資料夾路徑中選其其他,選到你想要和guest os分享的資料夾
接著輸入欲分享的資料夾名稱
按下確定


設定完成後,如圖
以圖中來講,我將我的D:\vm\vmsf分享出來,分享的名稱為vmsf
記住分享名稱,在guest os中設定時會用到
設定完開啟virtual machine


進入virtual machine後,開啟檔案總管,在左邊我的電腦上按右鍵,選"連線網路磁碟機"


接著,設定網路磁碟機
磁碟機,選擇你欲分享的磁碟機代號,圖中我設定為R:
資料夾,輸入你要連線的對像名稱,格式為"\\vboxsvr\分享名稱"
我在guest os中設定分享名稱為vmsf,那麼我在這裡就要輸入:

\\vboxsvr\vmsf

如圖中的名稱為\\vboxsvr\music,那表示圖中的分享的資料夾名稱為music(其實是我抓錯圖)


連線成功後的樣子
可以看到我R槽有資料了
如此,virtual machine中的R槽就對應到host os的d:\vm\vmsf共享資料夾了




.

2010年9月9日 星期四

在ns-2.29下安裝並執行bittorrentsim

.

ns-2.29安裝後,開始安裝bittorrentsim

bittorrentsim的作者為Kolja Eger(點我連結網站

作者網頁寫得很簡單,其實沒有那麼清楚
我還是紀錄一下安裝和測試過程吧

作者網站上有三個檔案
bittorrent.patch
bt_flashcrowd_flow.tcl
bt_flashcrowd_star.tcl

bittorrent.patch是作者的bt的實作
而後兩個檔案(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)則是simulation的script file

請自行mapping到相對應的目錄
我的目錄是這樣
/root/ns-allinone-2.29/ns-2.29

安裝bittorentsim

將bittorrent.patch copy到ns-2.29後,在ns-allinone-2.29/ns-2.29下,依序執行:

patch p1 < bittorrent.patch
./confugrue
make clean
make


第一步驟執行後(上patch),會在ns-2.29下多出一個目錄:bittorrent
ns-2.29/bittorrent中的檔案就是作者bt的實作了
但要重新make ns才能將作者的實作的node加入ns中,讓simulation script file可以用

到這,bittorrensim就安裝進ns了,你可以寫simulation了
但是裝好我測試了一下……
本來不會有warning message的simulation script file在裝完bittorrentsim後,再執行同樣的simulation會跑出一堆warning……

warning: no class variable Node::AppRunning_

see tcl-object.tcl in tclcl for info about this warning.


anyway,只是warning而已,至少還是可以動的

20110104更新:
在將BTSim裝入NS229之後,之後跑任何script都會跳出"warning: no class variable Node::AppRunning_"這個warning,很煩
解法是在ns-default.tcl中加這一行:

Node set AppRunning -1

重編NS(這步我不確定要不要,我是習慣重編)
然後這warning就會消失囉


測試作者提供的兩個script file
測試過程中我遇到一些困難,在這我直接提解法,而為什麼會產生這些問題要等我trace code後才能回答了
在ns-2.29/bittorrent下再開一個folder:scripts
將兩個script file(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)copy到該目錄(ns-2.29/bittorrent/ns-2.29/bittorrent/scripts)下

回到ns-2.29,也要copy兩個script file(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)到這裡,執行

ns bt_flashcrowd_star.tcl 10 1 1000


第一個參數為peer數
第二個參數為random number generator
第三個參數為上傳頻寬(單位為kpbs)
所以上述的命令為:跑一個packet-level的simulation,10個peers,上傳頻寬為1000kbps

執行後,就會開始跑simulation,simulation的結果會在ns-2.29/bittorrent下再開新目錄,將結果寫入

以我的case,執行時會跑出下列這一行

bittorrent/results_flash_packet_star_100MB_N_P_10_C_125000.0Bps_seed_1_1284040923


這表示simulation完後,結果會被寫入
bittorrent/results_flash_packet_star_100MB_N_P_10_C_125000.0Bps_seed_1_1284040923這個資料夾

.

在linux fc5下裝ns 2.29

.

Efficient Simulation of Large-Scale P2P Networks Packet-level vs. Flow-level Simulations
這篇paper的作者Kolja Eger用ns2寫了bittorrent的simulation,並open source

所以想要用ns2寫p2p simulation的人,這個東西會是個不錯的參考

原本bittorrentsim是放在作者學校的網站上:
http://www.tuhh.de/et6/research/bittorrentsim/

然而,Kolja Eger畢業了,網站被移除了
經詢問,Eger把code改放到他的google site
https://sites.google.com/site/koljaeger/bittorrent-simulation-in-ns-2

然而,他的bittorent code是以patch file release的,並且是給ns-2.29用的

為此,我必需裝一個ns-2.29來安裝他的bittorrentsim

然而,安裝ns-2.29的過程不那麼順利
make時會有一堆error,據悉是gcc改版,規則變嚴格的原因
(這個我有印象,有次gcc更新後,本來可以make的code會make過不了)

我特地找個比較久的linux virtualbox image:Fedora Core 5
沒想這個distribution的gcc還蠻新的:gcc version 4.1.0 20060304 (Red Hat 4.1.0-3)
(其實我不確定是distribution本來的版本就這麼新,還是我以前有做過更新……)
所以make ns-2.29還是會有一堆error

要安裝ns-2.29時會出現一堆error,按照下列這個連結的方法就可以裝起ns-2.29
ns-2.29在Ubuntu8.04中的安装
基本上面文章的解法可行,按照他的方法,我把ns-2.29裝起來了

但是過程中會遇到另一個問題是文章中沒提到的,據說是bash 3.1.I的關係
error code如下:

checking system version (for dynamic loading)... ./configure: line 6017: syntax error near unexpected token `('


在ns-allinone-2.29的目錄下,複製下面這行:
for f in $(find -name configure); do sed "s/relid'/relid/" -i $f; done
貼上,執行,問題就解了
這個解法的原文出處:Compiling Network Simulator 2.29

到這裡,就裝好ns-2.29了
可以開始動手安裝bittorrentsim了


.

在linux fc5下裝VirtualBox guest addition

.

為什麼現在還要回頭使用linux fedora core 5呢?
……

因為,我要裝ns2 2.29
因為,BittorentSim的patch file是for ns2 2.29
而ns2 2.29在太新的gcc下……會裝不起來……

我有兩個選擇:
1.要嘛在新的gcc裝起ns2 2.29
2.要嘛就是在較舊的linux下裝ns2 2.29

solution 1我試過,但失敗了

所以我現在要試solution 2

但solution 2面臨到的第一個難題是:我要裝guest addtion
但fedora core系列都沒有linux kernal src header
而要安裝guest addition,就需要有linux kernal src header
否則就會遇到如下的錯誤:

Building the VirtualBox Guest Additions kernel modules [FAILED]
Your system does not seem to be set up to build kernel modules.


這個難題我很久以前就遇過了,因為即使是vmware的guest os,也是要裝vmware guest tool
不是只有vitualbox才有這問題


為什麼要裝guest addtion這個原因我就不解釋了,簡單的說,不裝guest addtion我用不下去

好,我們現在就來解問題:
怎裝linux kernal src header?

有人說:

yum install kernel-devel-$(uname -r)


以前這個指令是對的,但現在不work,因為fc5太舊了,官方不maintain了


好,那找其他的repository如何?
如新竹縣網的

http://apt.nc.hcc.edu.tw/web/yum_setup.htm


裝好了之後,yum update可以使用
但還是找不到linux kernal source hdr
錯誤如下:

Error: failure: Fedora/RPMS/kernel-devel-2.6.15-1.2054_FC5.i686.rpm from core: [Errno 256] No more mirrors to try.



好,到這裡線索已經出來了,我們至少知道fc5的kernel src hdr的rpm name為:kernel-devel-2.6.15-1.2054_FC5.i686.rpm

上網google一下kernel-devel-2.6.15-1.2054_FC5.i686.rpm,隨便捉一個下來
安裝:

rpm -ivh kernel-devel-2.6.15-1.2054_FC5.i686.rpm


然後再裝一次guest addition

./VBoxLinuxAdditionals-x86.run --target ~/vbox


恭喜,終於裝成功了,我有guest addtion 可以用了
有圖有真相



.

2010年8月3日 星期二

ubuntu 9.10下安裝oversim

.

首先要安裝oversim
在./configure時,會出現下列error
configure: error: zlib or zlib header file not found, please install it

此時要安裝zlib
我是裝zlib1g-dev
sudo apt-get install zlib1g-dev

裝完後,就可以bypass該error

但還是會出現新的error:
configure: error: Cannot run wish (wish command "puts OK; exit" failed): maybe you are not running X or DISPLAY environment variable not set?

原來要在xwin下的console去執行./configure(我習慣用遠端)
在xwin下再執行一次./configure,就過了,只是會出現一些warning

configure: error: Cannot run wish (wish command "puts OK; exit" failed): maybe you are not running X or DISPLAY environment variable not set?

WARNING: The configuration script could not detect the following packages:

MPI (optional) LibXML/Expat Akaroa (optional)

Scroll up to see the warning messages (use shift+PgUp), and search config.log
for more details. While you can use OMNeT++ in the current configuration,
be aware that some functionality may be unavailable or incomplete.


WARNING: your PATH doesn't contain /home/gdemon/oversim/omnetpp-4.1/bin!
Add the following line to your .profile or .bash_profile (provided you use bash):
export PATH=$PATH:/home/gdemon/oversim/omnetpp-4.1/bin


WARNING: The TCL_LIBRARY environment variable is not set, and without it
Tkenv (the GUI runtime environment) may be unable to find the BLT library.

Add the following line to your .profile or .bash_profile (provided you use bash):
export TCL_LIBRARY=/usr/share/tcltk/tcl8.4

For additional information, please visit the "Common installation problems"
page on www.omnetpp.org.

.

2010年7月8日 星期四

ubuntu下找不到pthread_create的man page

.

最近linux都改用ubuntu了
在ubuntu下預設是沒有pthread_create的man page,要再自己加裝才行

sudo apt-get install manpages-posix-dev

裝完就man得到了

.

2010年7月6日 星期二

在notepad++下新增awk language的highlight

.

Notepad ++沒有內建awk語言的highligh,因此我們要自己利用user define新增

在網路上找了一下,有人自訂出awk language highlight (文章原始出處)

做法如下:
在 "%APPDATA%\Notepad++"下找到'userDefineLang.xml",開啟它,貼上原始文章中自訂的文字
若 "%APPDATA%\Notepad++"下沒有'userDefineLang.xml"這個檔案,則自行新增一個同名的檔案,再貼上
在這我提到改好的userDefineLang.xml,請按下面的連結,下載後,移過去即可
按此下載awk language highlight
然後重開NotePad++即可在工具列->程式語言(language)下找到awk的選項了



%APPDATA%的位置在每個人的電腦上不一定
在windows 7上,是在使用者的家目錄下的"AppData\Roaming"
若不知道,則進入cmd line(開始->執行->cmd),然後打"echo %AppData%,下面秀出來的位置就是你電腦上的%AppData%所在位置,如下圖



.

改變notepad ++的佈景顏色

.

我個人習慣使用黑底白字的編輯器
而現在大部份的編輯器都有主題的設計,可以讓你從default的白底黑字去選擇其他主題,如黑底白字,或黑底黃字等

使用主題換顏色的好處是,在編輯器會針對不同語言的關鍵字highlight的情況下,換主題通常不會影嚮highlight的效果

而notepad ++如何切換主題?
在找了許久終於被我找到了

工具列->自訂->設定程式語言格式
然後再從"主題選取"選擇你想要的主題即可
我現在是使用blackboard style

.

2010年4月29日 星期四

如果sementation fault發生在STL的map中?

.

如果sementation fault發生在STL的map中,而非你寫的程式,該怎麼辦?
google了一下,大家都說是memory access跨boundary,這其實是廢話,因為sementation fault本身就imply這個事實

個人有發生過一個case,提出來供大家參考
當我在struct中宣告一個map時,這個struct能否動態被配置記憶體並使用?
答案是可以,但是在該struct被new出來後,不可以用memset去清空

如下的struct,在new出來後,若用memset去清空該struct,再去使用該struct中的map,就會出現
"程式記憶體區段錯誤"
若不清空,則就可以正常使用

struct peer_ent {
unsigned long IP; // the IP of the remote peer.
map tcp_conn_tbl; // key == lport + wport (4B)
map udp_conn_tbl; // key == lport + wport (4B)
unsigned long time; // 20100320: ????
unsigned char is_1st_pkt;
unsigned char dir; // when the peer's dir == the dir of 1st conn between the host and peer
unsigned char rsvr[2]; // reserved
};

.

2010年3月17日 星期三

關於Dropbox這個網路硬碟的額外免費空間的獲得方式

.

關於Dropbox這個軟體很多人已經介紹過,他是個網路硬碟的服務,只是他提供了"自動同步"功能
簡單的說,透過他提供的軟體,你可以讓你的硬碟的某個資料夾和你的網路硬碟"全自動的進行同步"

由於同步程式會在背景執行並自動監控本地同步資料夾
所以理論上你的本機資料夾會總是和網路硬碟的內容同步
而在這個之前,我都是用隨身碟搭配免費的同步軟體(如allwaysync)來使用,這有兩個缺點:
1.麻煩,要同步時還要插上隨身碟
2.若忘了同步,又分別在兩台電腦上修改文件,則悲慘的事就發生了……會發生conflict,這時候就必需人工排除了

另外,由於allwaysync支援ftp同步,我在之前其實也是試過使用ftp加上allway sync來同步,這樣就可以省去插隨身碟的麻煩
不過不幸的是,用ftp同步的速度比隨身碟慢太多了……
若在要下班的時候才執行同步,就要等很久
而平常又不可能沒事的手動去執行同步

簡單的說,全自動的在背景執行同步才是王道


這功能我期待好久了,終於有廠商做出來了

可以同步的資料夾大小取夾你的網路硬碟大小,目前是免費為2GB(最多3GB),然後付費的話,可以有50GB和100GB兩種容量(價格也是差一倍)

2GB若只同步文件的話,其實也夠了
對於有多台電腦的使用者,只要有網路,搭配上dropbox的服務和同步軟體,就能達到不管在哪台電腦上的文件,永遠都是最新

不過本篇文章的重點其實是如何獲得額外的免費空間
一開始,你的免費空間為2GB,每介紹一個人使用dropbox,你就可以獲得額的250mb
但是另外還有兩個方法可以獲得額外的免費空間
1.完成getting started page上列出的六項工作中的五項,你就會得到250mb
2.一開始註冊時,想辦法透過別人的介紹信中去註冊,這樣別人會獲得額外的250mb,而你卻也獲得額外的250mb
所以理論上,一開始你就可以有2.5GB的免費空間
然後只要再介紹兩個人使用dropbox,你就有3GB了,而3GB是dropbox免費空間的上限

另外,dropbox的額外250mb是從另一個人透過介紹信完成註冊後,使用同步程式進行過同步才會發的,若該使用者只是完成註冊,而沒有使用同步程式進行過同步,你仍然無法獲得額外的250mb空間

若沒法獲得介紹信,這裡提供一個連結,點下面的連結完成註冊,理論上你會多獲得250mb(這是我2010一月時實驗的結果,也許後面會修改政策也說不定)
Visit www.dropbox.com

.

2010年3月8日 星期一

pietty(putty) ssh login 亂碼的解決方法

.

問題雖然簡單,但以後還是有可能會遇到,紀錄一下解決問題的過程

遇到的問題是,使用pietty/putty ssh login進linux後,build code的error message會變成亂碼
雖然大部份網頁的解答是使用pietty,然後去修改編碼方式
而pietty雖然可以動態的的改變編碼,但有些問題不是改pietty的編碼方式就解得了的

簡單的說,問題在於中文的編碼方式有big5和unicode兩種
而不是只有gcc的message才有中文亂碼的問題,只有folder中有中文檔名或中文資料夾名稱,那麼ls的結果中一樣也會出現亂碼
因此要判斷亂碼是否解決的依據不一定要再編譯程式碼,只要ls即可

解法就是login後
若系統中文編碼是big5,在提示符號打LANG=zh_TW.Big5
若系統中文編碼是unicode,在提示符號打LANG=zh_TW.UTF-8
然後在pietty中選對應的編碼呈現方式後,就不會出現亂碼了
若不知道系統是哪種,兩種都試一次就知道結果了

若不想每次ssh login後都執行一次LANG=zh_TW.XXX,可以透過修改.bashrc來達到每次ssh login後自動執行LANG=zh_TW.XXX

.

2010年1月27日 星期三

Ubuntu 9.10的man page找不到一些東西

.

在Ubuntu上用man時,發現一些寫code時的function找不到,這不合理

在網路上找了一下資料,原來再安裝manpages-dev就好了
在提示符號下輸入:
sudo apt-get install manpages-dev

安裝完後,再用man就可以查到function了

那麼到底manpages-dev是什麼?
繼續追查下去,首先找到APT的來源,以下文字擷取自WIKI:高級包裝工具
高級包裝工具(英語:Advanced Packaging Tools,簡稱:APT)是Debian及其衍生發行版的軟件包管理器。APT可以自動下載,配置,安裝二進制或者源代碼格式的軟件包,因此簡化了Unix系統上管理軟件的過程。APT最早被設計成dpkg的前端,用來處理deb格式的軟件包。現在經過APT-RPM組織修改,APT已經可以安裝在支援RPM的系統管理RPM套件。
原來如此,APT現在可用在RPM上了
在用RPM時,dependency為我帶來很大的痛苦,而現在,APT的出現將一切變簡單了,安裝程式只要one step(從wiki推斷,rpm的dependency其實是由apt自動解決)
用了apt,讓我對linux改觀

接著再找,找到中文的APT的How To:APT HOWTO中文版

apt可以search(是apt-cahche,不是apt-get)
apt-cache search atari

於是我search了 manpages:
sudo apt-cache search manpages

結果很多,節錄一些重要的

manpages - GNU/Linux 系統使用手冊
manpages-dev - 給開發者參考使用的 GNU/Linux 說明手冊
vim-common - Vi 增強版 - 共用檔案
funny-manpages - 許多有趣的說明手冊(manpage)
manpages-zh - 中文 manual page

原來manpage有超多的,而Ubuntu 9.10預設少裝了manpages-dev(給開發者參考使用的 GNU/Linux 說明手冊)
對有需要寫程式的人,就要自己安裝manpages-dev了
祝大家寫程式順利

.

2010年1月22日 星期五

Ubuntu 9.10 / Linux Mint 8 安裝Android NDK

.

要在Ubuntu 9.10 / Linux Mint 8 下安裝Linux版的Android NDK
若用此兩版裝ndk,會遇到問題

正常的安裝步驟:

1.首先要將將ndk解壓縮:
$ unzip android-ndk-1.5_r1-linux-x86.zip

2.解完後的目錄為android-ndk-1.5_r1 ,則切換到該目錄:
$ cd android-ndk-1.5_r1

3.接著要在解壓縮後的目錄下執行./build/host-setup.sh:
$ ./build/host-setup.sh:

接著就會遇到問題:

./build/host-setup.sh: 23: source: not found
Detecting host toolchain.

./build/host-setup.sh: 57: force_32bit_binaries: not found
./build/host-setup.sh: 58: setup_toolchain: not found
./build/host-setup.sh: 60: cannot create : Directory nonexistent
Can't create directory for host config file: out/host

如下圖:


解法為用文字編輯器(eg. vi)修改./build/host-setup.sh中的第一行,將#!/bin/sh改為#!/bin/bash後,存檔,再執行一次./build/host-setup.sh,即可安裝成功

gdemon@gdemon-ubuntu910:~/android-ndk-1.5_r1$ vim ./build/host-setup.sh
gdemon@gdemon-ubuntu910:~/android-ndk-1.5_r1$ ./build/host-setup.sh
Detecting host toolchain.

CC : compiler check ok (gcc)
LD : linker check ok (gcc)
CXX : C++ compiler check ok (g++)
Generate : out/host/config.mk
Toolchain : Checking for arm-eabi-4.2.1 prebuilt binaries

Host setup complete. Please read docs/OVERVIEW.TXT if you don't know what to do.

如下圖:


接著make在samples裡的例子:
$ make APP=hello-jni

然後prompt就會提示你編譯so成功,並安裝到apps/hello-jni/project/libs/armeabi/中

如下圖:


在Ubuntu 9.10 / Linux Mint 8下我都試過有這問題,也都是這樣就可以安裝成功了

.

2010年1月21日 星期四

Ubuuntu ssh login 速度慢

.
在裝了Ubuntu後,用ssh login ubuntu後,發現輸入username後,要等一陣子才能輸入password,而server明明是沒有loading的,不該這麼慢才對

google了一下,大家都說是因為ssh預設dns反查所造成的,但解法卻莫衷一是……
解法有很多,有些我試了是沒用的

在Linux Mint 8 和 Ubuntu 9.10下,兩個我都試過了,真正用的:
修改/etc/nsswitch.conf,找到 hosts那行
原先應該長這樣:hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
改成這樣:hosts: files dns [NOTFOUND=return]
存檔,不用重開Ubuntu,馬上有用

.

2010年1月20日 星期三

VirtualBox在Ubuntu下自動掛載sharefolder

.

在VirtualBox下,在host os和guest os間分享資料夾的文章已經有人介紹很多
當guest os為linux (ubuntu)時,每次重開vm都要執行mount的指令來share folder時會不會讓你很煩?

看到有人使用script的方式來autorun mount的指令,不是不可行,只是很麻煩,因為還要將執行指令的account設為sudoer....
若只是希望開機自動mount virtualbox的sharefolder的話,下面介紹一個更簡單的方法,只要修改/etc/fstab就好了

1.在shell下執行:sudo vi /etc/fstab
2.在最下面加入如下面的一行,存檔,重開機後,你就會發現vbox的分享資料夾被自動掛載了
sharefolder_name mount_point就好了
比如說,以我的設定來講,如入如下的一行,vb_ShareFolder為vbox的分享資料夾名稱,/home/gdemon/vbsf為我的mount point(掛載點)
vb_ShareFolder /home/gdemon/vbsf vboxsf


我的guest OS為Ubuntu 9.10,保證可以,另外原文作者也試過在9.04下這樣就行
根據原文的說法,若為8.10,則要這樣改:
sharefolder_name mount_point vboxsf defaults 0 0
此方法的原文出處

.

2010年1月5日 星期二

Android SDK 安裝問題

.

最近由於計畫的關係必需要在Android上開發程式
在安裝Android的SDK時出了問題:

Failed to fetch URL https://dl-ssl.google.com/android/repository/repository.xml, reason: HTTPS SSL error. You might want to force download through HTTP in the settings.

沒法更新自然就沒法下載AVD(Android Virtual Device),本來想一個一個單獨下載的
但是這樣不是解決問題的正確方法

最後我是這樣解決的:將settings裡的"force https://...source to be fetched http://..."這個選項打勾就可以順利更新了,如下圖:


20090120補充:
在Ubuntu上裝SDK又遇到同樣的問題,發現除了將該選項打勾外,還要按下"Save & Apply"後才能更新成功,按下Save & Apply後,去點Available Packages就能看到update list了

.