[Comm] Синхронизация и экономия трафика
AShen
ashen на nsrz.ru
Вт Апр 7 11:35:32 MSD 2009
alisher пишет:
> Здравствуйте. Получил я локальную копию пятого бранча, спасибо
> Назарову Денису. И хочу теперь синхронизировать, но не целиком, потому
> как трафик ограниченный и инет только на работе, а обновлять домашний.
> Так вот, можно ли получить от apt список rpm, которые установлены на
> моем компьютере? А потом уже только эти пакеты обновлять.
1) создать свой локальный репозитарий. как сделать сказано здесь:
http://freesource.info/wiki/DmitriyKruglikov/Repository?v=f2g&search=repo
2) а вот для того, что б подтянуть из инета пакеты, которые установленны
в системе, но отсуствуют в кэше apt'а, я мспользую такой скрипт:
cat autodownloadcache
#!/bin/sh
#Очищаем кэш от устаревших файлов пакетов
#apt-get autoclean
#обновляем БД по пакетам
#apt-get update
#получаем список установленных в систему пакетов
rm -f /tmp/installrpm
rpm -qa --qf='%{NAME}\n' | sort > /tmp/installrpm
#получаем список имеющих в кэше файлов пакетов в виде "только имена пакетов"
rm -f /tmp/presentfiles
cd /var/cache/apt/archives
ls * | sort > /tmp/presentfiles
rm -f /tmp/presentrpm
cat /tmp/presentfiles | while read FILEPKG; do
rpm -qp $FILEPKG --queryformat "%{NAME}\n" >> /tmp/presentrpm
done
comm -23 /tmp/installrpm /tmp/presentrpm > /tmp/dwrpm
#докачиваем отсутствующие в кэше файлы установленных пакетов
cat /tmp/dwrpm | while read PKG; do
apt-get reinstall -d -y $PKG
done
#EOF
Да скрипт отрабатывает достаточно долго. Из-за вызова apt'а для каждого
пакета отдельно. Если нашему apt'у передать на вход зараз весь список
пакетов, то ему сносит голову: слишком длинная строка входных параметров
(примерно так, в вольном изложеии). Вот по сему надёжней передавать
apt'у отдельно имя каждого пакета. Обчыно данный скрипт я запускаю на
ночь, а придя утром, получаю в кэше apt'а наличие всех файлов
установленных у меня пакетов. Ну а дальше 1).
Подробная информация о списке рассылки community