суббота, 17 сентября 2011 г.

Оптимизация apt-get. Повышаем скорость скачивания пакетов с помощью axel

Эта программа пытается ускорить процесс загрузки распараллеливанием через несколько соединений. Также для загрузки можно использовать несколько зеркал. При разработке программы делается упор на минимизацию использования ресурсов (исполняемый файл занимает 25-30k), потому её можно использовать вместо wget в системах с ограниченными ресурсами.
То-есть, скачивает она быстрее. Почему бы не заменить ею стандартное средство скачивания в apt-get?
Скачиваем axel: 

sudo apt-get install axel

Для теста можно скачать что-нибудь с помощью данной утилиты. Комманда для скачивания такая же как и в wget

axel site.com/file.bin 

Далее создаем файл apt-fast со следующим содержимым:

#!/bin/sh

#apt-fast by Matt Parnell www.mattparnell.com , this thing is FOSS

#please feel free to suggest improvements to admin@mattparnell.com
# Use this just like apt-get for faster package downloading. Make sure to have axel installed

#If the first user entered variable string contains apt-get, and the second string entered is either install or dist-upgrade
if echo "$1" | grep -q "[upgrade]" || echo "$2" | grep -q "[install]" || echo "$2" | grep -q "[dist-upgrade]"; then
echo "Working...";

#Go into the directory apt-get normally puts downloaded packages
cd /var/cache/apt/archives/;

#Have apt-get print the information, including the URI's to the packages
apt-get -y --print-uris $1 $2 $3 $4 > debs.list;

#Strip out the URI's, and download the packages with Axel for speediness
egrep -o -e "(ht|f)tp://[^\']+" debs.list | xargs -l1 axel -a;

#Perform the user's reqested action via apt-get
apt-get -y $1 $2 $3 $4;

echo "Done! Make sure and check to see that the packages all were installed properly. If a package is erred, run sudo apt-get autoclean and try installing it again without the use of this script.";

elif echo "$1" | grep -q "[*]"; then
apt-get $1;
else
echo "Sorry, but you appear to be entering invalid options. You must use apt-get and one of apt-get's options in order to use this script.";
fi 


Даем ему права на запуск:

chmod +x apt-fast 

И копируем в /usr/bin для удобства:

sudo cp apt-fast /usr/bin 

Теперь чтобы обновиться, пишем:

sudo apt-fast upgrade 

Чтобы скачать и проинсталлить пакет, пишем:

sudo apt-fast install имя_пакета 

Прирост в скорости действительно приличный. Особенно чувствуется на машинах с быстрым подключением к сети, когда ширины канала репозитория не хватает для максимальной скорости загрузки.

по материалам webupd8.org

Комментариев нет:

Отправить комментарий