GNU Projectパッケージの最新バージョンを取得するワンライナーコマンド
$ pac=screen && curl "http://ftp.gnu.org/gnu/$pac/?C=M;O=A" 2>/dev/null|grep $pac|grep ".tar.gz<"|grep "$1"|grep -v "\-doc\-"|grep -v latest|tail -n1|sed 's/<[^>]*>/ /g'|awk -v pac=$pac '{sub(pac"-", "", $1)}{sub(".tar.gz", "", $1)}{print pac " " $1 " updated at: " $2 " " $3}'
screen 4.5.1 updated at: 2017-02-25 10:51
$ pac=bash && curl "http://ftp.gnu.org/gnu/$pac/?C=M;O=A" 2>/dev/null|grep $pac|grep ".tar.gz<"|grep "$1"|grep -v "\-doc\-"|grep -v latest|tail -n1|sed 's/<[^>]*>/ /g'|awk -v pac=$pac '{sub(pac"-", "", $1)}{sub(".tar.gz", "", $1)}{print pac " " $1 " updated at: " $2 " " $3}'
bash 4.4 updated at: 2016-09-15 10:47
$ pac=autoconf && curl "http://ftp.gnu.org/gnu/$pac/?C=M;O=A" 2>/dev/null|grep $pac|grep ".tar.gz<"|grep "$1"|grep -v "\-doc\-"|grep -v latest|tail -n1|sed 's/<[^>]*>/ /g'|awk -v pac=$pac '{sub(pac"-", "", $1)}{sub(".tar.gz", "", $1)}{print pac " " $1 " updated at: " $2 " " $3}'
autoconf 2.69 updated at: 2012-04-24 23:17
こんな感じで最初のpac=
の所でパッケージ名を指定すると
そのパッケージの最新バージョンとアップデートの日時を取ってこれます。
シェルスクリプト版
まあワンライナーと言い切るにはちょっと長いので、真面目にスクリプトにするとこんなことをやっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
これで上のと同様に
$ get_latest_gnu screen
screen 4.5.1 updated at: 2017-02-25 10:51
みたいな感じで最新バージョンの情報が取ってこれます。
各パッケージの配布ページにtar.gz
ファイルがバージョン名付きであって、
その更新日時を見て一番新しいものを取ってきているだけです。
readline
readlineに関してはBashと共に開発が進められていて 配布ディレクトリもbashと同じになっています。
なので、
$ pac=readline && curl "http://ftp.gnu.org/gnu/bash/?C=M;O=A" 2>/dev/null|grep $pac|grep ".tar.gz<"|grep "$1"|grep -v "\-doc\-"|grep -v latest|tail -n1|sed 's/<[^>]*>/ /g'|awk -v pac=$pac '{sub(pac"-", "", $1)}{sub(".tar.gz", "", $1)}{print pac " " $1 " updated at: " $2 " " $3}'
readline 7.0-rc2 updated at: 2016-08-22 11:27
みたいな感じで最初のURL指定の所で$pac
をbash
に書き換えて上げる必要があります。
他にもあるかもしれませんが、まあ大体こんな感じで。
まとめ
多分、探せばGNUパッケージの最新バージョン一覧とか、 簡単に指定のパッケージのバージョンを引き出せるページとかありそうなもんですが、 少なくとも公式には無さそうだったのでさくっとやるとこんな感じでやってみました。
Sponsored Links