[心得] Ubuntu + ES2lib 架站(1)

看板mud (網路地下城/文字遊戲)作者 (尋找一片海洋)時間12年前 (2013/01/24 17:16), 編輯推噓4(402)
留言6則, 5人參與, 最新討論串1/1
0、寫在前頭 目前仍在學習架設及深入了解運作原理。 在這期間感謝 laechan撥空指導及經驗傳授。 感謝gasbomb 在本版(ptt mud)張貼使用Ubuntu架站心得分享。 一、準備工具 OS: Ubuntu 12.10 MUDOS: FluffOS 2.24 MUDLIB: ES2_lib.v1.3b 1) 有空機器就直接在機器上安裝Ubuntu,我是用VMPlayer安裝一個Linux虛擬機。 這步驟谷哥大神會教。 2) 在Ubuntu上安裝 zlib dev apt-get install zlib1g-dev 3) 將抓下來的FluffOS 解開,放在工作目錄下。 1. mkdir /mud 2. mv fluffos-2.24.tar /mud 3. tar -xvf fluffos-2.24.tar 4) 接下來要開始編譯fluffos 1. cd /mud/fluffos-2.24 2. 改編options.h(or local_options) 在fluffos-2.24底下已經有很多options.h的範本,但是它們的名稱都是用 local_option開頭,例如local_options.tmi2 我們可以使用這些範本做改寫,改寫完之後再將檔名改成"local_options" 這樣等等在編譯的時候,會直接採用我們改寫好的local_options檔 這邊要注意的是,每一個mudlib都會使用不同的local_options,最好的方 法,就是拿mudlib裡面所附的options.h來直接使用,但是有些mudlib並不 會附上這個檔案,這時候就要靠自己翻文件或是不停的TRY&ERROR。 我在ES2網站上抓的MUDLIB並沒有附這個文件,於是我在谷哥上又花了一些 時間找十多年前被採用的options.h檔。 比較重要的option如下: #define DEFAULT_PRAGMAS #define PACKAGE_UIDS #define AUTO_SETEUID #define AUTO_TRUST_BACKBONE #define PROG_REF_TYPE #define CALLOUT_CYCLE_SIZE #define CFG_MAX_GLOBAL_VARIABLES #define ALLOW_INHERIT_AFTER_FUNCTION 黃色:DEFAULT_PRAGMAS有一些不同的屬性可以做開關,這關係到 MUD在執行的時候的行為,在mudlib裡面可以找到"#pragma"關鍵字, 它的後面會帶有參數,就根據你mudlib裡有的參數去做這個開關的設 定。而PRAGMA_WARNINGS這個開關會讓你的mud執行時吐出warning message,可以先把它給關掉。 紫色:這三個是跟UID有關,我是都把它給打開。不然跑ES2lib會 有錯誤。 藍色:在編譯fluffos時會出現錯誤訊息,根據錯誤訊息去增減。 紅色:這一個在我抓來的ES2 options.h裡面沒有,但是不加載這 個參數,會造成mudlib運作時,繼承物件錯誤 我這幾個參數的設定如下: #define DEFAULT_PRAGMAS PRAGMA_SAVE_TYPES + PRAGMA_STRICT_TYPES + PRAGMA_SAVE_BINARY #define PACKAGE_UIDS #define AUTO_SETEUID #define AUTO_TRUST_BACKBONE #define PROG_REF_TYPE int #define CALLOUT_CYCLE_SIZE 512 #define CFG_MAX_GLOBAL_VARIABLES 256 #define ALLOW_INHERIT_AFTER_FUNCTION 3. 改編好local_options之後,開始編譯工作。 4. ./build.FluffOS 5. make 6. make install 7. 在步驟4~5可能會有錯誤,請根據錯誤訊息退回第2步修改。 如果一切順利,就會在/mud底下產生"bin"資料夾,並將執行檔放到bin下。 5) 將ES2lib解壓到你要運行的目錄下,我是將它放在/mud/mudlib 1. tar -zxvf /tmp/ES2_lib.v1.3b.tar.gz 2. mv mudlib /mud 6) 設定mudlib config 1. 將/mud/mudlib/adm/etc/es2.conf copy 到 /mud/bin cp /mud/mudlib/adm/etc/es2.conf /mud/bin *這步可以不做,只要執行時讓/mud/bin/driver吃得到config就行 放在執行目錄下方便管理 2. 修改/mud/bin/es2.conf a) name: 你mud的名稱,可以中文可以英文 b) external_port_1: telnet xxxx xxxx請填入你想給人連線的port number c) mudlib directory : 你的mudlib放的位置 請填入絕對路徑,這裡的例子是: mudlib directory : /mud/mudlib d) binary directory : 你的mud執行檔的位置 請一樣填入絕對路徑,這裡的例子是: binary directory : /mud/bin e) 其它請依需求修改 3. 修改 /mud/mudlib/include/globals.h a) 將第一個#define拿掉: //#define MUD_NAME 不然執行的時候會有重覆命名的錯誤 b) MUD_PORT: 請對應上面的external_port_1 設定 7) config 設定好之後,令人開心的時候就到了。 接下來只要執行 "/mud/bin/driver /mud/bin/es2.conf" 這串指令就ok了 如果有那麼簡單,我就不用寫這篇騙P幣了:( 下一篇是運行MUDLIB的除錯篇.... to be continue... 補充: 在Ubuntu裡面我有額外安裝這幾個套件,如果編譯出現問題可以試看看有沒有幫助: apt-get install build-essential apt-get install bison apt-get install dos2unix -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.66.174.184

01/24 17:44, , 1F
我昨天也想寫第一次架站就上手說-.-
01/24 17:44, 1F

01/24 17:48, , 2F
./driver /mud/bin/es2.conf &
01/24 17:48, 2F
※ 編輯: neca 來自: 210.66.174.184 (01/24 18:25)

01/24 23:50, , 3F
推分享。不過 Ubuntu 版本比較建議裝
01/24 23:50, 3F

01/24 23:54, , 4F
01/24 23:54, 4F

01/28 23:28, , 5F
32bits or 64 bits?
01/28 23:28, 5F

01/29 13:12, , 6F
為了讓情況不複雜 先用32bit
01/29 13:12, 6F
文章代碼(AID): #1H0FlgJc (mud)
文章代碼(AID): #1H0FlgJc (mud)