Bug 27930 - kdebase-kdm 3.5.13.1-alt0.M60T.1 ошибка установки
Summary: kdebase-kdm 3.5.13.1-alt0.M60T.1 ошибка установки
Status: CLOSED FIXED
Alias: None
Product: Branch t6
Classification: Distributions
Component: kdebase-kdm (show other bugs)
Version: не указана
Hardware: all Linux
: P3 normal
Assignee: rom_as@altlinux.org
QA Contact: QA t6
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-06 14:43 MSK by Sergey Y. Afonin
Modified: 2013-01-04 17:55 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2012-11-06 14:43:20 MSK
Вылезло при попытке обновить с 3.5.13-alt4.M60T.1:

63: kdebase-kdm              error: unpacking of archive failed on file /etc/X11/kdm: cpio: rename failed - Is a directory
Comment 1 Sergey Y. Afonin 2012-11-06 14:45:57 MSK
Assigned To, что-то, не на того выставился, на сколько понимаю...
Comment 2 Roman Savochenko 2012-11-06 15:06:20 MSK
(В ответ на комментарий №0)
> Вылезло при попытке обновить с 3.5.13-alt4.M60T.1:
> 
> 63: kdebase-kdm              error: unpacking of archive failed on file
> /etc/X11/kdm: cpio: rename failed - Is a directory
В рассылках обсуждалось!
Нужно просто удалить текущий /etc/X11/kdm, вместо которого сейчас ставится ссылка на /usr/share/kde/config/kdm, где всё должно и лежит сейчас.
После удаления всё обновится корректно.
Comment 3 Sergey Y. Afonin 2012-11-06 15:15:28 MSK
Решение вида
mv /etc/X11/kdm /etc/X11/kdm.bak
apt-get install kdebase-kdm --reinstall 
очевидно, но это, всё же, баг. :-)

Проблема решаема, в devel@ обсуждалось несколько раз. Я, в такую ситуацию, тоже попадал, c zyGrib:

%triggerpostun -- zygrib < 5.0.6-alt2
# %_libdir/%binname/data must be symlink since 5.0.6-alt2
if [ -d %_libdir/%binname/data ] ; then
    if ! [ -L %_libdir/%binname/data ] ; then
        rm -rf %_libdir/%binname/data
        cd %{_libdir}/%{binname}
        ln -s %{_datadir}/%{binname}/data data
    fi
fi
Comment 4 Sergey Y. Afonin 2012-11-06 15:21:37 MSK
Ещё %post

%post
# if "data" missed then this first installation
if ! [ -d %_libdir/%binname/data ] ; then
    cd %{_libdir}/%{binname}
    ln -s %{_datadir}/%{binname}/data data
fi

И в %files пришлось писать

%ghost %_libdir/%binname/data

Не так давно cas@ на эту же тему наступал, кажется, может быть, у него элегантнее... Сейчас позову его сюда, может скажет что.
Comment 5 Roman Savochenko 2012-11-06 16:21:32 MSK
(В ответ на комментарий №4)
> %post
> # if "data" missed then this first installation
> if ! [ -d %_libdir/%binname/data ] ; then
>     cd %{_libdir}/%{binname}
>     ln -s %{_datadir}/%{binname}/data data
> fi
Тогда уж проще:
%pre kdm
test -d /etc/X11/kdm && rm -fr /etc/X11/kdm
Comment 6 Sergey Y. Afonin 2012-11-06 16:48:14 MSK
"-d" не даёт разницы между каталогом и симлинком на каталог. rm -fr /etc/X11/kdm в любом случае приведёт к нужному результату ?

А, вообще, хорошо ли конфиг убирать в /usr/share/kde/config/kdm ? Там никогда ничего руками править не нужно ? Может, правильнее, как раз, наоборот, симлинк в /usr/share/kde/config/ ?
Comment 7 Roman Savochenko 2012-11-06 17:47:05 MSK
(В ответ на комментарий №6)
> "-d" не даёт разницы между каталогом и симлинком на каталог. rm -fr
> /etc/X11/kdm в любом случае приведёт к нужному результату ?
Не вопрос:
test ! -L /etc/X11/kdm && rm -rf /etc/X11/kdm
Конечно приведёт и даже нужно поскольку в новом выключается tsak, который по умолчанию включен но деблокирование там не работает, точнее я его таки обошёл.

> А, вообще, хорошо ли конфиг убирать в /usr/share/kde/config/kdm ? Там никогда
> ничего руками править не нужно ? Может, правильнее, как раз, наоборот, симлинк
> в /usr/share/kde/config/ ?
Неправиьно, поскольку системно /usr/share/kde/config/kdm есть всегда, является основным для горсти утилей связанных с KDM, из-за чего и эти перетрубации, а так-же эта директория лежит в корневом пакете, а не в *-kdm. Следовательно переброс ссылки назад породит странные зависимсти базового пакета на *-kdm.
Comment 8 Sergey Y. Afonin 2012-11-06 17:57:10 MSK
А "-L" не делает разницы между симлинком на файл или на каталог. ;-)

Так что правильно посредством -d выяснить, файл это, или каталог, а, потом, посредством -L, симлинк он, или настоящий.
Comment 9 Roman Savochenko 2012-11-06 18:03:11 MSK
(В ответ на комментарий №8)
> А "-L" не делает разницы между симлинком на файл или на каталог. ;-)
Это уже всёравно поскольку будет там или ссылка или директория, для чего "-L" достаточно.
Comment 10 Michael Shigorin 2012-11-06 22:12:49 MSK
(In reply to comment #2)
> Нужно просто удалить текущий /etc/X11/kdm, вместо которого сейчас ставится
> ссылка на /usr/share/kde/config/kdm, где всё должно и лежит сейчас.
> После удаления всё обновится корректно.
1) не надо так делать, rpm4 крайне плохо относится к прыжкам каталог/симлинк;
2) конфиг в /usr/share -- нарушение FHS.
Comment 11 Roman Savochenko 2012-11-06 22:39:10 MSK
(В ответ на комментарий №10)
> (In reply to comment #2)
> > Нужно просто удалить текущий /etc/X11/kdm, вместо которого сейчас ставится
> > ссылка на /usr/share/kde/config/kdm, где всё должно и лежит сейчас.
> > После удаления всё обновится корректно.
> 1) не надо так делать, rpm4 крайне плохо относится к прыжкам каталог/симлинк;
> 2) конфиг в /usr/share -- нарушение FHS.
Скажи это разработчикам, начиная с KDE3.
Лично меня текущая ситуация устраивает. Если хочешь-можешь сделать правильнее — делай.
Я и это не очень то хотел делать, когда попросили сделать kdmtheme рабочим.
Comment 12 Sergey Y. Afonin 2012-11-06 23:34:41 MSK
Надо звать Турчина... :-) Может скажет что...

Действительно, в kde4 есть два каталога с одноимёнными, и, при этом, разными файлами: /etc/X11/kdm4 и /usr/share/kde4/config/kdm
Comment 13 Sergey V Turchin 2012-11-07 15:45:48 MSK
У меня использовался /etc/X11/kdm4 .
/usr/share/kde4/config/kdm я вроде бы не паковал. Не помню уже.
Comment 14 Sergey V Turchin 2012-11-07 15:46:35 MSK
Ой, отвечал про kde3 , а не про kde4 :-)
Comment 15 Sergey V Turchin 2012-11-07 15:48:00 MSK
/usr/share/kde4/config/kdm -- балласт, уберу.
Comment 16 Roman Savochenko 2013-01-04 17:55:52 MSK
Исправлено.