Windows環(huán)境下編譯Flink文檔

環(huán)境準備

  1. 安裝Docker for Windows

    安裝方法可以參考Docker官方文檔,跟著文檔一步一步走應該沒什么問題的,我的是win10 家庭版的

  2. 安裝Cygwin

    直接到官網下載安裝即可:cygwin

  3. 下載flink源碼

    git clone https://github.com/shizhengchao/flink.git,因為我fork到我自己的倉庫,所以用的是我自己的地址,以便后面為社區(qū)做貢獻

開始編譯

  1. 打開Cygwin,進到flink/docs目錄下執(zhí)行 ./docker/run.sh命令

    $ ./docker/run.sh
    
  2. 如果上面的命令執(zhí)行成功,那么應該是進入到了docker容器內部,在容器內部找到對應的flink目錄,執(zhí)行build_docs.sh腳本

    $ ./build_docs.sh -p
    
  3. 如果以上步驟都沒有問題,那么會出現(xiàn)如下信息:

    -------------------------------------------------------------------------------------
    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)境下,按照上面的操作是成功不了的,以下是我遇到的幾個問題:

  1. $'\r': command not found
    cygwin中輸入 cd; pwd

    cd; pwd
    

    然后編輯.bash_profile,在末尾加上如下內容,重啟cygwin

    export SHELLOPTS
    set -o igncr
    
  2. windows用戶名是數(shù)字引發(fā)的問題

    groupadd: '0229' is not a valid group name
    

    導致這個問題的原因是我的windows用戶是數(shù)字(公司的電腦,用戶是工號),在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
    
  3. 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,這段內容去掉,也就是不指定工作目錄,也是可以的。

  4. 在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 , 回車,出現(xiàn)如下信息

    fileformat=dos
    

    可以看到 fileformat是dos格式,再次進入命令模式輸入: set ff=unix,保存并退出vim ,再次執(zhí)行build_docs.sh腳本。如果出現(xiàn)如下信息,則編譯成功:

    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。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容