ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] cpio: rename failed - Is a directory
@ 2007-01-29 21:54 Alexey Tourbin
  2007-01-29 22:06 ` Michael Shigorin
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Alexey Tourbin @ 2007-01-29 21:54 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 436 bytes --]

В пакете R-base я переместил каталог /usr/lib/R/doc в
/usr/share/doc/R-2.4, а на месте старого каталога оставил симлинк.
Теперь при обновлении выскакивает ошибка cpio:

error: unpacking of archive failed on file /usr/lib/R/doc: cpio: rename failed - Is a directory

То есть это некая типовая ситуация: переместил каталог, поставил симлинк
для совместимости.  Обновление нормально работать не будет.  Как быть в
такой ситуации?

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] cpio: rename failed - Is a directory
  2007-01-29 21:54 [devel] cpio: rename failed - Is a directory Alexey Tourbin
@ 2007-01-29 22:06 ` Michael Shigorin
  2007-01-29 23:03   ` Alexey I. Froloff
  2007-01-29 23:02 ` Alexey I. Froloff
  2007-01-30 18:55 ` [devel] R-base upgrade (was: cpio...) Alexey Tourbin
  2 siblings, 1 reply; 13+ messages in thread
From: Michael Shigorin @ 2007-01-29 22:06 UTC (permalink / raw)
  To: devel

On Tue, Jan 30, 2007 at 12:54:59AM +0300, Alexey Tourbin wrote:
> error: unpacking of archive failed on file /usr/lib/R/doc: cpio: rename failed - Is a directory
> То есть это некая типовая ситуация: переместил каталог,
> поставил симлинк для совместимости.  Обновление нормально
> работать не будет.  Как быть в такой ситуации?

/usr/share/doc/rpm-4.0.4/manual/triggers?

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] cpio: rename failed - Is a directory
  2007-01-29 21:54 [devel] cpio: rename failed - Is a directory Alexey Tourbin
  2007-01-29 22:06 ` Michael Shigorin
@ 2007-01-29 23:02 ` Alexey I. Froloff
  2007-01-30 18:55 ` [devel] R-base upgrade (was: cpio...) Alexey Tourbin
  2 siblings, 0 replies; 13+ messages in thread
From: Alexey I. Froloff @ 2007-01-29 23:02 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 269 bytes --]

* Alexey Tourbin <at@> [070130 01:03]:
> То есть это некая типовая ситуация: переместил каталог, поставил симлинк
> для совместимости.  Обновление нормально работать не будет.  Как быть в
> такой ситуации?
%pre.  См. напр. vim-common.

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] cpio: rename failed - Is a directory
  2007-01-29 22:06 ` Michael Shigorin
@ 2007-01-29 23:03   ` Alexey I. Froloff
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey I. Froloff @ 2007-01-29 23:03 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 369 bytes --]

* Michael Shigorin <mike@> [070130 01:13]:
> > То есть это некая типовая ситуация: переместил каталог,
> > поставил симлинк для совместимости.  Обновление нормально
> > работать не будет.  Как быть в такой ситуации?
> /usr/share/doc/rpm-4.0.4/manual/triggers?
Оно выпадет перед %triggerin, а %triggerpre нет...  Так что
только %pre.

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [devel] R-base upgrade (was: cpio...)
  2007-01-29 21:54 [devel] cpio: rename failed - Is a directory Alexey Tourbin
  2007-01-29 22:06 ` Michael Shigorin
  2007-01-29 23:02 ` Alexey I. Froloff
@ 2007-01-30 18:55 ` Alexey Tourbin
  2007-01-30 19:00   ` Dmitry V. Levin
  2 siblings, 1 reply; 13+ messages in thread
From: Alexey Tourbin @ 2007-01-30 18:55 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1970 bytes --]

