Bug 29650

Summary: i586-libnss-{mdns,myhostname} should be installed along with libnss-{mdns,myhostname} and i586-glibc-nss
Product: Sisyphus Reporter: Dmitry Timoshkov <dmitry>
Component: wine-fullAssignee: Vitaly Lipatov <lav>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, cas, dd, lav, ldv, mike, sem, vsu
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Dmitry Timoshkov 2013-12-13 07:01:43 MSK
* Вт апр 09 2013 Dmitry V. Levin <ldv@altlinux.org> 6:2.17-alt5
- getaddrinfo: updated fix for sw#15339.

Я заменил example.net на nxdomain.codeweavers.com в примере из
https://sourceware.org/bugzilla/show_bug.cgi?id=15339
и ниже привожу результаты моего тестироввания:

$ cat glibc_bug15339.c
#include <stdio.h>
#include <netdb.h>
int main(void) {
        struct addrinfo *ai;
        int res = getaddrinfo ("nxdomain.codeweavers.com", "http", 0, &ai);
        if (res)
                printf("%s: %m\n", gai_strerror(res));
        return res && res != EAI_NONAME;
}

$ gcc -Wall -O2 -o glibc_bug15339 glibc_bug15339.c
$ ./glibc_bug15339
Name or service not known: Success
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$ gcc -m32 -Wall -O2 -o glibc_bug15339 glibc_bug15339.c
$ ./glibc_bug15339
System error: Success
^^^^^^^^^^^^^^^^^^^^^

$ file /lib/libc.so.6
/lib/libc.so.6: symbolic link to `libc-2.17.so'
$ file /lib/libc-2.17.so
/lib/libc-2.17.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
$ rpm -qf /lib/libc-2.17.so
i586-glibc-core-2.17-alt5
^^^^^^^^^^^^^^^^^^^^^^^^^
$ file /lib64/libc.so.6
/lib64/libc.so.6: symbolic link to `libc-2.17.so'
$ file /lib64/libc-2.17.so
/lib64/libc-2.17.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
$ rpm -qf /lib64/libc-2.17.so
glibc-core-2.17-alt5
^^^^^^^^^^^^^^^^^^^^
$ uname -r
3.10.23-std-def-alt1

Похоже, что i586-* версию пакета glibc просто не пропатчили/забыли обновить.
Comment 1 Andrey Cherepanov 2013-12-13 11:05:50 MSK
На Sisyphus.
Comment 2 Dmitry V. Levin 2013-12-13 13:36:03 MSK
А пакет i586-glibc-nss установлен?
Comment 3 Dmitry Timoshkov 2013-12-13 13:54:26 MSK
(В ответ на комментарий №2)
> А пакет i586-glibc-nss установлен?

Да.

