ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Ошибка обновления пакета: симлинк вместо директории
@ 2009-12-22  2:04 Michael A. Kangin
  2009-12-22  6:03 ` REAL
  0 siblings, 1 reply; 12+ messages in thread
From: Michael A. Kangin @ 2009-12-22  2:04 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Добрый день.

Проблема поднята в #22585.

Был пакет mediawiki-1.13.0-alt4, которому принадлежала директория 
/usr/share/mediawiki/config. Стал пакетом mediawiki-common, в котором 
/usr/share/mediawiki/config - это уже симлинк.

Новый пакет не устанавливается:
error: unpacking of archive failed on file /usr/share/mediawiki/config: cpio: 
rename failed - Is a directory

Что с этим делать - непонятно. Obsoletes на mediawiki < %version-%release не 
помогает. 
От имени симлинка отказываться очень бы не хотелось - кучу кода захакать 
придётся.
От симлинковости тоже - в этом месте mediawiki ищет свой создаваемый вебмордой 
конфиг, а такому не место в /usr/share.



-- 
wbr, Michael A. Kangin

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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2009-12-22  2:04 [devel] Ошибка обновления пакета: симлинк вместо директории Michael A. Kangin
@ 2009-12-22  6:03 ` REAL
  2009-12-22  7:51   ` Michael A. Kangin
  2009-12-23  7:24   ` Michael A. Kangin
  0 siblings, 2 replies; 12+ messages in thread
From: REAL @ 2009-12-22  6:03 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Michael A. Kangin пишет:
> Новый пакет не устанавливается:
> error: unpacking of archive failed on file /usr/share/mediawiki/config: cpio: 
> rename failed - Is a directory
> 
> Что с этим делать - непонятно. Obsoletes на mediawiki < %version-%release не 
> помогает. 
> От имени симлинка отказываться очень бы не хотелось - кучу кода захакать 
> придётся.

В спеке можно сделать что-то типа такого:

%pre -n %name-common
if [ -d %_datadir/mediawiki/config ]; then
   rm -fR %_datadir/mediawiki/config
fi
if [ -d %_datadir/mediawiki/images ]; then
   rm -fR %_datadir/mediawiki/images
fi

-- 

REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ


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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2009-12-22  6:03 ` REAL
@ 2009-12-22  7:51   ` Michael A. Kangin
  2009-12-22  9:58     ` Sergey Vlasov
  2009-12-23  7:24   ` Michael A. Kangin
  1 sibling, 1 reply; 12+ messages in thread
From: Michael A. Kangin @ 2009-12-22  7:51 UTC (permalink / raw)
  To: ALT Linux Team development discussions

В сообщении от Вторник 22 декабря 2009 09:03:25 автор REAL написал:

> > Новый пакет не устанавливается:
> > error: unpacking of archive failed on file /usr/share/mediawiki/config:
> > cpio: rename failed - Is a directory
> >
> > Что с этим делать - непонятно. Obsoletes на mediawiki < %version-%release
> > не помогает.
> > От имени симлинка отказываться очень бы не хотелось - кучу кода захакать
> > придётся.
> 
> В спеке можно сделать что-то типа такого:
> 
> %pre -n %name-common
> if [ -d %_datadir/mediawiki/config ]; then
>    rm -fR %_datadir/mediawiki/config
> fi
> if [ -d %_datadir/mediawiki/images ]; then
>    rm -fR %_datadir/mediawiki/images
> fi

Попробую.
Ну а ежели там остался какой-нибудь ценный конфиг?
mv в .rpmsave?



-- 
wbr, Michael A. Kangin

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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2009-12-22  7:51   ` Michael A. Kangin
@ 2009-12-22  9:58     ` Sergey Vlasov
  0 siblings, 0 replies; 12+ messages in thread
From: Sergey Vlasov @ 2009-12-22  9:58 UTC (permalink / raw)
  To: devel

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