On Tue, Jan 30, 2007 at 12:54:59AM +0300, Alexey Tourbin wrote:
> В пакете R-base я переместил каталог /usr/lib/R/doc в
> /usr/share/doc/R-2.4, а на месте старого каталога оставил симлинк.
> Теперь при обновлении выскакивает ошибка cpio:
> 
> error: unpacking of archive failed on file /usr/lib/R/doc: cpio: rename failed - Is a directory
> 
> То есть это некая типовая ситуация: переместил каталог, поставил симлинк
> для совместимости.  Обновление нормально работать не будет.  Как быть в
> такой ситуации?

Новый прикол.

$ sudo apt-get remove R-base
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  R-base
...
Done.
$ sudo rm -rfv /usr/lib/R /etc/R
removed directory: `/usr/lib/R'
$ sudo apt-get install R-base=2.3.1
Reading Package Lists... Done
Building Dependency Tree... Done
Selected version 2.3.1-alt1 for R-base
The following NEW packages will be installed:
  R-base
...
Done.
$ sudo apt-get install R-base=2.4.1
Reading Package Lists... Done
Building Dependency Tree... Done
Selected version 2.4.1-alt1 for R-base
The following packages will be upgraded
  R-base
....
Done.
$ rpm -Vv R-base
missing    /etc/R/Makeconf
missing    /etc/R/Renviron
missing    /etc/R/ldpaths
missing    /etc/R/repositories
missing    /usr/share/doc/R-2.4/AUTHORS
missing    /usr/share/doc/R-2.4/COPYRIGHTS
missing    /usr/share/doc/R-2.4/CRAN_mirrors.csv
missing    /usr/share/doc/R-2.4/KEYWORDS
missing    /usr/share/doc/R-2.4/KEYWORDS.db
missing    /usr/share/doc/R-2.4/NEWS
missing    /usr/share/doc/R-2.4/THANKS
$ R
/usr/bin/R: line 164: /usr/lib/R/etc/ldpaths: No such file or directory
$ 

То есть при обновлении с сизифовской сборки то текущей (в git.alt)
пропадают некоторые конфигурационные и документационные файлы.
Куда пропадают эти файлы?

При установке, а не обновлении, такой проблемы не возникает.
Прошу о помощи -- не могу понять, в чем дело. :(

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] R-base upgrade (was: cpio...)
  2007-01-30 18:55 ` [devel] R-base upgrade (was: cpio...) Alexey Tourbin
@ 2007-01-30 19:00   ` Dmitry V. Levin
  2007-01-30 19:15     ` Alexey Tourbin
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry V. Levin @ 2007-01-30 19:00 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 924 bytes --]

On Tue, Jan 30, 2007 at 09:55:06PM +0300, Alexey Tourbin wrote:
> On Tue, Jan 30, 2007 at 12:54:59AM +0300, Alexey Tourbin wrote:
> > В пакете R-base я переместил каталог /usr/lib/R/doc в
> > /usr/share/doc/R-2.4, а на месте старого каталога оставил симлинк.
> > Теперь при обновлении выскакивает ошибка cpio:
> > 
> > error: unpacking of archive failed on file /usr/lib/R/doc: cpio: rename failed - Is a directory
> > 
> > То есть это некая типовая ситуация: переместил каталог, поставил симлинк
> > для совместимости.  Обновление нормально работать не будет.  Как быть в
> > такой ситуации?
> 
> Новый прикол.

