# Zagadnienia związane z kompatybilnością

## Na jakim sprzęcie można uruchomić system Debian GNU/Linux?

Debian GNU/Linux zawiera kompletny kod źródłowy dla wszystkich zawartych w nim aplikacji, więc powinien działać na wszystkich platformach, które są wspierane przez jądro Linux; szczegóły można znaleźć w Linux FAQ

Obecne wydanie systemu Debian GNU/Linux 9, zawiera kompletną binarną dystrybucję dla następujących architektur:

i386: obejmuje komputery pracujące z procesorami Intela lub kompatybilnymi z Intelem, czyli Intelowskie 386, 486, Pentium, Pentium Pro, Pentium II (zarówno Klamath jak i Celeron), Pentium III, i większość kompatybilnych procesorów AMD, Cyrix i innych.

m68k: obejmuje komuptery Amiga i Atari posiadające procesory Motorola 680x0 dla x>=2; z MMU.

alpha: systemy Alpha produkowane przez Compaq/Digital

sparc: obejmuje systemy Sun'a: SPARC i większość UltraSPARC.

powerpc: obejmuje maszyny PowerPC IBM/Motorola, wlicząjąc w to CHRP, PowerMac i maszyny PReP.

arm: maszyny ARM i StrongARM.

mips: systemy big-endian MIPS SGI: Indy i Indiago2; mipsel: maszyny little-endian MIPS, Digital DECstations.

hppa: maszyny Hawlett-Packard'a PA-RISC (712, C3000, L2000, A500).

ia64: komputery Intel IA-64 ("Itanium").

s390: systemy IBM S/390 mainframe.

Binarna dystrybucja Debiana dla architektury Sparc64 (natywny UltraSPARC) jest obecnie w trakcie rozwoju.

Więcej informacji dotyczących uruchamiania systemu, partycjonowania Twoich dysków, obsługi urządzeń PCMCIA (PC Card) i podobnych zagadnień można znaleźć w Installation Manual, który jest dostępny na Naszej stronie WWW http://www.debian.org/releases/stable/installmanual.

## Jak bardzo kompatybilny jest Debian z innymi dystrybucjami Linuksa?

Deweloperzy Debiana komunikują się z twórcami innych dystrybucji Linuksa w celu zachowania binarnej kompatybilności pomiędzy dystrybucjami Linuksa. Większość linuksowych, komercyjnych produktów działa równie dobrze pod kontrolą Debiana jak i pod kontrolą systemów dla których zostały stworzone.

Debian GNU/Linux przestrzega Linux Filesystem Hierarchy Standard. Jednak standard dopuszcza własną interpretację niektórych zasad w nim opisanych, więc mogą istnieć nieznaczne różnice pomiędzy Debianem a pozostałymu systemami Linuksowymi.

## Jak bardzo kompatybilny jest kod źródłowy Debiana z kodem źródłowym innych systemów Uniksowych?

Dla większości aplikacji kod źródłowy Linuksa jest kompatybilny z innymi systemami Uniksowymi. Linux wspiera prawie wszystko co jest dostępne w Uniksach System V i darmowowych oraz komercyjnych pochodnych BSD. Jednak w obszarze biznesu związanego z Uniksem takie twierdzenie nie ma prawie żadnego znaczenia, ponieważ nie ma sposobu aby je udowodnić. W przemyśle związanym z tworzeniem oprogramowania wymagana jest całkowita kompatybilność, a nie kompatybilność "w prawie" wszystkich przypadkach. Z tego powodu przez lata narastała potrzeba stworzenia standardu, i dzisiaj takim głównym standardem kompatybilności kodu źródłowego w Uniksowych systemach operacyjnych jest POSIX.1 (IEEE Standard 1003.1-1990).

Linux w zamierzeniach ma przestrzegać POSIX.1, ale certyfikat POSIX.1 (i FIPS 151-2) jest dosyć drogi; stąd praca na zasadach zgodnych z POSIX jest dla deweloperów Linuksa trudniejsza. Koszty certyfikatu sprawiają, że zdobycie przez Debiana certyfikatu, nawet w przypadku przejścia procesu sprawdzania, jest mało prawdopodobne. (Proces ten jest obecnie przeprowadzany za darmo, więc oczekuje się, że więcej ludzi będzie pracować zgodnie z wytycznymi POSIX.1)