$ rpm -qa | grep i586-glibc-nss
i586-glibc-nss-2.17-alt5
Comment 4 Michael Shigorin 2013-12-14 15:36:51 MSK
(В ответ на комментарий №0)
> Похоже, что i586-* версию пакета glibc просто не пропатчили/забыли обновить.
Вообще-то x86_64 и i586 собираются в рамках атомарного задания и разъехаться по соответствию исходнику не могут в принципе (гарантия сборочницы), да и i586-* не собираются, а перепаковываются в рамках того же задания (см. http://git.altlinux.org/tasks и пакет rpmrebuild-arepo).
Comment 5 Dmitry Timoshkov 2013-12-14 15:46:03 MSK
(В ответ на комментарий №4)
> > Похоже, что i586-* версию пакета glibc просто не пропатчили/забыли обновить.
> Вообще-то x86_64 и i586 собираются в рамках атомарного задания и разъехаться по
> соответствию исходнику не могут в принципе (гарантия сборочницы), да и i586-*
> не собираются, а перепаковываются в рамках того же задания (см.
> http://git.altlinux.org/tasks и пакет rpmrebuild-arepo).

Я вего лишь высказал свое предположение и назвал возможную причину :)
Тогда как можно объяснить причину такого поведения i586-* сборки glibc?
Comment 6 Sergey Vlasov 2013-12-14 16:41:13 MSK
Проверьте, какие модули указаны в /etc/nsswitch.conf для hosts, и доустановите недостающие 32-битные пакеты для этих модулей. Сейчас конфигурация по умолчанию может выглядеть так:

  hosts:      files dns mdns4_minimal [NOTFOUND=return] mdns4 myhostname

(myhostname сюда добавляется в %post пакета libnss-myhostname, который указан в зависимостях пакета systemd).

Поэтому, помимо i586-glibc-nss, ещё требуются пакеты:

  i586-libnss-mdns
  i586-libnss-myhostname

Отсутствие i586-libnss-mdns при наличии mdns4_minimal и mdns4 в nsswitch.conf приводит как раз к появлению "System error" в данном тесте.
Comment 7 Dmitry Timoshkov 2013-12-15 08:53:45 MSK
(В ответ на комментарий №6)
> Поэтому, помимо i586-glibc-nss, ещё требуются пакеты:
> 
>   i586-libnss-mdns
>   i586-libnss-myhostname
> 
> Отсутствие i586-libnss-mdns при наличии mdns4_minimal и mdns4 в nsswitch.conf
> приводит как раз к появлению "System error" в данном тесте.

Да, пакеты, перечисленные выше, установлены не были. После их установки
32-битный тест печатает ту же информацию об ощибке, что и 64-битный.

Решайте сами, насколько 'optional' являются эти пакеты, и должна ли от них
зависеть базовая функциональность glibc (IMHO - не должна). Или нужно "просто"
добавить эти пакеты в зависимости glibc.
Comment 8 Dmitry V. Levin 2014-01-12 04:13:33 MSK
(In reply to comment #7)
> (В ответ на комментарий №6)
> > Поэтому, помимо i586-glibc-nss, ещё требуются пакеты:
> > 
> >   i586-libnss-mdns
> >   i586-libnss-myhostname
> > 
> > Отсутствие i586-libnss-mdns при наличии mdns4_minimal и mdns4 в nsswitch.conf
> > приводит как раз к появлению "System error" в данном тесте.
> 
> Да, пакеты, перечисленные выше, установлены не были. После их установки
> 32-битный тест печатает ту же информацию об ощибке, что и 64-битный.

Q.E.D.

> Решайте сами, насколько 'optional' являются эти пакеты,

Пакеты libnss-mdns и libnss-myhostname являются optional в том смысле, что если реализуемый ими функционал не нужен, то устанавливать их незачем.

Парные к ним i586-libnss-mdns и i586-libnss-myhostname optional в том смысле, что их имеет смысл устанавливать только в том случае, когда установлены libnss-mdns, libnss-myhostname и i586-glibc-nss.

> и должна ли от них
> зависеть базовая функциональность glibc (IMHO - не должна).

Базовая функциональность glibc является настраиваемой, в данном случае, посредством /etc/nsswitch.conf, причем пакеты libnss-mdns и libnss-myhostname при установке редактируют этот конфигурационный файл, в результате чего поведение glibc NSS начинает зависеть от этих пакетов.

> Или нужно "просто" добавить эти пакеты в зависимости glibc.

Видимо, в профиле дистрибутива надо что-то подкрутить.
Comment 9 Dmitry V. Levin 2014-01-12 04:16:07 MSK
Перевешиваю на Кентавра.
Comment 10 Dmitry V. Levin 2014-01-12 04:20:31 MSK
Судя по всему, это сейчас касается только Centaurus и Simply:
в двух образах присутствуют пакеты libnss-{mdns,myhostname} и i586-glibc-nss,
но при этом отсутствуют пакеты i586-libnss-{mdns,myhostname}:

altlinux-7.0.1-centaurus-x86_64-ru-install-dvd5.iso
altlinux-7.0.2-simply-x86_64-install-dvd5.iso
Comment 11 Andrey Cherepanov 2017-09-15 12:09:14 MSK
Может, в пакет wine-full включить симлинки на 32-битные библиотеки glibc-nss,
 libnss-{mdns,myhostname} и sssd-client (по одной на каждый пакет), как это сделано в пакете https://packages.altlinux.org/en/Sisyphus/srpms/skype-preinstall/spec ?
Comment 12 Vitaly Lipatov 2017-09-16 22:26:01 MSK
(В ответ на комментарий №11)
> Может, в пакет wine-full включить симлинки на 32-битные библиотеки glibc-nss,
>  libnss-{mdns,myhostname} и sssd-client (по одной на каждый пакет), как это
> сделано в пакете
> https://packages.altlinux.org/en/Sisyphus/srpms/skype-preinstall/spec ?
Я думаю, более правильно добиться, чтобы 32-битная basesystem была полноценная, а не что вытянется случайно.
Уж вот каким боком sssd-client связан с wine?
В Debian не так уж и плохо было с ia32-libs.
Comment 13 Vitaly Lipatov 2020-10-29 02:46:28 MSK
Начиная с eepm 3.3.0-alt1 добавлен сценарий для приведения 32-битных модулей в соответствие 64-битным:
# epm prescription i586-fix

Начиная с eepm 3.5.0-alt1
# epm play i586-fix