Не надо превращать каталог с файлами в симлинк на каталог с файлами.
Если очень хочется это сделать, то необходимо обеспечить отсутствие этой
ссылки до тех пор пока не будет удалена старая сборка пакета.
Иначе при обновлении пропадут файлы, которые присутствуют в обеих сборках.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] R-base upgrade (was: cpio...)
  2007-01-30 19:00   ` Dmitry V. Levin
@ 2007-01-30 19:15     ` Alexey Tourbin
  2007-01-30 19:22       ` Dmitry V. Levin
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey Tourbin @ 2007-01-30 19:15 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1333 bytes --]

On Tue, Jan 30, 2007 at 10:00:03PM +0300, Dmitry V. Levin wrote:
> > > То есть это некая типовая ситуация: переместил каталог, поставил симлинк
> > > для совместимости.  Обновление нормально работать не будет.  Как быть в
> > > такой ситуации?
> > 
> > Новый прикол.
> 
> Не надо превращать каталог с файлами в симлинк на каталог с файлами.
> Если очень хочется это сделать, то необходимо обеспечить отсутствие этой
> ссылки до тех пор пока не будет удалена старая сборка пакета.
> Иначе при обновлении пропадут файлы, которые присутствуют в обеих сборках.

Кажется я начинаю понимать, в чем здесь может быть дело.
То есть в соответствии с со стадиями обновления, описанными здесь:
/usr/share/doc/rpm-4.0.4/manual/triggers
дело обстоит так:
1) rpm сначала распаковывает все новые файлы;
2) чрезе некоторое время после этого rpm удаляет все старые файлы.

Если рассмотреть это на уровне системных вызовов, то происходит вот что:
1)
	mkdir /etc/R
	unlink /etc/R/ldpaths		-- like install(1)
	open /etc/R/ldpaths O_WRONLY
	...
	symlink ../../etc/R /usr/lib/R/etc
2)
	unlink /usr/lib/R/etc/ldpaths

Вся трудность в последнем unlink'е.  Симлинк уже стоит и
/usr/lib/R/etc/ldpaths фактически разрешается в /etc/R/ldpahts.
Следовательно, будет удален новый файл /etc/R/ldpahts.

Что-то мысли мои смутились.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] R-base upgrade (was: cpio...)
  2007-01-30 19:15     ` Alexey Tourbin
@ 2007-01-30 19:22       ` Dmitry V. Levin
  2007-01-30 20:01         ` Alexey Tourbin
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry V. Levin @ 2007-01-30 19:22 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 890 bytes --]

On Tue, Jan 30, 2007 at 10:15:29PM +0300, Alexey Tourbin wrote:
[...]
> Кажется я начинаю понимать, в чем здесь может быть дело.
> То есть в соответствии с со стадиями обновления, описанными здесь:
> /usr/share/doc/rpm-4.0.4/manual/triggers
> дело обстоит так:
> 1) rpm сначала распаковывает все новые файлы;
> 2) чрезе некоторое время после этого rpm удаляет все старые файлы.
> 
> Если рассмотреть это на уровне системных вызовов, то происходит вот что:
> 1)
> 	mkdir /etc/R
> 	unlink /etc/R/ldpaths		-- like install(1)
> 	open /etc/R/ldpaths O_WRONLY
> 	...
> 	symlink ../../etc/R /usr/lib/R/etc
> 2)
> 	unlink /usr/lib/R/etc/ldpaths
> 
> Вся трудность в последнем unlink'е.  Симлинк уже стоит и
> /usr/lib/R/etc/ldpaths фактически разрешается в /etc/R/ldpahts.
> Следовательно, будет удален новый файл /etc/R/ldpahts.

Именно так оно и происходит.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] R-base upgrade (was: cpio...)
  2007-01-30 19:22       ` Dmitry V. Levin
@ 2007-01-30 20:01         ` Alexey Tourbin
  2007-01-30 20:04           ` Alexey Tourbin
  2007-01-30 20:10           ` Alexey Tourbin
  0 siblings, 2 replies; 13+ messages in thread
From: Alexey Tourbin @ 2007-01-30 20:01 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1578 bytes --]

