LINUX.ORG.RU

libfreetype6-dev:i386 в debian jessie/stretch требует удалить libfreetype6-dev

 , , ,


0

1

Устанавливаю libfreetype6-dev:i386 для компиляции wine, получаю

# apt-get install libfreetype6-dev:i386
...
The following extra packages will be installed:
  libpng12-dev:i386 zlib1g-dev:i386
The following packages will be REMOVED:
  libcairo2-dev libfontconfig1-dev libfreetype6-dev libgtk2.0-dev libpango1.0-dev libxft-dev

# dpkg --print-architecture
amd64
# dpkg --print-foreign-architectures
i386

Есть этот баг https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666761 , но я мало чего там понял. Как в multiarch решают проблему разных .h, .pc? Для библиотек .so/.a есть разные директории, а для этого?

Вот, например, diff libfreetype6-dev для amd64 и i386:

$ ./x/usr/bin/freetype-config --libs
-L/usr/lib/x86_64-linux-gnu -lfreetype
$ ./y/usr/bin/freetype-config --libs
-L/usr/lib/i386-linux-gnu -lfreetype

$ diff -r x y                          
diff -r x/usr/bin/freetype-config y/usr/bin/freetype-config
19c19
< libdir="/usr/lib/x86_64-linux-gnu"
---
> libdir="/usr/lib/i386-linux-gnu"
diff -r x/usr/include/freetype2/freetype/config/ftconfig.h y/usr/include/freetype2/freetype/config/ftconfig.h
83c83
< #define SIZEOF_LONG 8
---
> #define SIZEOF_LONG 4
Only in y/usr/lib: i386-linux-gnu
Only in x/usr/lib: x86_64-linux-gnu

Чаще всего никак не решают. Просто требуют, чтобы пакеты с заголовками для разных архитектур одновременно устанавливать было нельзя. А зачем тебе это надо, если не секрет?

Для сборки программ для разных архитектур удобно использовать chroot.

TeopeTuK ★★★ ()
Ответ на: комментарий от TeopeTuK

А зачем тебе это надо, если не секрет?

wine собираю. Да, с chroot все получится. Значит debian multiarch для runtime, а не для сборки, хотя в нем многие dev для разных архитектур не конфликтуют между собой.

panzerito ()
Ответ на: комментарий от panzerito

Пакеты не конфликтуют, это лпдно. Но есть же и пакеты с бинарниками, которые совсем никак одновременно установлены быть не могут. Тот же /usr/bin/gcc никак не может быть одновременно разных архитектур. Так что собирать в основной системе можно только для одной архитектуры (и я не уверен, что получится нормально настроить систему сборки для чужой архитектуры, если это не кросс-компиляция).

TeopeTuK ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.