Unifix GmbH (Braunschweig, Niemcy) stworzył system Linuksowy, który dostał certyfikat jako system zgodny z FIPS 151-2 (rozszerzenie POSIX.1). Ta technologia jest dostępna we własnej dystrybucji Unifix nazwanej Unifix Linux 2.0 i w Linux-FT Lasermoon'a.

## Czy mogę używać pakietów Debiana (plików ".deb") w dystrybucji Linuksa, której używam (RedHat/Slackware/...)? Czy mogę używać pakietów RedHata (plików "rpm") w systemie Debian GNU/Linux?

Różne dystrybucje Linuksa używają różnych formatów pakietów i różnych programów do zarządzania tymi pakietami.

Prawdopodobnie możesz:

- Jest dostępny program, który rozpakuje pakiet Debiana na komputerze, gdzie zainstalowana jest inna dystrybucja Linuksa, i generalnie będzie działał, w sensie takim, że pliki będą rozpakowane. Odwrotna sytuacja prawdopodobnie też zachodzi, to znaczy program rozpakowujący pakiety RedHata albo Slackware'a na komputerze z dystrybucją opartą o system Debian GNU/Linux prawdopodobnie rozpakuje pakiet i umieści większość plików w zamierzonych katalogach. W większości jest to konsekwencja istnienia (i ogólnego przestrzegania zasad) Linux Filesystem Hierarchy Standard. Pakiet Alien jest używany do konwersji pomiędzy różnymi typami pakietów.

Prawdopodobnie nie chcesz:

- Większość menadżerów pakietów zapisuje swoje pliki administracyjne kiedy są używane do rozpakowywania archiwum. Te pliki administracyjne zwykle nie są ustandaryzowane. Dlatego rozpakowanie pakietu Debiana na 'obcym' komputerze będzie miało nieprzewidywalne efekty (a zwłaszcza nie użyteczne) dla działania menadżera pakietów używanego na tym komputerze. Analogicznie, programy do zarządzania pakietami z innych dystrybucji mogą skutecznie rozpakować swoje archiwa na komputerze z zainstalowanym Debianem, ale prawopodobnie spowoduje to, że menadżer pakietów Debiana nie będzie poprawnie działać, gdy trzeba będzie zaktualizować lub usunąć pakiety, lub nawet podczas tworzenia listy pakietów zainstalowanych w systemie.

Lepsze rozwiązanie:

- Linux File System Standard (a więc i Debian GNU/Linux) wymaga, aby podkatalogi w `/usr/local/`, były w pełni dostępne dla użytkowników. Dlatego użytkownicy mogą rozpakować 'obce' pakiety w tym katalogu, zarządzać ich konfiguracją, aktualizować i usuwać zależnie od potrzeby.

## Czy w Debianie mogę uruchamiać moje bardzo stare programy "a.out"?

Czy na pewno ciągle masz takie programy? :-)

Aby uruchomić program, który ma format `a.out` (np., QMAGIC lub ZMAGIC),

- Bądź pewny, że Twoje jądro wspiera uruchamianie programów wykonywalnych `a.out`, albo poprzez wkompilowanie tego bezpośrednio do jądra (CONFIG_BINFMT_AOUT=y) albo jako moduł (CONFIG_BINFMT_AOUT=m). (Pakiet z obrazem jądra Debiana zawiera moduł `binfmt_aout`.)

  Jeżeli jądro Twojego Debiana obsługuje uruchamianie plików wykonywalnych `a.out` za pośrednictwem modułu, wtedy musisz być pewny, że moduł `binfmt_aout` jest załadowany. Możesz to zrobić w czasie procesu startu sytemu poprzez dodanie lini `binfmt_aout` do pliku `/etc/modules`. Możesz to także zrobić z lini poleceń, poprzez wpisanie polecenia `insmod DIRNAME/binfmt_aout.o` gdzie `DIRNAME` jest nazwą katalogu, gdzie jest przechowywany moduł zbudowany dla tej wersji jądra, która w danej chwili jest używana. W systemie z jądrem w wersji 2.2.17 `DIRNAME` będzie `/lib/modules/2.2.17/fs/`.

- zainstaluj pakiet `libc4`, który możesz znaleźć w jednej z dystrybucji wydanej przed 2.0 (ponieważ wtedy usunięto ten pakiet). Możesz spróbować jakiegoś starego CD-ROMu z Debianem (Debian 1.3.1 nadal zawiera ten pakiet) lub zobacz ftp://archive.debian.org/debian-archive/.

- Jeśli program, który chcesz uruchomić jest klientem X-ów `a.out`, zainstaluj pakiet `xcompat` (zobacz powyżej w celu sprawdzenia dostępności).