On Tue, Jan 30, 2007 at 10:22:21PM +0300, Dmitry V. Levin wrote:
> On Tue, Jan 30, 2007 at 10:15:29PM +0300, Alexey Tourbin wrote:
> [...]
> > Кажется я начинаю понимать, в чем здесь может быть дело.
> > То есть в соответствии с со стадиями обновления, описанными здесь:
> > /usr/share/doc/rpm-4.0.4/manual/triggers
> > дело обстоит так:
> > 1) rpm сначала распаковывает все новые файлы;
> > 2) чрезе некоторое время после этого rpm удаляет все старые файлы.
> > 
> > Если рассмотреть это на уровне системных вызовов, то происходит вот что:
> > 1)
> > 	mkdir /etc/R
> > 	unlink /etc/R/ldpaths		-- like install(1)
> > 	open /etc/R/ldpaths O_WRONLY
> > 	...
> > 	symlink ../../etc/R /usr/lib/R/etc
> > 2)
> > 	unlink /usr/lib/R/etc/ldpaths
> > 
> > Вся трудность в последнем unlink'е.  Симлинк уже стоит и
> > /usr/lib/R/etc/ldpaths фактически разрешается в /etc/R/ldpahts.
> > Следовательно, будет удален новый файл /etc/R/ldpahts.
> 
> Именно так оно и происходит.

По-моему эта проблема решаема на уровне rpm.  При создании новых файлов
нужно запоминать st_dev+st_ino вновь созданных файлов.  При удалении
старых файлов нужно проверять, не совпадает ли st_dev+st_ino удаляемого
файла с каким-либо новым файлом.  В общем кто-то когда-то плохо подумал,
а теперь всё, поздняк метаться.

Фактически можно придумать зловредный пакет pkg и две его версии, таких
что при обновлении pkg-v1 -> pkg-v2 сносится ЧТО УГОДНО.  Напр.

pkg-v1
%files
	/usr/lib/pkg1/bin/cat

pkg2-v2
%pre
	rm -rf /usr/lib/pkg1/bin
%files
	/usr/lib/pkg1/bin -> /bin	

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] R-base upgrade (was: cpio...)
  2007-01-30 20:01         ` Alexey Tourbin
@ 2007-01-30 20:04           ` Alexey Tourbin
  2007-01-30 20:10           ` Alexey Tourbin
  1 sibling, 0 replies; 13+ messages in thread
From: Alexey Tourbin @ 2007-01-30 20:04 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 560 bytes --]

On Tue, Jan 30, 2007 at 11:01:21PM +0300, Alexey Tourbin wrote:
> Фактически можно придумать зловредный пакет pkg и две его версии, таких
> что при обновлении pkg-v1 -> pkg-v2 сносится ЧТО УГОДНО.  Напр.
> 
> pkg-v1
> %files
> 	/usr/lib/pkg1/bin/cat
> 
> pkg2-v2
> %pre
> 	rm -rf /usr/lib/pkg1/bin
> %files
> 	/usr/lib/pkg1/bin -> /bin	

Прошу заметить, что в этом раскладе не видно злого умысла.
Чувак просто хочет использовать системный /bin/cat вместо
/usr/lib/pkg1/bin/cat.  Но в результате системный /bin/cat
удаляется.  What a blunder!

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] R-base upgrade (was: cpio...)
  2007-01-30 20:01         ` Alexey Tourbin
  2007-01-30 20:04           ` Alexey Tourbin
@ 2007-01-30 20:10           ` Alexey Tourbin
  2007-01-30 20:23             ` Michael Shigorin
  1 sibling, 1 reply; 13+ messages in thread
From: Alexey Tourbin @ 2007-01-30 20:10 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 888 bytes --]

On Tue, Jan 30, 2007 at 11:01:21PM +0300, Alexey Tourbin wrote:
> По-моему эта проблема решаема на уровне rpm.  При создании новых файлов
> нужно запоминать st_dev+st_ino вновь созданных файлов.  При удалении
> старых файлов нужно проверять, не совпадает ли st_dev+st_ino удаляемого
> файла с каким-либо новым файлом.  В общем кто-то когда-то плохо подумал,
> а теперь всё, поздняк метаться.
> 
> Фактически можно придумать зловредный пакет pkg и две его версии, таких
> что при обновлении pkg-v1 -> pkg-v2 сносится ЧТО УГОДНО.  Напр.
> 
> pkg-v1
> %files
> 	/usr/lib/pkg1/bin/cat
> 
> pkg2-v2
> %pre
> 	rm -rf /usr/lib/pkg1/bin
> %files
> 	/usr/lib/pkg1/bin -> /bin	

Впрочем, зловредный pkg-v2 можно придумать гораздо проще:
%pre
	rm -f /bin/cat

Тем не менее, ужасный blunder в алогритме rpm, который своими же руками
позволят снести ЧТО УГОДНО, сохраняется.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] R-base upgrade (was: cpio...)
  2007-01-30 20:10           ` Alexey Tourbin
