質問
私は例えばのためのミラーから入手与えられたパッケージのRPMの最新バージョンを見つけるためのスクリプトを書きたい:<のhref = "http://mirror.centos.org/centos/5/updates/x86_64/ RPMS /」のrel = "nofollowをさnoreferrer"> http://mirror.centos.org/centos/5/updates/x86_64/RPMS/ の
スクリプトは、Linuxの味の大多数(例えばCentOSの、RedHatのは、Ubuntu)上で実行することができます。だから、yumをベースとしたソリューションは、オプションではありません。これを行い、既存のスクリプトはありますか?それとも誰かが私にこのについては移動する方法についての一般的なアイデアを与えることができますか?
解決
Thxを。これを試してください:
ARCH="i386"
PKG="pidgin-devel"
URL=http://mirror.centos.org/centos/5/updates/x86_64/RPMS
DL=`wget -O- -q $URL | sed -n 's/.*rpm.>\('$PKG'.*'$ARCH'.rpm\).*/\1/p' | sort | tail -1`
wget $URL/$DL
私は、そうでない場合は、コードが読めません、ここに私のコメントを配置します。
これを試してください:
ARCH="i386"
PKG="pidgin-devel"
URL=http://mirror.centos.org/centos/5/updates/x86_64/RPMS
DL=`wget -O- -q $URL | sed -n 's/.*rpm.>\('$PKG'.*'$ARCH'.rpm\).*<td align="right">\(.*\)-\(.*\)-\(.*\) \(..\):\(..\) <\/td><td.*/\4 \3 \2 \5 \6 \1/p' | sort -k1n -k2M -k3n -k4n -k5n | cut -d ' ' -f 6 | tail -1`
wget $URL/$DL
何それがないことである。
wgetの - インデックスファイルを取得
SED - いくつかの部分を切り取り、別の順序で一緒にそれを置きます。
2009 Oct 27 01 14 pidgin-devel-2.6.2-2.el5.i386.rpm
2009 Oct 30 10 49 pidgin-devel-2.6.3-2.el5.i386.rpm
ソート - 順序の列のn月の数値とMのためにとどまり
カット - 提出された6
を切り取ります
テール - ショー最後のエントリのみ
これに伴う問題は、可能性があります。サイトの出力が変化した場合、スクリプトは失敗します。スクリプトが失敗する可能性の点の多くが常にあります。
他のヒント
wgetコマンドを使用してgawkは
#!/bin/bash
pkg="kernel-headers"
wget -O- -q http://mirror.centos.org/centos/5/updates/x86_64/RPMS | awk -vpkg="$pkg" 'BEGIN{
RS="\n";FS="</a>"
z=split("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",D,"|")
for(i=1;i<=z;i++){
date[D[i]]=sprintf("%02d",i)
}
temp=0
}
$1~pkg{
p=$1
t=$2
gsub(/.*href=\042/,"",p)
gsub(/\042>.*/,"",p)
m=split(t,timestamp," ")
n=split(timestamp[1],d,"-")
q=split(timestamp[2],hm,":")
datetime=d[3]date[d[2]]d[1]hm[1]hm[2]
if ( datetime >= temp ){
temp=datetime
filepkg = p
}
}
END{
print "Latest package: "filepkg", date: ",temp
}'
上記の例のラン
linux$ ./findlatest.sh
Latest package: kernel-headers-2.6.18-164.6.1.el5.x86_64.rpm, date: 200911041457
(lynx
が必要)、これを試してください:
lynx -dump -listonly -nonumbers http://mirror.centos.org/centos/5/updates/x86_64/RPMS/ |
grep -E '^.*xen-libs.*i386.rpm$' |
sort --version-sort |
tail -n 1
あなたのsort
は--version-sort
を持っていない場合は、は、その後、あなたは、ファイル名のうちのバージョンを解析するために持っているか、定期的な並べ替えが正しいことを行うことを願っています。
あなたはwget
またはcurl
または/dev/tcp/HOST/PORT
でリダイレクトを使用していてもbashスクリプトと似た何かを行うことができるかもしれません。これらの問題は、あなたがしなければならないということである<のhref =「https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454」 >パースHTML のます。