創作內容

0 GP

算棋 on Docker (Part 1)

作者:needgem│2017-05-17 09:05:20│巴幣:0│人氣:567
話說覺得系統裝越來越多東西感覺到有點討厭的時候,
就想起了隔離的方式... 在 Linux 中現在最火熱的莫過於是 Docker 了.

於是就開始想試試看如何把 ShogiGUI 跟各家算棋程式 Docker-ized.
但是在本文中不會論及如何安裝 Docker, 敬請見諒.

其實在一路算棋的過程中, ShogiGUI 跟 mono 都經過改版多次,
於是在原來的原生系統上的 mono + ShogiGUI 似乎變得越來越不穩定,
才忽然想到有 docker 這條路, 加上各式開源的算棋程式的發展,
和 docker GUI 設定上的可能性, 於是才開始考慮以這樣的方式包裝所有的算棋方式.

大致上的思路參考自以下網頁:

首先, 最基本需要的套件必須先安裝:
wget: 從網路上取得需要的檔案.
unzip: 解壓縮必須.
git/git-core: git 取得原始程式碼.
build-essential: 編譯程式需要的各種套件.

確定好基本套件之後, ShogiGUI 是 Windows 程式, 本來可能只能用 wine 的,
但是 ShogiGUI 可以使用 mono 來執行.

意外的在這裡有了分岐的想法:
1. 直接找 mono 當作基底容器 a.k.a. From mono
2. 還是老實從 ubuntu 開始建造容器... a.k.a. From ubuntu:16.04

用前者的優點是不用在編譯過程中每次都去重裝 mono,
缺點是... 它的基底不是 ubuntu 而是 debian, 多少還是有些差距的.
後者的話當然就是反過來, 可以在比較適應的 ubuntu 環境中使用,
但是需要安裝 mono-complete.

在這邊, ubuntu + mono-complete 還是需要安裝 libcanberra-gtk-module,
而用 mono 為基底則需要安裝以下的套件以避免執行 ShogiGUI 時發生警告或錯誤:
libgtk-2.0-0, libcanberra-gtk-module: gtk 相關套件.

接下來, ShogiGUI 有 GUI, 所以, 必須要考慮如何在 docker 開啟 GUI 介面.
此時參考的文章為:

在Docker 裡面跑GUI 程式


最簡單的方式是設定好 docker 內的使用者資訊
1. docker 內的使用者 uid 和 gid 需要和 docker 外的一樣 (重要)
2. 執行 docker 時需要將 DISPLAY 環境變數跟 X11 資源檔分享給 docker 內環境.

不過完成了上面兩項工作之後, 開出來的 GUI 原本該有文字的地方
都只剩下框框, 所以顯然還需要把 locale 日文化以便顯示出日文字.
所需步驟如下:
1. 需要日文字型, apt-get install 以下字型 (不必全裝也未列出所有可能字型)
    ubuntu/debian: fonts-{ipafont,ipaexfont}-{gothic,mincho}
                             fonts-takao-{pgothic,gothic,mincho}
2. 需要設定為日文 locale:
    ubuntu 比較簡單, 如下即可
    RUN apt-get install -y locales && \
             locale-gen ja_JP.UTF-8
    在最後執行之前記得 ENV LANG ja_JP.UTF-8 即可.
    debian 則略為複雜, RUN 所需要的指令為
    RUN echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && \
             locale-gen ja_JP.UTF-8 && \
             dpkg-reconfigure locales && \  
             /usr/sbin/update-locale LANG=ja_JP.UTF-8
    最後也需要在執行前確定 LANG 環境變數.
    此指令參考自某容器.

不過最後一步卻也是最不能忘記的步驟:
ShogiGUI 下載下來解開安裝並執行~
RUN wget http://shogigui.siganus.com/shogigui/ShogiGUIv0.0.6.10.zip && \
         unzip ShogiGUIv0.0.6.10.zip && \
         cd ShogiGUIv0.0.6.10
ENTRYPOINT [ "/usr/bin/mono" ]
CMD [ "ShogiGUI.exe" ]

如此一來才能成功地做好 Dockerfile.
不過編譯完這樣的 Dockerfile 只能把基本的 ShogiGUI 介面打開, 內附的 gpsfish 也無法在 linux 底下使用,
也尚未引入其他將棋 AI 程式... 就要留待之後敘述了.

---

這樣寫法只有自己懂而已,
所以如果要公開的話還需要修飾吧.
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3579158
Some rights reserved. 姓名標示-非商業性 2.5 台灣

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★needgem 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:暫存的 Benchmar... 後一篇:算棋 on Docker...

追蹤私訊切換新版閱覽

作品資料夾

kuroshiro????
天氣真好看更多我要大聲說昨天06:00


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】