[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