[devel] R-base upgrade (was: cpio...)

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вт Янв 30 23:01:21 MSK 2007


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	
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20070130/b41cd34e/attachment-0001.bin>


Подробная информация о списке рассылки Devel