#!/bin/zsh rpmopts=(--replacefiles) if [[ $1 == --replacepkgs ]] { rpmopts+=($1) shift } arch=i586 flavor=default update==false mydir=$(pwd) if [[ $0 == *update* || $0 == *112* ]] { url=http://download.opensuse.org/distribution/11.2/repo/oss/suse/$arch/ url=http://download.opensuse.org/update/11.2/rpm/$arch/ sarch=noarch rpmopts+=(--nodeps) update==true } \ else { url=http://download.opensuse.org/repositories/Kernel://HEAD/openSUSE_11.2/$arch/ sarch=noarch rpmopts+=(--nodeps) } if [[ -z $sarch ]] { sarch=$arch } if [[ -z $surl ]] { surl=${url%$arch/}$sarch/ } if [[ -n $GET_KERNEL_PIN_FLAVOR ]] { flavor=$GET_KERNEL_PIN_FLAVOR } versions=($(wget -nv $url -O-|perl -nE'say if (undef,$_) = m{}')) if [[ ! $#versions -gt 0 ]] { echo Could not get kernel version, aborting... exit 1 } tempdir=$(mktemp -d) if [[ $tempdir != /* ]] { echo No valid tempdir found, got $tempdir, aborting... exit 2 } trap ' trap - INT cd $tempdir rm *(L0) cd rmdir $tempdir return $((128+$1)) ' INT cd $tempdir touch $versions ver=$(ls -rv|head -1) if [[ -n $GET_KERNEL_PIN_VER ]] { ver=$GET_KERNEL_PIN_VER } rm *(L0) cd rmdir $tempdir trap - INT echo echo \*\*\* CURRENT VERSION: $ver \*\*\* echo dlc=(wget -c) dlc=(aria2c -Z) sver=${ver%.*} dest=$HOME/Downloads/kernel/$sver mkdir -p $dest/$flavor cd $dest ( mv */* . ) ( setopt nullglob; cleanml=(*.metalink *.metalink.<->) if [[ $#cleanml -gt 0 ]] { rm $cleanml }; ) $dlc \ ${url}kernel-syms-${ver}.${arch}.rpm \ ${url}kernel-${flavor}-${ver}.${arch}.rpm \ ${url}kernel-${flavor}-base-${ver}.${arch}.rpm \ ${url}kernel-${flavor}-extra-${ver}.${arch}.rpm \ ${url}kernel-${flavor}-devel-${ver}.${arch}.rpm \ ${surl}kernel-source-${ver}.${sarch}.rpm for flavor_d (*(/)) { ( mv *-${flavor_d}-* $flavor_d ) } echo TODO: sudo rpm -ivh $rpmopts *.rpm $flavor/*.rpm echo echo -n Install\? \[yn\] if { read -q } { sudo rpm -ivh $rpmopts *.rpm $flavor/*.rpm if { $update } { echo You should reinstall the newer kernel now... cd $mydir sleep 1 echo try: $(echo ${0/update}|tr -s _-) --replacepkgs } } \ else { echo To install later... echo echo cd \~${dest#$HOME} echo sudo rpm -ivh $rpmopts \*.rpm $flavor/\*.rpm echo if { $update } { echo You should also reinstall the newer kernel with echo $(echo ${0/update}|tr -s _-) --replacepkgs } } cd $mydir