* [Comm] Кэш apt
@ 2003-05-24 7:34 Konstantin Vinokurov
2003-05-24 8:16 ` [Comm] " ASA
2003-05-26 2:24 ` [Comm] Re: [Comm] Кэш apt Evgeny Yugov
0 siblings, 2 replies; 11+ messages in thread
From: Konstantin Vinokurov @ 2003-05-24 7:34 UTC (permalink / raw)
To: community
Здравствуйте.
Вчера пытался почистить /var/cache/apt/archives Сделал список
rpm-ок 1, 2-го дисков Юноши 2.2 и список rpm-ок в кэше. Я был
очень удивлен, узнав что имена файлов в кэше и на дисках не
совпадают. Зачем apt-get изменяет символы в именах файлов (. в _
или %3a и _ в %5f)? Как тогда удалить из кэша те файлы, которые
есть на дисках, оставив скачанные из интернета?
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Comm] Re: [Comm] Кэш apt
2003-05-24 7:34 [Comm] Кэш apt Konstantin Vinokurov
@ 2003-05-24 8:16 ` ASA
2003-05-24 13:53 ` Konstantin Vinokurov
2003-05-24 18:14 ` [Comm] S: .rpm name normalizer (was: Кэш apt) Michael Shigorin
2003-05-26 2:24 ` [Comm] Re: [Comm] Кэш apt Evgeny Yugov
1 sibling, 2 replies; 11+ messages in thread
From: ASA @ 2003-05-24 8:16 UTC (permalink / raw)
To: Konstantin Vinokurov
Hello Konstantin,
Saturday, May 24, 2003, 12:34:16 PM, you wrote:
KV> Вчера пытался почистить /var/cache/apt/archives Сделал список
KV> rpm-ок 1, 2-го дисков Юноши 2.2 и список rpm-ок в кэше. Я был
KV> очень удивлен, узнав что имена файлов в кэше и на дисках не
KV> совпадают. Зачем apt-get изменяет символы в именах файлов (. в _
KV> или %3a и _ в %5f)?
Присмотритесь внимательно. Он изменяет не каждую точку, а только
те точки, которые отделяют имя пакета от версии и версию от
архитектуры - так проще обрабатывать имена пакетов.
Соответственно, просто подчеркивания (не несущие смысла
разделения частей имени файла) тоже заменяются - чтобы "не
путались под ногами".
KV> Как тогда удалить из кэша те файлы, которые
KV> есть на дисках, оставив скачанные из интернета?┼э
Обработайте имена файлов с дисков подоходящим sed-выражением
а-ля
sed -e "s/_/%5f/" | sed -e "s/^\([^.]\+\)\.\(.\+\)\.\([^.]\+\.rpm\)$/\1_\2_\3/"
(не проверял, но если не сработает - пишите, проверю)
--
Best regards,
ASA mailto:llb@udm.ru
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Comm] Re: [Comm] Кэш apt
2003-05-24 8:16 ` [Comm] " ASA
@ 2003-05-24 13:53 ` Konstantin Vinokurov
2003-05-24 18:14 ` [Comm] S: .rpm name normalizer (was: Кэш apt) Michael Shigorin
1 sibling, 0 replies; 11+ messages in thread
From: Konstantin Vinokurov @ 2003-05-24 13:53 UTC (permalink / raw)
To: community
В сообщении от 24 Май 2003 11:16 ASA написал(a):
> Hello Konstantin,
>
> Saturday, May 24, 2003, 12:34:16 PM, you wrote:
>
> KV> Вчера пытался почистить /var/cache/apt/archives Сделал
> список KV> rpm-ок 1, 2-го дисков Юноши 2.2 и список rpm-ок в
> кэше. Я был KV> очень удивлен, узнав что имена файлов в кэше и
> на дисках не KV> совпадают. Зачем apt-get изменяет символы в
> именах файлов (. в _ KV> или %3a и _ в %5f)?
>
> Присмотритесь внимательно. Он изменяет не каждую точку, а
> только те точки, которые отделяют имя пакета от версии и
> версию от архитектуры - так проще обрабатывать имена пакетов.
> Соответственно, просто подчеркивания (не несущие смысла
> разделения частей имени файла) тоже заменяются - чтобы "не
> путались под ногами".
А обратно оно могёт?
> KV> Как тогда удалить из кэша те файлы, которые
> KV> есть на дисках, оставив скачанные из интернета?┼э
> Обработайте имена файлов с дисков подоходящим sed-выражением
> а-ля
>
> sed -e "s/_/%5f/" | sed -e
> "s/^\([^.]\+\)\.\(.\+\)\.\([^.]\+\.rpm\)$/\1_\2_\3/"
>
> (не проверял, но если не сработает - пишите, проверю)
Не прошло. Я придумал следующее:
#! /bin/sh
cat APT | sed s/%5f// | sed s/%3a// | tr -d '_.-' | tr -d
'[:digit:]' > APT.1
cat CD.1 | sed s/%5f// | sed s/%3a// | tr -d '_.-' | tr -d
'[:digit:]' > CD.1.1
comm -1 -2 APT.1 CD.1.1 > 1
И потом вручную удаляю файлы из 1.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Comm] S: .rpm name normalizer (was: Кэш apt)
2003-05-24 8:16 ` [Comm] " ASA
2003-05-24 13:53 ` Konstantin Vinokurov
@ 2003-05-24 18:14 ` Michael Shigorin
2003-05-25 16:03 ` Konstantin Vinokurov
1 sibling, 1 reply; 11+ messages in thread
From: Michael Shigorin @ 2003-05-24 18:14 UTC (permalink / raw)
To: community
On Sat, May 24, 2003 at 01:16:07PM +0500, ASA wrote:
> KV> Как тогда удалить из кэша те файлы, которые
> KV> есть на дисках, оставив скачанные из интернета?┼э
> Обработайте имена файлов с дисков подоходящим sed-выражением
Долго будет делать regex, который сделает то же, что и
for i in *.rpm; do
j=$(rpm -qp --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n')
[ "$i" != "$j" ] && mv "$i" "$j"
done
Этой штуке хоть как их пообзывай -- были бы по формату rpm.
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Comm] S: .rpm name normalizer (was: Кэш apt)
2003-05-24 18:14 ` [Comm] S: .rpm name normalizer (was: Кэш apt) Michael Shigorin
@ 2003-05-25 16:03 ` Konstantin Vinokurov
2003-05-25 16:55 ` [Comm] Re[2]: " ASA
0 siblings, 1 reply; 11+ messages in thread
From: Konstantin Vinokurov @ 2003-05-25 16:03 UTC (permalink / raw)
To: community
В сообщении от 24 Май 2003 21:14 Michael Shigorin написал(a):
> On Sat, May 24, 2003 at 01:16:07PM +0500, ASA wrote:
> > KV> Как тогда удалить из кэша те файлы, которые
> > KV> есть на дисках, оставив скачанные из интернета?┼э
> > Обработайте имена файлов с дисков подоходящим sed-выражением
>
> Долго будет делать regex, который сделает то же, что и
>
> for i in *.rpm; do
> j=$(rpm -qp --queryformat
> '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n') [ "$i" != "$j"
> ] && mv "$i" "$j"
> done
>
> Этой штуке хоть как их пообзывай -- были бы по формату rpm.
Немного подправил, теперь все красиво удаляется :)
#! /bin/sh
CWD=$(pwd)
cd /var/cache/apt/archives
for i in *.rpm
do
j=$(rpm -qp $i --queryformat
'%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n')
echo -n $j
if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep $j) ]
then
rm $i
echo " : DELETED"
else
echo ""
fi
done
cd $CWD
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Comm] Re[2]: [Comm] S: .rpm name normalizer (was: Кэш apt)
2003-05-25 16:03 ` Konstantin Vinokurov
@ 2003-05-25 16:55 ` ASA
2003-05-27 4:47 ` Konstantin Vinokurov
0 siblings, 1 reply; 11+ messages in thread
From: ASA @ 2003-05-25 16:55 UTC (permalink / raw)
To: Konstantin Vinokurov
Hello Konstantin,
Sunday, May 25, 2003, 9:03:38 PM, you wrote:
KV> #! /bin/sh
KV> CWD=$(pwd)
убрать (см. ниже).
KV> cd /var/cache/apt/archives
KV> for i in *.rpm
KV> do
KV> j=$(rpm -qp $i --queryformat
KV> '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n')
KV> echo -n $j
KV> if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep $j) ]
if grep -qs $j /root/CD.[12]
KV> then
KV> rm $i
KV> echo " : DELETED"
KV> else
KV> echo ""
KV> fi
KV> done
KV> cd $CWD
Убрать.
У нас не вында. Понятие "текущий каталог" сугубо локально для
процесса, поэтому в конце скрипта вовсе не нужно менять или
восстанавливать текущий каталог - т.к. с завершением скрипта
(это отдельный процесс) пропадает информация и об его
переменных, текущем каталоге и проч. (домашнее задание:
помедитировать, почему не существует бинарника /bin/cd; хотя
аналоги в /bin для других встроенных императивных команд шелла
есть).
Таким образом - CDW=$(pwd) и cd $CWD вычеркиваем как ненужные.
--
Best regards,
ASA mailto:llb@udm.ru
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Comm] Re: [Comm] Кэш apt
2003-05-24 7:34 [Comm] Кэш apt Konstantin Vinokurov
2003-05-24 8:16 ` [Comm] " ASA
@ 2003-05-26 2:24 ` Evgeny Yugov
1 sibling, 0 replies; 11+ messages in thread
From: Evgeny Yugov @ 2003-05-26 2:24 UTC (permalink / raw)
To: Konstantin Vinokurov
Здравствуйте Konstantin,
Saturday, May 24, 2003, 2:34:16 PM, you wrote:
KV> Здравствуйте.
KV> Вчера пытался почистить /var/cache/apt/archives Сделал список
KV> rpm-ок 1, 2-го дисков Юноши 2.2 и список rpm-ок в кэше. Я был
KV> очень удивлен, узнав что имена файлов в кэше и на дисках не
KV> совпадают. Зачем apt-get изменяет символы в именах файлов (. в _
KV> или %3a и _ в %5f)? Как тогда удалить из кэша те файлы, которые
KV> есть на дисках, оставив скачанные из интернета?
Кэш можно чистить:
$sudo apt-get autoclean
--
With Best regards,
Evgeny Yugov,
MTS, programmer of Advanced Technologies Departament.
mailto:yugov@scs-900.ru
Origin: Основной пpичиной катастpоф летательных аппаpатов является ... гpавитация!!!
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Comm] Re[2]: [Comm] S: .rpm name normalizer (was: Кэш apt)
2003-05-25 16:55 ` [Comm] Re[2]: " ASA
@ 2003-05-27 4:47 ` Konstantin Vinokurov
2003-05-27 19:46 ` [Comm] Re[2]: " ASA
0 siblings, 1 reply; 11+ messages in thread
From: Konstantin Vinokurov @ 2003-05-27 4:47 UTC (permalink / raw)
To: community
В сообщении от 25 Май 2003 19:55 ASA написал(a):
> Hello Konstantin,
>
> Sunday, May 25, 2003, 9:03:38 PM, you wrote:
>
> KV> #! /bin/sh
>
> KV> CWD=$(pwd)
> убрать (см. ниже).
>
> KV> cd /var/cache/apt/archives
> KV> for i in *.rpm
> KV> do
> KV> j=$(rpm -qp $i --queryformat
> KV> '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n')
> KV> echo -n $j
>
> KV> if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep $j) ]
>
> if grep -qs $j /root/CD.[12]
Как вариант. Мне нравится if со скобками.
>
> KV> then
> KV> rm $i
> KV> echo " : DELETED"
> KV> else
> KV> echo ""
> KV> fi
> KV> done
>
> KV> cd $CWD
> Убрать.
> У нас не вында. Понятие "текущий каталог" сугубо локально
> для процесса, поэтому в конце скрипта вовсе не нужно
> менять или восстанавливать текущий каталог - т.к. с
> завершением скрипта (это отдельный процесс) пропадает
> информация и об его переменных, текущем каталоге и
> проч. (домашнее задание: помедитировать, почему не
> существует бинарника /bin/cd; хотя аналоги в /bin для
> других встроенных императивных команд шелла есть).
>
> Таким образом - CDW=$(pwd) и cd $CWD вычеркиваем как ненужные.
Понял, уберу.
А, действительно, почему?
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Comm] Re[2]: [Comm] Re[2]: [Comm] S: .rpm name normalizer (was: Кэш apt)
2003-05-27 4:47 ` Konstantin Vinokurov
@ 2003-05-27 19:46 ` ASA
2003-05-28 17:12 ` Konstantin Vinokurov
0 siblings, 1 reply; 11+ messages in thread
From: ASA @ 2003-05-27 19:46 UTC (permalink / raw)
To: Konstantin Vinokurov
Hello Konstantin,
Tuesday, May 27, 2003, 9:47:48 AM, you wrote:
>> KV> if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep $j) ]
>>
>> if grep -qs $j /root/CD.[12]
KV> Как вариант. Мне нравится if со скобками.
Сработает быстрее. Для длинных файлов - на порядок.
>> KV> cd $CWD
>> Убрать.
>> У нас не вында. Понятие "текущий каталог" сугубо локально
>> для процесса, поэтому в конце скрипта вовсе не нужно
>> менять или восстанавливать текущий каталог - т.к. с
>> завершением скрипта (это отдельный процесс) пропадает
>> информация и об его переменных, текущем каталоге и
>> проч. (домашнее задание: помедитировать, почему не
>> существует бинарника /bin/cd; хотя аналоги в /bin для
>> других встроенных императивных команд шелла есть).
>>
>> Таким образом - CDW=$(pwd) и cd $CWD вычеркиваем как ненужные.
KV> Понял, уберу.
KV> А, действительно, почему?┼э
Перечитайте вышенаписанное. Скрипт запускается как
самостоятельный процесс. Процессы-потомки не имеют никакого
влияния на процессы-родителей. После завершения скрипта его
текущий каталог становится никому не нужным, не влияет на
текущий каталог процесса-родителя и, следовательно, пропадает.
--
Best regards,
ASA mailto:llb@udm.ru
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Comm] Re[2]: [Comm] Re[2]: [Comm] S: .rpm name normalizer (was: Кэш apt)
2003-05-27 19:46 ` [Comm] Re[2]: " ASA
@ 2003-05-28 17:12 ` Konstantin Vinokurov
2003-05-28 17:50 ` [Comm] Re[2]: " ASA
0 siblings, 1 reply; 11+ messages in thread
From: Konstantin Vinokurov @ 2003-05-28 17:12 UTC (permalink / raw)
To: community
В сообщении от 27 Май 2003 22:46 ASA написал(a):
> Hello Konstantin,
>
> Tuesday, May 27, 2003, 9:47:48 AM, you wrote:
> >> KV> if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep
> >> $j) ]
> >>
> >> if grep -qs $j /root/CD.[12]
>
> KV> Как вариант. Мне нравится if со скобками.
>
> Сработает быстрее. Для длинных файлов - на порядок.
Т.е. если со скобками
if [ grep -qs $j /root/CD.[12] ]
быстрее чем
if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep $j) ]
?
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Comm] Re[2]: [Comm] Re[2]: [Comm] Re[2]: [Comm] S: .rpm name normalizer (was: Кэш apt)
2003-05-28 17:12 ` Konstantin Vinokurov
@ 2003-05-28 17:50 ` ASA
0 siblings, 0 replies; 11+ messages in thread
From: ASA @ 2003-05-28 17:50 UTC (permalink / raw)
To: Konstantin Vinokurov
Hello Konstantin,
Wednesday, May 28, 2003, 10:12:58 PM, you wrote:
>> >> KV> if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep
>> >> $j) ]
>> >>
>> >> if grep -qs $j /root/CD.[12]
>>
>> KV> Как вариант. Мне нравится if со скобками.
>>
>> Сработает быстрее. Для длинных файлов - на порядок.
KV> Т.е. если со скобками
KV> if [ grep -qs $j /root/CD.[12] ]
Это вообще не сработает. Я не писал скобок. man test
if grep -qs $j /root/CD.[12]
KV> быстрее чем
KV> if [ ! -z $(cat /root/CD.1 /root/CD.2 | grep $j) ]
KV> ?┼э
Да. Потому что grep -q немедленно вернет результат "истина",
которое затем сразу проанализирует if. В вашем же случае
вызывается команда [ (посмотрите '/bin/[') у которой аргументами
будет все остальное до знака ']'. Неэффективность в том, что
$(grep ... ) заставит сформировать длинную строку со всеми
вхождениями шаблона, в то время как для положительного ответа
достаточно факта первого совпадения (grep -q). А если
результирующая строка будет более 128Кбайт, то будет
переполнение буфера командной строки у [.
короче
man grep
man bash
man test
--
Best regards,
ASA mailto:llb@udm.ru
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2003-05-28 17:50 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-24 7:34 [Comm] Кэш apt Konstantin Vinokurov
2003-05-24 8:16 ` [Comm] " ASA
2003-05-24 13:53 ` Konstantin Vinokurov
2003-05-24 18:14 ` [Comm] S: .rpm name normalizer (was: Кэш apt) Michael Shigorin
2003-05-25 16:03 ` Konstantin Vinokurov
2003-05-25 16:55 ` [Comm] Re[2]: " ASA
2003-05-27 4:47 ` Konstantin Vinokurov
2003-05-27 19:46 ` [Comm] Re[2]: " ASA
2003-05-28 17:12 ` Konstantin Vinokurov
2003-05-28 17:50 ` [Comm] Re[2]: " ASA
2003-05-26 2:24 ` [Comm] Re: [Comm] Кэш apt Evgeny Yugov
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git