@ 2007-01-30 20:23             ` Michael Shigorin
  2007-01-30 20:35               ` Alexey Tourbin
  0 siblings, 1 reply; 13+ messages in thread
From: Michael Shigorin @ 2007-01-30 20:23 UTC (permalink / raw)
  To: devel

On Tue, Jan 30, 2007 at 11:10:24PM +0300, Alexey Tourbin wrote:
> > Фактически можно придумать зловредный пакет pkg и две его версии, таких
> > что при обновлении pkg-v1 -> pkg-v2 сносится ЧТО УГОДНО.  Напр.
> Впрочем, зловредный pkg-v2 можно придумать гораздо проще:
> %pre
> 	rm -f /bin/cat

Так это ж слишком очевидно. :)

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] R-base upgrade (was: cpio...)
  2007-01-30 20:23             ` Michael Shigorin
@ 2007-01-30 20:35               ` Alexey Tourbin
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey Tourbin @ 2007-01-30 20:35 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 839 bytes --]

On Tue, Jan 30, 2007 at 10:23:02PM +0200, Michael Shigorin wrote:
> On Tue, Jan 30, 2007 at 11:10:24PM +0300, Alexey Tourbin wrote:
> > > Фактически можно придумать зловредный пакет pkg и две его версии, таких
> > > что при обновлении pkg-v1 -> pkg-v2 сносится ЧТО УГОДНО.  Напр.
> > Впрочем, зловредный pkg-v2 можно придумать гораздо проще:
> > %pre
> > 	rm -f /bin/cat
> 
> Так это ж слишком очевидно. :)

Ну понятно.  Старый принцип гласил GIGO -- garbage in garbage out;
т.е. некоторый алгоритм мог давать произвольные последствия/результаты
для сомнительного ввода.  Новые подходы к корректности программ говорят,
что хороший алгоритм не должен выполнять ПРОИЗВОЛЬНЫЕ действия;
напротив, лишь некоторый набор заведомо корректных действий В СМЫСЛЕ
ИНТЕПРЕТАЦИИ; поскольку СУЩЕСТВУЕТ МОДЕЛЬ и т.п...  Ой, я уже гоню. :)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2007-01-30 20:35 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-01-29 21:54 [devel] cpio: rename failed - Is a directory Alexey Tourbin
2007-01-29 22:06 ` Michael Shigorin
2007-01-29 23:03   ` Alexey I. Froloff
2007-01-29 23:02 ` Alexey I. Froloff
2007-01-30 18:55 ` [devel] R-base upgrade (was: cpio...) Alexey Tourbin
2007-01-30 19:00   ` Dmitry V. Levin
2007-01-30 19:15     ` Alexey Tourbin
2007-01-30 19:22       ` Dmitry V. Levin
2007-01-30 20:01         ` Alexey Tourbin
2007-01-30 20:04           ` Alexey Tourbin
2007-01-30 20:10           ` Alexey Tourbin
2007-01-30 20:23             ` Michael Shigorin
2007-01-30 20:35               ` Alexey Tourbin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/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 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git