ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [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