Jak zainstalować 32-bitową i 64-bitową wersję tego samego pakietu -dev?

11

Próbuję zainstalować libsqlite3-devdla obu i386i amd64na tym samym komputerze Ubuntu 12.04. Tworzę aplikację korzystającą z narzędzia sqlite3 i chcę skompilować i przetestować wersje 32-bitową i 64-bitową.

Wygląda jednak na to, że libsqlite3-dev:i386pakiet jest niezgodny z libsqlite3-dev:amd64, ponieważ aptwciąż chce usunąć jeden, gdy instaluję drugi.

Czy istnieje sposób na zainstalowanie obu w tym samym systemie?

Wim
źródło

Odpowiedzi:

5

Nie można zainstalować obu pakietów -dev w tym samym systemie w tym samym czasie. Możesz zainstalować tylko jeden lub drugi, ponieważ zawierają one niektóre te same pliki. Multi-arch nie włącza obsługi kompilacji krzyżowej, co właśnie próbujesz zrobić. Jeśli chcesz zainstalować :i386wersję pakietu deweloperskiego sqlite i skompilować przy użyciu 64-bitowego kompilatora, prawie na pewno będziesz mieć zepsutą kompilację.

Najlepszym rozwiązaniem jest skompilowanie w 32-bitowym systemie chroot lub maszynie wirtualnej w celu zbudowania wersji 32-bitowej.

dobey
źródło
Pliki nagłówkowe są rzeczywiście w obu pakietach, ale ich zawartość jest identyczna. Co więcej, dla innych -devpakietów, takich jak zlib1g, które również mają wspólne (i identyczne) plików, to jest możliwe do zainstalowania zarówno wersji jednocześnie.
Wim,
1
Właśnie wymusiłem instalację obu pakietów, nie wydawało się, że to nic zepsuło i mogę teraz zbudować (i poprawnie uruchomić) obie wersje. Czy to tylko przypadek opiekuna pakietu deklarującego konflikt, w którym tak naprawdę go nie ma?
Wim,
0

Osobiście nie uważam wymuszonych instalacji nawet w ostateczności. Myślę, że może się okazać, że pbuilder jest całkiem przydatny. Oto jak to zrobić. W tym celu możesz nawet zainstalować różne dystrybucje i jednocześnie skryptować proces budowania różnych obiektów docelowych.

http://ubuntuforums.org/showthread.php?t=206382

Możesz więc nawet odinstalować wszystkie pakiety deweloperskie. Są instalowane w tymczasowej instalacji chroot.


źródło