@@ -73,7 +73,7 @@ sk-apt-distupgrade-manual(){
7373
7474sk-apt-support-eol (){
7575 sk_help " Usage: $FUNCNAME . Migrate an EOL Ubuntu server to the old-releases apt repo. This should be a last resort as we should be upgrading them. Use when OS and code dependencies exist that block an upgrade." " $@ " && return
76- sudo perl -pi -e ' s/us-east-1 \.ec2\.archive\.ubuntu\.com/old-releases\.ubuntu\.com/g' /etc/apt/sources.list
76+ sudo perl -pi -e ' s/us-east-\d+ \.ec2\.archive\.ubuntu\.com/old-releases\.ubuntu\.com/g' /etc/apt/sources.list
7777 sudo perl -pi -e ' s/gb\.archive\.ubuntu\.com/old-releases\.ubuntu\.com/g' /etc/apt/sources.list
7878 sudo perl -pi -e ' s/security\.ubuntu\.com/old-releases\.ubuntu\.com/g' /etc/apt/sources.list
7979 sudo perl -pi -e ' s/deb-src.*$//g' /etc/apt/sources.list
@@ -94,17 +94,74 @@ sk-apt-add-custom-source(){
9494 sudo bash -c " echo $@ > $source_filename "
9595 fi
9696}
97+ # ###################################################
98+
99+ _builder_setup (){
100+ if [[ ! -d " $HOME /build" ]]; then
101+ mkdir -p " $HOME /build/var/lib/dpkg"
102+ touch " $HOME /build/var/lib/dpkg/status"
103+ mkdir -p " $HOME /build/var/lib/apt"
104+ mkdir -p " $HOME /build/var/cache/apt"
105+ fi
106+ export BUILDER_WORKDIR=" $HOME /build"
107+ }
108+
109+ sk-apt-builder-distro-config (){
110+ local distribution=${1:- $DISTRIB_CODENAME }
111+ _builder_setup
112+ echo "
113+ Dir::State " $BUILDER_WORKDIR /var/lib/apt" ;
114+ Dir::State::status " $BUILDER_WORKDIR /var/lib/dpkg/status" ;
115+ Dir::Etc::SourceList " $BUILDER_WORKDIR /$distribution .list" ;
116+ Dir::Cache " $BUILDER_WORKDIR /var/cache/apt" ;
117+ Dir::Etc::sourceparts " -" ;
118+ APT::Get::List-Cleanup " 0" ;
119+ pkgCacheGen::Essential " none" ;
120+ " > $BUILDER_WORKDIR /$distribution .config
121+ }
122+
123+ sk-apt-builder-source-package (){
124+ local package=${1:- wibble}
125+ local distribution=${2:- $DISTRIB_CODENAME }
126+ sk-apt-builder-distro-source $distribution
127+ sk-apt-builder-distro-config $distribution
128+ apt-get update -c $BUILDER_WORKDIR /$distribution .config
129+ apt-get source $package -c $BUILDER_WORKDIR /$distribution .config
130+ }
131+
132+ sk-apt-builder-distro-source (){
133+ _builder_setup
134+ local distribution=${1:- $DISTRIB_CODENAME }
135+ sk-apt-add-distro-source $distribution /$HOME /build/$distribution .list
136+ }
137+
138+ # #########################################################
139+
140+ sk-apt-distro-is-eol (){
141+ local distribution=${1:- $DISTRIB_CODENAME }
142+ local tmp_dir=$( sk-tmp-userdir)
143+ curl -s https://changelogs.ubuntu.com/meta-release >> $tmp_dir /meta-release
144+ if grep -q $distribution $tmp_dir /meta-release | grep -q old-releases; then
145+ return 0
146+ else
147+ return 1
148+ fi
149+ }
97150
98151sk-apt-add-distro-source (){
99152 sk_help_noarg " $FUNCNAME <distro> <listname>. Add /etc/apt/sources.list.d/<listname>.list" " $@ " && return
100- local distribution=$1
153+ local distribution=${1 :- $DISTRIB_CODENAME }
101154 local listfile=${2:-/ etc/ apt/ sources.list.d/ $distribution }
102155
103156 # sources.list format: deb uri distribution [component1] [component2] [...]
104157 [ ! -d /etc/apt/sources.list.d ] && sudo mkdir /etc/apt/sources.list.d
105158
106159 # start with a new file
107- sudo rm -f $listfile
160+ if grep -q etc <<< " $(echo $listfile)" ; then
161+ sudo rm -f $listfile
162+ else
163+ rm -f $listfile
164+ fi
108165
109166 lsbdistid=$( lsb_release -i | awk ' {print $3}' )
110167 case $lsbdistid in
@@ -115,15 +172,22 @@ sk-apt-add-distro-source(){
115172
116173 local distribution_list=" $distribution ${distribution} -updates ${distribution} -backports"
117174 echo $distribution_list
118- case $distribution in
119- lucid) local uri_list=" http://old-releases.ubuntu.com/ubuntu/" ;;
120- * ) local uri_list=" http://gb.archive.ubuntu.com/ubuntu/ http://security.ubuntu.com/ubuntu" ;;
121- esac
175+
176+ if sk-apt-distro-is-eol ; then
177+ local uri_list=" http://old-releases.ubuntu.com/ubuntu/"
178+ else
179+ local uri_list=" http://gb.archive.ubuntu.com/ubuntu/ http://security.ubuntu.com/ubuntu"
180+ fi
122181
123182 for uri in $uri_list ; do
124183 grep -q security <<< $( echo " $uri " ) && distribution_list=" ${distribution} -security"
125184 for distribution_name in $distribution_list ; do
126- sudo bash -c " echo 'deb-src $uri $distribution_name $components ' >> $listfile "
185+ if grep -q etc <<< " $(echo $listfile)" ; then
186+ sudo bash -c " echo 'deb-src $uri $distribution_name $components ' >> $listfile "
187+ else
188+ bash -c " echo 'deb-src $uri $distribution_name $components ' >> $listfile "
189+ fi
190+
127191 done
128192 done
129193
0 commit comments