On Tue, Dec 22, 2009 at 10:51:57AM +0300, Michael A. Kangin wrote:
> В сообщении от Вторник 22 декабря 2009 09:03:25 автор REAL написал:
> 
> > > Новый пакет не устанавливается:
> > > error: unpacking of archive failed on file /usr/share/mediawiki/config:
> > > cpio: rename failed - Is a directory
> > >
> > > Что с этим делать - непонятно. Obsoletes на mediawiki < %version-%release
> > > не помогает.
> > > От имени симлинка отказываться очень бы не хотелось - кучу кода захакать
> > > придётся.
> > 
> > В спеке можно сделать что-то типа такого:
> > 
> > %pre -n %name-common
> > if [ -d %_datadir/mediawiki/config ]; then
> >    rm -fR %_datadir/mediawiki/config
> > fi
> > if [ -d %_datadir/mediawiki/images ]; then
> >    rm -fR %_datadir/mediawiki/images
> > fi
> 
> Попробую.
> Ну а ежели там остался какой-нибудь ценный конфиг?
> mv в .rpmsave?

Либо mv в то место, где теперь должен располагаться этот конфиг (если
там в этот момент ничего нет; если есть - видимо, переименовывать в
.rpmsave на старом месте).

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

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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2009-12-22  6:03 ` REAL
  2009-12-22  7:51   ` Michael A. Kangin
@ 2009-12-23  7:24   ` Michael A. Kangin
  2009-12-23 10:49     ` Slava Semushin
  2011-11-13 21:26     ` Sergey Y. Afonin
  1 sibling, 2 replies; 12+ messages in thread
From: Michael A. Kangin @ 2009-12-23  7:24 UTC (permalink / raw)
  To: ALT Linux Team development discussions

В сообщении от Вторник 22 декабря 2009 09:03:25 автор REAL написал:

> > Новый пакет не устанавливается:
> > error: unpacking of archive failed on file /usr/share/mediawiki/config:
> > cpio: rename failed - Is a directory
> >
> > Что с этим делать - непонятно. Obsoletes на mediawiki < %version-%release
> > не помогает.
> > От имени симлинка отказываться очень бы не хотелось - кучу кода захакать
> > придётся.
> 
> В спеке можно сделать что-то типа такого:
> 
> %pre -n %name-common
> if [ -d %_datadir/mediawiki/config ]; then
>    rm -fR %_datadir/mediawiki/config
> fi
> if [ -d %_datadir/mediawiki/images ]; then
>    rm -fR %_datadir/mediawiki/images
> fi

Дальше - веселее.
В составе пакета mediawiki-common есть директория 
/var/www/webapps/mediawiki/config, в которой лежат два симлинка:
на директорию /usr/share/mediawiki/config1/LocalSettings.d и на файл 
/usr/share/mediawiki/config1/index.php.
При установке пакета с нуля устанавливаются оба симлинка, всё ок.
При апгрейде устанавливается только LocalSettings.d. index.php не появляется. 
И никаких сообщений об ошибках нету. Снос предсуществующей директории 
/var/www/webapps/mediawiki/config в %pre не помогает.

Создавать симлинки из %post? Но они тогда не будут принадлежать пакету...

-- 
wbr, Michael A. Kangin

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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2009-12-23  7:24   ` Michael A. Kangin
@ 2009-12-23 10:49     ` Slava Semushin
  2011-11-13 21:26     ` Sergey Y. Afonin
  1 sibling, 0 replies; 12+ messages in thread
From: Slava Semushin @ 2009-12-23 10:49 UTC (permalink / raw)
  To: ALT Linux Team development discussions

23 декабря 2009 г. 13:24 пользователь Michael A. Kangin
<prividen@altlinux.org> написал:
[...]
> Создавать симлинки из %post? Но они тогда не будут принадлежать пакету...

Use %ghost, Luke ? :)

-- 
Slava Semushin

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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2009-12-23  7:24   ` Michael A. Kangin
  2009-12-23 10:49     ` Slava Semushin
