* [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