環(huán)境準備
-
安裝Docker for Windows
安裝方法可以參考Docker官方文檔诞丽,跟著文檔一步一步走應該沒什么問題的胡嘿,我的是win10 家庭版的
-
安裝Cygwin
直接到官網下載安裝即可:cygwin
-
下載flink源碼
git clone https://github.com/shizhengchao/flink.git
讶泰,因為我fork到我自己的倉庫,所以用的是我自己的地址狠裹,以便后面為社區(qū)做貢獻
開始編譯
-
打開Cygwin,進到flink/docs目錄下執(zhí)行 ./docker/run.sh命令
$ ./docker/run.sh
-
如果上面的命令執(zhí)行成功蒿涎,那么應該是進入到了docker容器內部汛聚,在容器內部找到對應的flink目錄,執(zhí)行build_docs.sh腳本
$ ./build_docs.sh -p
-
如果以上步驟都沒有問題畅买,那么會出現如下信息:
------------------------------------------------------------------------------------- Configuration file: /opt/flink/_config.yml Source: /opt/flink Destination: /opt/flink/content Incremental build: disabled. Enable with --incremental Generating... done in 106.278 seconds. Auto-regeneration: enabled for '/opt/flink' Server address: http://0.0.0.0:4000/ Server running... press ctrl-c to stop.
瀏覽器中輸入:localhost:4000并闲,就可以看到編譯后的文檔了,可以切換中英文谷羞。
問題匯總
基本上在windows環(huán)境下帝火,按照上面的操作是成功不了的,以下是我遇到的幾個問題:
-
$'\r': command not found
cygwin中輸入cd; pwd
cd; pwd
然后編輯.bash_profile湃缎,在末尾加上如下內容犀填,重啟cygwin
export SHELLOPTS set -o igncr
-
windows用戶名是數字引發(fā)的問題
groupadd: '0229' is not a valid group name
導致這個問題的原因是我的windows用戶是數字(公司的電腦,用戶是工號)嗓违,在run.sh中把 username改成英文名就行了九巡,隨便一個,我的是shizc, 在run.sh改成如下內容:
if [ "$(uname -s)" == "Linux" ]; then USER_NAME=${SUDO_USER:=$USER} USER_ID=$(id -u "${USER_NAME}") GROUP_ID=$(id -g "${USER_NAME}") else # boot2docker uid and gid USER_NAME='shizc' USER_ID=$(id -u) GROUP_ID=$(id -g) fi
-
cgywin中的磁盤目錄掛載不了到docker容器中蹂季,報如下錯誤:
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
這個問題冕广,網上給出的方案是在docker前面加上 winpty的命令疏日,但是在我這不生效,識別不了winpty命令撒汉。在執(zhí)行run.sh的時候沟优,如果沒有成功,會打印出執(zhí)行的腳本語句:
docker run -it --rm=true -w /cygdrive/d/java/flink/flink/docs/docker/.. -u shizc -v /cygdrive/d/java/flink/flink/docs/docker/..:/cygdrive/d/java/flink/flink/docs/docker/.. -p 4000:4000 flink/docs-shizc bash -c ' echo echo '\''Welcome to Apache Flink docs'\'' echo '\''To build, execute'\'' echo '\'' ./build_docs.sh'\'' echo '\''To watch and regenerate automatically'\'' echo '\'' ./build_docs.sh -p'\'' echo '\''and access http://localhost:4000'\'' echo bash ' the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
如上睬辐。把docker run 那段內容拷貝到powershell里執(zhí)行, 并且修改成windows的目錄格式 挠阁,如下:
docker run -it --rm=true -w /opt/flink/docs/docker/.. -u shizc -v d:/java/flink/flink/docs/docker/..:/opt/flink/docs/docker/.. -p 4000:4000 flink/docs-shizc bash
如果報
the working directory 'xxx is invalid,
則可以把-w xxxx,這段內容去掉溯饵,也就是不指定工作目錄侵俗,也是可以的。 -
在powershell里執(zhí)行后丰刊,會進入docker容器隘谣,然后在容器中運行 build_docs.sh腳本,如下:
[shizc@5a9b5474c0b3 docs]$ ./build_docs.sh -p
不出意外藻三,第一次執(zhí)行的話會報:No such file or directory洪橘,這個是因為腳本不是unix格式:
首先用vim打開 build_docs.sh文件,然后
shift + :
打開命令模式棵帽,輸入 set ff , 回車熄求,出現如下信息fileformat=dos
可以看到 fileformat是dos格式,再次進入命令模式輸入: set ff=unix逗概,保存并退出vim 弟晚,再次執(zhí)行build_docs.sh腳本。如果出現如下信息逾苫,則編譯成功:
Bundle complete! 9 Gemfile dependencies, 39 gems now installed. Bundled gems are installed into `./.rubydeps` Configuration file: /opt/flink/docs/_config.yml Source: /opt/flink/docs Destination: /opt/flink/docs/content Incremental build: disabled. Enable with --incremental Generating... done in 109.813 seconds. Auto-regeneration: enabled for '/opt/flink/docs' Server address: http://0.0.0.0:4000/ Server running... press ctrl-c to stop.
恭喜你已經完成了將為社區(qū)做貢獻的第一步卿城,打開瀏覽器,輸入localhost:4000铅搓,看下哪些文檔還沒被翻譯成中文的瑟押,趕緊到flink官方jira上提issue, 然后開始你的第一個 pr。