No começo, você desejará atualizar as listas de pacotes. Você poderia simplesmente usar apt-get update
, mas desde que você só quer as fontes oficiais, isso levaria desnecessariamente longo. Para acelerar um pouco as coisas, use o seguinte:
apt-get update -o Dir::Etc::sourcelist='sources.list' \
-o Dir::Etc::sourceparts='-' -o APT::Get::List-Cleanup='0'
Agora que suas listas de pacotes estão atualizadas, você precisa obter as URLs dos pacotes individuais. O código a seguir é emprestado do apt-fast , você pode precisar ajustá-lo às suas necessidades.
DLLIST="/tmp/packages.list"
# Add header to overwrite file:
echo "# package download list: $(date)" > "$DLLIST"
# We use --print-uris to get the uris of the packages instead of downloading them
for urimd5 in $(apt-get -y --print-uris upgrade |
egrep "^'(http(s|)|(s|)ftp)://[^']+'.+ MD5Sum:\S+\s*$" |
sed "s/^'\(.\+\)'.*MD5Sum:\(\S\+\)\s*$/::MD5Sum:/"); do
uri="${urimd5%::MD5Sum:*}"
checksum="${urimd5#*::MD5Sum:}"
# Here we are checking if the package comes from the official sources,
# only then it's written to the list:
if [[ $uri == *ubuntu.com* ]]; then
echo "$(get_mirrors "$uri")" >> "$DLLIST"
echo " checksum=md5=$checksum" >> "$DLLIST"
# Here you can specify where the files go.
# Change path to the location where you want the packages to be downloaded.
echo " out=/path/$(basename $uri)" >> "$DLLIST"
fi
done
Agora você tem uma lista de URLs para os arquivos de pacote que deseja baixar em /tmp/packages.list
. Para baixar os pacotes, usamos aria2c
, que você pode instalar dos repositórios padrão executando sudo apt-get install aria2
. Aqui vamos nós:
aria2c -i $DLLIST
Basta colocar o texto acima em seu script. Ele terá que ser executado como root, é claro.