Pull to refresh

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

Reading time2 min
Views9.8K

Привет!


Недавно перешел на более скоростной тарифный план интернета. Как обычно запустил систему, началось обновление с репозиториев. Только вот прироста в скорости было не заметно.

Случайно наткнувшись на запись в иностранном бложеке увидел статейку с применением вместо стандратных средств скачивания, утилиту 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

image
Tags:
Hubs:
+29
Comments35

Articles