@ 2011-11-13 21:26     ` Sergey Y. Afonin
  2011-11-13 21:32       ` Michael Shigorin
  1 sibling, 1 reply; 12+ messages in thread
From: Sergey Y. Afonin @ 2011-11-13 21:26 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wednesday 23 December 2009, Michael A. Kangin wrote:

> При апгрейде устанавливается только LocalSettings.d. index.php не появляется. 
> И никаких сообщений об ошибках нету. Снос предсуществующей директории 
> /var/www/webapps/mediawiki/config в %pre не помогает.
 
Тут какая-то грабля глубже... Тоже возникла нужда сделать такую замену.
Сделал вот так:

%pre
if [ -d %_libdir/%binname/data ] ; then
    if ! [ -L %_libdir/%binname/data ] ; then
        rm -rf %_libdir/%binname/data
        ls -l %_datadir/%binname/data/*
    fi
fi

симлинк - это 

cd %{buildroot}%{_libdir}/%{binname}
ln -s %{_datadir}/%{binname}/data data

Пакет, куда попадает %_datadir/%binname/data, ставится до основного
пакета с симлинком. Этот вот ls (для отладки добавил) выводит нормальное
содержимое каталога, выводит его и ls в %post. То есть, вроде бы, всё
правильно, подмена происходит, данные в %_datadir живые. Но вот после
окончания установки %{_datadir}/%{binname}/data уже пуст. И кто там всё
выносит ?

-- 
С уважением, Сергей Афонин


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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2011-11-13 21:26     ` Sergey Y. Afonin
@ 2011-11-13 21:32       ` Michael Shigorin
  2011-11-13 21:46         ` Dmitry V. Levin
  2011-11-13 21:57         ` Sergey Y. Afonin
  0 siblings, 2 replies; 12+ messages in thread
From: Michael Shigorin @ 2011-11-13 21:32 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Mon, Nov 14, 2011 at 01:26:55AM +0400, Sergey Y. Afonin wrote:
> Пакет, куда попадает %_datadir/%binname/data, ставится до
> основного пакета с симлинком. Этот вот ls (для отладки добавил)
> выводит нормальное содержимое каталога, выводит его и ls в
> %post. То есть, вроде бы, всё правильно, подмена происходит,
> данные в %_datadir живые. Но вот после окончания установки
> %{_datadir}/%{binname}/data уже пуст. И кто там всё выносит ?

Возможно, дело в порядке отработки скриптов при обновлении:
tail -20 /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] 12+ messages in thread

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2011-11-13 21:32       ` Michael Shigorin
@ 2011-11-13 21:46         ` Dmitry V. Levin
  2011-11-13 23:47           ` Sergey Y. Afonin
  2011-11-13 21:57         ` Sergey Y. Afonin
  1 sibling, 1 reply; 12+ messages in thread
From: Dmitry V. Levin @ 2011-11-13 21:46 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

On Sun, Nov 13, 2011 at 11:32:16PM +0200, Michael Shigorin wrote:
> On Mon, Nov 14, 2011 at 01:26:55AM +0400, Sergey Y. Afonin wrote:
> > Пакет, куда попадает %_datadir/%binname/data, ставится до
> > основного пакета с симлинком. Этот вот ls (для отладки добавил)
> > выводит нормальное содержимое каталога, выводит его и ls в
> > %post. То есть, вроде бы, всё правильно, подмена происходит,
> > данные в %_datadir живые. Но вот после окончания установки
> > %{_datadir}/%{binname}/data уже пуст. И кто там всё выносит ?
> 
> Возможно, дело в порядке отработки скриптов при обновлении:
> tail -20 /usr/share/doc/rpm-4.0.4/manual/triggers

Точнее говоря, в порядке установки новых файлов, удаления старых файлов,
и отработки скриптов.  У вас фактически благодаря ссылке по старому пути
удаляются файлы уже с нового места.

Мораль: с момента окончания %pre до момента начала %triggerpostun этой
ссылки не должно быть.


-- 
ldv

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

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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2011-11-13 21:32       ` Michael Shigorin
  2011-11-13 21:46         ` Dmitry V. Levin
@ 2011-11-13 21:57         ` Sergey Y. Afonin
  2011-11-13 22:06           ` Dmitry V. Levin
  1 sibling, 1 reply; 12+ messages in thread
From: Sergey Y. Afonin @ 2011-11-13 21:57 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Monday 14 November 2011, Michael Shigorin wrote:

> Возможно, дело в порядке отработки скриптов при обновлении:
> tail -20 /usr/share/doc/rpm-4.0.4/manual/triggers
 
Всё равно понимания не наступило... Если речь про %pre, то,
во-первых, там проверка на симлинк, во вторых этот ls, работу
которого видно. А когда ls отрабатывает в последний раз, всё
ещё на месте.

-- 
С уважением, Сергей Афонин


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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2011-11-13 21:57         ` Sergey Y. Afonin
@ 2011-11-13 22:06           ` Dmitry V. Levin
  0 siblings, 0 replies; 12+ messages in thread
From: Dmitry V. Levin @ 2011-11-13 22:06 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

On Mon, Nov 14, 2011 at 01:57:11AM +0400, Sergey Y. Afonin wrote:
> On Monday 14 November 2011, Michael Shigorin wrote:
> 
> > Возможно, дело в порядке отработки скриптов при обновлении:
> > tail -20 /usr/share/doc/rpm-4.0.4/manual/triggers
>  
> Всё равно понимания не наступило... Если речь про %pre, то,
> во-первых, там проверка на симлинк, во вторых этот ls, работу
> которого видно. А когда ls отрабатывает в последний раз, всё
> ещё на месте.

$ grep -n 'all old files are removed' /usr/share/doc/rpm-4.0.4/manual/triggers
152:  ...		(all old files are removed)
Вот в этот самый момент только что установленные файлы бесследно исчезают.

Попробуйте прочесть, что написано в этих 20 строках.  Если все равно
понимание не наступит, то я завтра попробую объяснить на каком-нибудь
простом примере.


-- 
ldv

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

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

* Re: [devel] Ошибка обновления пакета: симлинк вместо директории
  2011-11-13 21:46         ` Dmitry V. Levin
@ 2011-11-13 23:47           ` Sergey Y. Afonin
  0 siblings, 0 replies; 12+ messages in thread
From: Sergey Y. Afonin @ 2011-11-13 23:47 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Monday 14 November 2011, Dmitry V. Levin wrote:

> > Возможно, дело в порядке отработки скриптов при обновлении:
> > tail -20 /usr/share/doc/rpm-4.0.4/manual/triggers
> 
> Точнее говоря, в порядке установки новых файлов, удаления старых
> файлов, и отработки скриптов.  У вас фактически благодаря ссылке
> по старому пути удаляются файлы уже с нового места.
> 
> Мораль: с момента окончания %pre до момента начала %triggerpostun
> этой ссылки не должно быть.

Почему-то мне казалось, что (all old files are removed) не относится
к тому, что перечислено в %files... Наверное, ночами спать надо. :-)
в %triggerpostun оно сработало правильно.

-- 
С уважением, Сергей Афонин


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

end of thread, other threads:[~2011-11-13 23:47 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-12-22  2:04 [devel] Ошибка обновления пакета: симлинк вместо директории Michael A. Kangin
2009-12-22  6:03 ` REAL
2009-12-22  7:51   ` Michael A. Kangin
2009-12-22  9:58     ` Sergey Vlasov
2009-12-23  7:24   ` Michael A. Kangin
2009-12-23 10:49     ` Slava Semushin
2011-11-13 21:26     ` Sergey Y. Afonin
2011-11-13 21:32       ` Michael Shigorin
2011-11-13 21:46         ` Dmitry V. Levin
2011-11-13 23:47           ` Sergey Y. Afonin
2011-11-13 21:57         ` Sergey Y. Afonin
2011-11-13 22:06           ` Dmitry V. Levin

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