下載 Java,聽起來是一件很簡單的事情。不論是在 Windows 或者 Linux 上。
如果 Linux 有 GUI,那麼在操作上和 Windows 基本上沒什麼大問題。只要透過瀏覽器,滑鼠點一點,下載完成就可以很輕鬆地將 Java 裝好了。
但若是沒 GUI 的 Linux,好像也簡單,用 curl 或 wget 這兩個指令,就可以下載 RPM 格式或 tar.gz 格式的 JAVA 了。
一開始,我也是這麼想,下載的確不應該算是一件很困難的事。多數情況,我的 CentOS 並不會特別安裝 Java,只是最近想玩玩 ELK(Elasticsearch + Logstash + Kibana),學學大數據分析,而 Elasticsearch 剛好需要 Java 的執行環境,所以很理所當地要下載並安裝 Java。
上到 Java 下載頁面,很高興地我可以下載到 Linux 版本的 Java,而且還是 RPM 格式。
開心地取得網址,在 Linux 用 Curl 下了指令。看了結果,大小只有 893 Bytes,直覺上有問題。
多下了一下個參數,大小已經變成了 61.4M
但是,這檔案名稱,真的看了很雞掰,理論上/預想上,儲存的檔名,應該要是「jre-8u181-linux-x64.rpm」,雖然我改一下檔名,一樣可以安裝,但是……不夠完美!
這次改上 Oracle 網站找相關資源,找到了感覺更正確的下載頁面。不過,這裡分的版本更細了!簡單說明一下:
- JDK:如果要開發 Java 相關的程序,就要下載 JDK 這個版本
- JRE:Java 執行環境,如果只是單純執行 Java 相關程序,直接下載安裝 JRE 版本就可以了
- Server JRE:它介於 JDK 和 JRE 兩個版本之間。它可以讓我們執行 Java 相關的程序,同時包含 JVM 管理工具以及必要元件
因為我只要很單純有一個可以執行 Java 的環境,所以我只要下載 JRE 的版本即可。按下同意後,可以看到網址。
取得了下載網址,開始準備下載,不過檔案大小怎麼會 0?!直覺又不對了!
再多加一個參數,這次看起來好像正常了,可是檔案大小還是太小了,畢竟官網已經告訴我實際檔案大小了。
為了安全起見,用 vi 看一下下載後的檔案內容。「Unauthorized Reauest」,看來我少給了什麼東西給網站,所以被禁止下載了。
再改用瀏覽器模擬一下真實看到的情況,根據過往經,看來和 Cookie 比較有直接的關係。
多開了瀏覽器的 Developer Tools,觀察一下流程,沒用到 AJAX 的東西,那就可以判定都是在單一網頁裡以 JS 做相關控制。而一切的起始點,就在我點下接受授權條款開始。開始翻閱網頁有用到 JS,嗯……似乎找到一點點可用的東西。果然在按下接受授權條款時,同時設定了一個 Cookie。
試著在下載檔案,同時送出 Cookie 看看結果如何。中了!果然多送一個 Cookie 出去,就可以正常下載檔案了。
結論就是,如果一定要像我這麼地堅持,可以下載到檔案,檔名又想延用原始檔名,可以用以下的 command
curl -OL -b "oraclelicense=accept-securebackup-cookie" 下載網址