Curl
可以使用 curl 或 wget 自動下載 URL 嗎?
我通常使用 SlackBuilds 為我的 Slackware 建構軟體包。我使用 wget 下載原始碼,並使用變數。
有了這樣的連結,版本更改時沒問題,而不是16.0.1,我放了17.0.1並自動下載,然後我建構……等等。
VERSION=16.0.1 https://download.java.net/java/GA/jdk${VERSION}/GPL/openjdk-${VERSION}_linux-x64_bin.tar.gz
問題是當在 url 中出現一些隨機數時,每個版本都會改變!在這個例子中是 7147401fd7354114ac51ef3e1328291f 和 9
VERSION=16.0.1 https://download.java.net/java/GA/jdk${VERSION}/7147401fd7354114ac51ef3e1328291f/9/GPL/openjdk-${VERSION}_linux-x64_bin.tar.gz
我可以使用變數替換,但是有點糟糕,有人知道在更改時獲取新的“隨機”數字的更優雅的方法嗎?使用 wget 或 curl。
您可以使用 2
wget
秒:
wget
來自網站的 HTML 頁面,其中包含可供下載的文件列表。然後提取每個href=...
.- 過濾那些
href
與您正在尋找的模式匹配的模式。這可能是這樣的:https://download.java.net/java/GA/jdk(*)/*/[0-9]/GPL/openjdk-(*)_linux-x64_bin.tar.gz
- 使用擷取組(例如
([0-9]+\.[0-9]+)
:)從每個 URL 中提取版本- 選擇您要下載的版本。這可能是最高版本,也可能是與您的變數匹配的版本
${VERSION}
wget
那個網址
uscan
這與debian 使用 的工具非常相似。uscan
將使用一個名為的文件debian/watch
來完成我上面提到的操作,除了它通常會辨識軟體包的最新版本(並通知開發人員他們的軟體包有可用更新),或者立即下載它以便開發人員可以導入它進入debian。
uscan
不僅如此,還包括重命名下載的存檔以匹配在 debian 中出現的包名稱。這取決於現有的其他一些鄰近文件,因此uscan
可能無法為您開箱即用。它至少表明下載索引、解析href、選擇最佳索引以及wget
-ing 的設計效果很好。uscan
是一個不太複雜的 perl 腳本(約 4000 sloc,支持您可以清除的大量內容),因此您可以根據需要對其進行調整。