Локальный репозиторий_ настройка файла /etc/apt/mirror.list

Автор krserv, 06 ноября 2012, 17:23:17

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

krserv

подскажите пжс как в mirror.list включить на выполнение скрипт /mnt/repo/debian/var/clean.sh  чтобы после выполнения происходила очистка
В примере показано как это сделать в cron, a если запускать вручную, но вначале должна отработать одна команда полностью, произвести синхронизацию локального репозитория, и только потом уже очистка.

crontab -e

05 01 * * *     apt-mirror >> /var/log/apt-mirror.log
05 03 * * *     /mnt/repo/debian/var/clean.sh >> /var/log/apt-mirror.log

vladimir_ar

Цитата: krserv от 06 ноября 2012, 17:23:17но вначале должна отработать одна команда полностью, произвести синхронизацию локального репозитория, и только потом уже очистка.
Ну так логично же - если не было обновления репозитория, то что чистить то (устаревших версий еще нет). А подробнее можно в гугле посмотреть, или я могу позже написать, как сделано у меня, но сейчас я не дома.
Debian Testing, kernel 3.16-2-amd64, OpenBox
AMD A8-3750 / 16Gb RAM / ATI HD6550D (onboard) / Sound ASUS Xonar - DS
_______________________________
Debian Testing, kernel 3.14-2-amd64, OpenBox
HP-655 AMD E1 / 8Gb RAM / ATI HD7310M

vladimir_ar

Так apt-mirror делает очистку сразу после синхронизации.
Debian Testing, kernel 3.16-2-amd64, OpenBox
AMD A8-3750 / 16Gb RAM / ATI HD6550D (onboard) / Sound ASUS Xonar - DS
_______________________________
Debian Testing, kernel 3.14-2-amd64, OpenBox
HP-655 AMD E1 / 8Gb RAM / ATI HD7310M

yura_n

Если я правильно понял, то ваша проблема решается очень просто. Пишете скрипт:

#!/bin/bash
apt-mirror >> /var/log/apt-mirror.log
/mnt/repo/debian/var/clean.sh >> /var/log/apt-mirror.log

Делаете исполняемым, добавляете в cron или anacron. Получаете нужную последовательность.

yura_n

Цитата: krserv от 06 ноября 2012, 21:35:01а почему тогда   в шаблоне по которому я делаю, в сron - между первой и второй командой выставлено разница во времени 2ч?
Ну так и добавьте строку вида:
sleep 7200
между командами в скрипте. Будет вам два часа. А почему так сделано не знаю.

vladimir_ar

mirror.list
Открыть содержимое (спойлер)
############# config ##################
#
set base_path    /media/DATA/LINUX-ISO/REPOSITORY/WHEEZY
#set base_path    /media/HOME-USB-1/vladimir-usb-1/REPOSITORY/WHEEZY
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh
set defaultarch i386
set postmirror_script $var_path/postmirror.sh
set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############

###### Debian Main Repos
deb http://ftp.dk.debian.org/debian/ wheezy main contrib non-free
deb-amd64 http://ftp.dk.debian.org/debian/ wheezy main contrib non-free
[свернуть]
Зачем в кроне две команды, да еще и с разницей во времени? Не, почему нужна разница, понятно, но зачем?
Обращыем внимание на строку
set cleanscript $var_path/clean.sh
Debian Testing, kernel 3.16-2-amd64, OpenBox
AMD A8-3750 / 16Gb RAM / ATI HD6550D (onboard) / Sound ASUS Xonar - DS
_______________________________
Debian Testing, kernel 3.14-2-amd64, OpenBox
HP-655 AMD E1 / 8Gb RAM / ATI HD7310M

vladimir_ar

Я не вижу здесь два разных процесса (может, ошибаюсь, но по терминалу видно, что очистка под управлением apt-mirror):
Открыть содержимое (спойлер)

vladimir-7@GNU-HOME:~$ sudo apt-mirror
[sudo] password for vladimir-7:
Downloading 77 index files using 20 threads...
Begin time: Tue Nov  6 22:13:37 2012
[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
End time: Tue Nov  6 22:14:07 2012

Proceed indexes: [SSSPPPP]

5.3 GiB will be downloaded into archive.
Downloading 1312 archive files using 20 threads...
Begin time: Tue Nov  6 22:15:16 2012
[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
End time: Tue Nov  6 22:35:47 2012

10.9 GiB in 2658 files and 10 directories can be freed.
Run /media/DATA/LINUX-ISO/REPOSITORY/WHEEZY/var/clean.sh for this purpose.

vladimir-7@GNU-HOME:~$
[свернуть]
Debian Testing, kernel 3.16-2-amd64, OpenBox
AMD A8-3750 / 16Gb RAM / ATI HD6550D (onboard) / Sound ASUS Xonar - DS
_______________________________
Debian Testing, kernel 3.14-2-amd64, OpenBox
HP-655 AMD E1 / 8Gb RAM / ATI HD7310M

yura_n

#7
Цитата: krserv от 07 ноября 2012, 00:08:07а другого варианта не будет, чтобы очистка началась после окончания синхронизации по какому-нибудь параметру, тригеру, переменной и т.д, которая бы показала, службе, что время запуска второй команды для очистки?
Попробуйте так:

#!/bin/bash
apt-mirror &
PID=$!
a=0
until [ "$a" -eq 1 ]; do
sleep 60
STRING_PID=`ps -p $PID | grep $PID`
if [ -z "$STRING_PID" ]
then
    a=1
fi
done
/mnt/repo/debian/var/clean.sh

Смысл скрипта в том, что сначала определяется PID фонового процесса (apt-mirror), затем цикл ждет завершения этого процесса, каждые 60 секунд проверяя его наличие. После завершения процесса (apt-mirror) запускается очистка.
Насколько это будет работать в реальных условиях - не знаю, не проверял. Для меня это что-то вроде кроссворда.

censor


set postmirror_script $var_path/postmirror.sh
set run_postmirror 1

в файл postmirror.sh прописываем все команды которые должны запускаться после обновления архива, в том числе и очистка архива от старых файлов.
т.е. тупо для очистки архива postmirror.sh должен содержать одну строку

/var/spool/apt-mirror/var/clean.sh