[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