vzvu3k6k/download-redmine-releases

https://github.com/vzvu3k6k/download-redmine-releases

https://redmine.org/releases/からtarballをダウンロードする簡単なbashスクリプトを書いた。tar.gzファイルだけでも全部ダウンロードすると400MBほどある。

ソースコードを取得するだけならhttps://github.com/redmine/redmineを使ったほうが楽だし早そうだが、今回は公式にリリースされているものを確認したかったのでhttps://redmine.org/releases/を利用した。

wgetの--timestamping--no-clobber

スクリプトを一度実行してすべてのファイルをダウンロードしたら、次の実行では新たに追加されたファイルだけを取得したい。wgetでは次のようなオプションが使える。

バージョン番号の打たれたリリース物があとから書き換えられることはなさそうなので、今回は--no-clobberを使うことにした。

一部では--no-clobberは同名のファイルが存在していても保存をスキップするだけでリクエストは送るよ、いや送らないぞといった混乱があるが、手元のwget 1.20.3ではwget --no-clobber localhost:4567/01.txtのようなシンプルなコマンドではリクエストは送信されなかった。

どうやらバージョンごとに動作が違うらしい。少なくとも2008年2月ごろにリクエストを送信しないように修正された記録がある。

きちんとchangelogが残されていて助かる。

wgetの--accept, --reject

ダウンロードするファイルとしないファイルを指定できる。引数に含まれている文字によって挙動が変わる。

値によっていい感じに暗黙的に挙動を切り替える仕様は、想定が甘いと「いい感じ」にならなくてユーザーの混乱を招くことがあるが、これは比較的うまくいっているケースのように思える。(でも次に使うときにはルール忘れてるかも)

wgetでApacheのindexページのソートリンクを無視する

チェックサムファイルの検証

最近のリリースではSHA256のチェックサムファイルが用意されているが、古いリリースにはMD5のチェックサムファイルしかない。SHA256のほうが衝突耐性が高いらしいので、そちらを優先して使うようにしている。

no checksum file found

チェックサムファイルが見つからなかったときのエラーメッセージ。最初は何も考えずにchecksum file is not foundと書いてたんだけど、md5sumのエラーメッセージがよさそうだったので真似した。情報量のある単語が先になっているのがいい。