Оптимизация apt-get.

10.12.2009 от admin 0

Бывает, что при достаточно быстром интернет канале загрузка обновлений с репозиториев не использует весь канал, но есть решение, которые должно ускорить процесс скачки и, следовательно обновления.

Утилита axel.

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

Устанавливаем:

sudo apt-get install axel

Комманда для скачивания(вбейте свою ссылку для тестирования):

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 имя_пакета

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