<chapt id="compat">Zagadnienia związane z kompatybilnością

<sect id="arches">Na jakim sprzęcie można uruchomić system &debian;?

<p>&debian; 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 
<url name="Linux FAQ" id="http://en.tldp.org/FAQ/Linux-FAQ/intro.html#DOES-LINUX-RUN-ON-MY-COMPUTER">


<!-- XXX update for new distros -->
<p>Obecne wydanie systemu &debian; &release;, zawiera kompletną binarną 
dystrybucję dla następujących architektur:

<p><em/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.

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

<p><em/alpha/: systemy Alpha produkowane przez Compaq/Digital

<p><em/sparc/: obejmuje systemy Sun'a: SPARC i większość UltraSPARC. 

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

<p><em/arm/: maszyny ARM i StrongARM.

<p><em/mips/: systemy  big-endian MIPS SGI: Indy i Indiago2;
<em/mipsel/: maszyny little-endian MIPS, Digital DECstations.

<p><em/hppa/: maszyny Hawlett-Packard'a PA-RISC (712, C3000, L2000, A500).

<p><em/ia64/: komputery Intel IA-64 ("Itanium"). 

<p><em/s390/: systemy IBM S/390 mainframe.

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

<p>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 <url id="http://www.debian.org/releases/stable/installmanual">.

<sect id="otherdistribs">Jak bardzo kompatybilny jest Debian z innymi
dystrybucjami Linuksa?

	
<p>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.

<p>&debian; przestrzega <url name="Linux Filesystem Hierarchy Standard"
id="http://www.pathname.com/fhs/">. 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. 

<sect id="otherunices">Jak bardzo kompatybilny jest kod źródłowy Debiana
z kodem źródłowym innych systemów Uniksowych?
	
<p>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).


<p>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) 

<!-- <p><strong>(The authors would very much like to give you a pointer to
an on-line document that described that standard, but the IEEE is another
one of those organizations that gets away with declaring standards and then
requiring that people PAY to find out what they are.  This makes about as
much sense as having to find out the significance of various colored lights
on traffic signals.)</strong> -->

<p>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.

<!-- I had to comment this out for obvious reasons... SVD
 <url name="Linux-FT" url="http://www.lasermoon.co.uk/linux-ft/linux-ft.html">.
Currently Unifix merges its patches into the Linux kernel, gcc and other
tools; so it is expected that their fixes towards POSIX.1 conformance will
be available in Debian (and other distributions).
-->

<!-- TODO: explain better how to unpack .debs onto non-Debian systems -->
<sect id="otherpackages">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;?

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

<taglist> <tag><strong/Prawdopodobnie możesz:/ 
<item>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; 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 <url name="Alien"
id="http://packages.debian.org/alien"> jest używany do konwersji pomiędzy
różnymi typami pakietów. 


<tag><strong/Prawdopodobnie nie chcesz:/ 
<item>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.
  
  
<tag><strong/Lepsze rozwiązanie:/ 
<item>Linux File System Standard (a więc
i &debian;) wymaga, aby podkatalogi w <tt>/usr/local/</tt>, 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.  </taglist>

<!-- It would be useful to document all the ways in which Debian and RedHat
systems differ.  I believe such a document would do a lot to dispell
fears of using a Unix system. SGK -->

<sect id="a.out">Czy w Debianie mogę uruchamiać moje bardzo stare programy 
"a.out"?

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

<p>Aby <em>uruchomić</em> program, który ma format <tt>a.out</tt>
(np., QMAGIC lub ZMAGIC),

<list> 
<item>Bądź pewny, że Twoje jądro wspiera uruchamianie programów
wykonywalnych <tt>a.out</tt>, 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ł <tt>binfmt_aout</tt>.)

  <p>Jeżeli jądro Twojego Debiana obsługuje uruchamianie plików wykonywalnych
<tt>a.out</tt> za pośrednictwem modułu, wtedy musisz być pewny, że moduł
<tt>binfmt_aout</tt> jest załadowany.  Możesz to zrobić w czasie procesu
startu sytemu poprzez dodanie lini <tt>binfmt_aout</tt> do pliku
<tt>/etc/modules</tt>. Możesz to także zrobić z lini poleceń, poprzez
wpisanie polecenia <tt>insmod DIRNAME/binfmt_aout.o</tt> gdzie
<tt>DIRNAME</tt> 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 <tt>DIRNAME</tt> będzie
<tt>/lib/modules/2.2.17/fs/</tt>.

  <item>zainstaluj pakiet <package/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
  <url id="ftp://archive.debian.org/debian-archive/">.

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

</list>

<p>Jeśli posiadasz komercyjny program w formacie <tt>a.out</tt>, to dobry
czas na poproszenie autorów o aktualizację w formacie <tt>ELF</tt>.

<sect id="libc5">Czy mogę na Debianie uruchomić moje stare programy libc5?

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

<sect id="libc5-compile">Czy mogę na Debianie skompilować stare programy libc5?

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

<p>Jeśli musisz skompilować klienta X-ów libc5, zainstaluj pakiety
<package>xlib6</package> i <package>xlib6-altdev</package>.

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

<sect id="non-debian-programs">Jak mogę zainstalować nie-Debianowy program?

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

<p>Jeśli Twoje programy i/lub pliki naprawdę muszą być umieszczone
w jakichś innych lokalizacja to nadal możesz trzymać je
w <tt>/usr/local/</tt> i utworzyć odpowiednie dowiązania symboliczne
z wymaganych lokalizacji do <tt>/usr/local/</tt>. Np. możesz zrobić
dowiązanie <example>ln -s /usr/local/bin/cośtam /usr/bin/cośtam</example>

<p>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 <ref id="debiandocs">).

<sect id="xlib6">Dlaczego otrzymuję błędy "Can't find libX11.so.6" przy 
uruchamianiu <tt>czegośtam</tt>?

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

<p>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 <package>xpm4.7</package> z części <tt>oldlibs</tt>.

<sect id="termcap">Dlaczego nie mogę skompilować programów używających libtermcap?
	
<p>Zamiast bazy oraz biblioteki <tt>termcap</tt> Debian używa bazy
<tt>terminfo</tt> oraz biblioteki <tt>ncurses</tt> opisującej interfejsy
terminali. Użytkownicy kompilujący programy, które wymagają pewnej wiedzy
o interfejsie terminali powinni podmienić odwołania do biblioteki
<tt>libtermcap</tt> na <tt>libncurses</tt>.

<p>By obsługiwać binaria, które zostały już połączone z biblioteką
<tt>termcap</tt> i do których nie posiadasz źródeł, Debian udostępnia pakiet 
<package>termcap-compat</package>. W nim zawarte są <tt>libtermcap.so.2</tt>
i <tt>/etc/termcap</tt>. 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 <tt>/etc/termcap</tt>.

<sect id="accelx">Dlaczego nie mogę zainstalować AccelX?
	
<p>AccelX używa do instalacji biblioteki <tt>termcap</tt>. Zobacz
<ref id="termcap">.

<sect id="motifnls">Dlaczego moje stare aplikacje Motif XFree 2.1 nie
działają?

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

<p>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.