Jeśli posiadasz komercyjny program w formacie `a.out`, to dobry czas na poproszenie autorów o aktualizację w formacie `ELF`.

## Czy mogę na Debianie uruchomić moje stare programy libc5?

Tak. Zainstaluj po prostu wymagane biblioteki `libc5` z części `oldlibs` (zawierającej stare pakiety właśnie dla zgodności ze starymi aplikacjami).

## Czy mogę na Debianie skompilować stare programy libc5?

Tak. Zainstaluj `libc5-altdev` i `altgcc` (z części `oldlibs`). Możesz znaleźć odpowiednie, skompilowane z libc5 `gcc` i `g++` w katalogu `/usr/i486-linuxlibc1/bin`. Umieść je w zmiennej $PATH tak by `make` i inne programy uruchamiały je jako pierwsze.

Jeśli musisz skompilować klienta X-ów libc5, zainstaluj pakiety `xlib6` i `xlib6-altdev`.

Uważaj, bo środowisko libc5 nie jest już w pełni obsługiwane przez nasze pakiety.

## Jak mogę zainstalować nie-Debianowy program?

Pliki znajdujące się w katalogu `/usr/local/` nie są pod kontrolą systemu zarządzania pakietami Debiana. Dlatego dobrą praktyką jest umieszczanie źródeł swoich programów w `/usr/local/src/`. Dla przykładu możesz rozpakować pliki z archiwum "cośtam.tar" do katalogu `/usr/local/src/foo`. Po kompilacji binaria przenieś do `/usr/local/bin/`, biblioteki do `/usr/local/lib/`, a wszelkie pliki konfiguracyjne do `/usr/local/etc/`.

Jeśli Twoje programy i/lub pliki naprawdę muszą być umieszczone w jakichś innych lokalizacja to nadal możesz trzymać je w `/usr/local/` i utworzyć odpowiednie dowiązania symboliczne z wymaganych lokalizacji do `/usr/local/`. Np. możesz zrobić dowiązanie

    ln -s /usr/local/bin/cośtam /usr/bin/cośtam

W każdym przypadku, jeśli licencja programu pozwala na redystrybucję powinieneś zastanowić się nad stworzeniem pakietu i przesłaniu go do Debiana. Przewodniki jak stać się opiekunem pakietu są załączone w podręczniku Polityki Debiana (zobacz debiandocs).

## Dlaczego otrzymuję błędy "Can't find libX11.so.6" przy uruchamianiu `czegośtam`?

Taki błąd oznaczać może, że program jest złączony z bibliotekami X11 w wersji `libc5`. W takim przypadku musisz zainstalować pakiet `xlib6` z części `oldlibs`.

Możesz otrzymywać podobne komunikaty o błędach odnoszące się do pliku libXpm.so.4. W takim przypadku należy zainstalować bibliotekę XPM w wersji libc5 z pakietu `xpm4.7` z części `oldlibs`.

## Dlaczego nie mogę skompilować programów używających libtermcap?

Zamiast bazy oraz biblioteki `termcap` Debian używa bazy `terminfo` oraz biblioteki `ncurses` opisującej interfejsy terminali. Użytkownicy kompilujący programy, które wymagają pewnej wiedzy o interfejsie terminali powinni podmienić odwołania do biblioteki `libtermcap` na `libncurses`.

By obsługiwać binaria, które zostały już połączone z biblioteką `termcap` i do których nie posiadasz źródeł, Debian udostępnia pakiet `termcap-compat`. W nim zawarte są `libtermcap.so.2` i `/etc/termcap`. Zainstaluj ten pakiet jeśli program nie uruchamia się wypisując komunikat "can't load library 'libtermcap.so.2'" lub wspomina o brakującym pliku `/etc/termcap`.

## Dlaczego nie mogę zainstalować AccelX?

AccelX używa do instalacji biblioteki `termcap`. Zobacz termcap.

## Dlaczego moje stare aplikacje Motif XFree 2.1 nie działają?

Musisz zainstalować pakiet `motifnls`, który dostarcza pliki konfiguracyjne dla XFree-2.1 pozwalające aplikacjom Motifa skompilowanym pod XFree-2.1 uruchamiać się pod XFree-3.1.

Bez tych plików niektóre aplikacje Motifa skompilowane na innych komputerach (takich jak Netscape) mogą się zawieszać przy próbie kopiowania i wklejania do pól tekstowych. Mogą występować również inne problemy.