Dawno dawno temu, za górami za lasami, na początku lat 90., powstał Linux, a tak naprawdę jego jądro. Linus Torvalds na samym początku rozprowadzał samo jądro Linuxa wraz z kilkoma prostymi prostymi narzędziami GNU. Zainstalowanie sobie Linuxa wymagało wiele pracy i jeszcze więcej wiedzy i zrozumienia - tak naprawdę potrafili to zrobić tylko współdeweloperzy Linuxa. W związku z tym trzeba było wzbogacić Linuxa o coś, by każdy (lub każdy choć trochę zaawansowany w tajnikach komputerów) mógł sobie Linuxa zainstalować i z niego korzystać.
Powstała idea dystrybucji. Dystrybucja, to, w skrócie:
Dokładny opis, z czego składają się współczesne dystrybucje, zostanie zamieszczony później.
Skrótem przez historię: pierwszymi dystrybucjami, powstałymi w 1992, były: MCC Interim Linux (University of Manchester), TAMU (Texas A&M University) oraz SLS (Softlanding Linux System). Niestety, wszystkie te dystrybucje szybko przestały być aktualizowane. Wówczas, na podstawie SLSa, Patrick Volkerding stworzył, do dziś aktualizowaną i bardzo popularną, dystrybucję Slackware.
Przez pierwszą częśc referatu zajmijmy się następującym problemem: chcemy zrobić dystrybucję. Czy na pewno z sensem jest, abyśmy ją robili? Co musimy w niej zawrzeć? Jakie decyzje przy projektowaniu podjąć? ...
Tak więc teraz stopniowo będziemy sobie zadawali różne pytania. Za pomocą tych pytań będziemy mogli określić, co my tak naprawdę musimy zrobić robiąc dystrybucję. Również zrobimy później od końca, czyli ocenimy, jakie decyzje projektowe podjeli twórcy znanych dystrybucji i dzięki temu porównamy te dystrybucje.
Na poniższy wywód można też patrzeć nie jak Co muszę zrobić by mieć dystrybucję? ale też Co zapewne od dystrybucji mogę oczekiwać?
Na to pytanie już powinniśmy znać odpowiedź. Tak naprawdę są trzy różne motywacje, które będą miały istotny wpływ na dalszą część projektu:
Całkiem prawdopodobne, że istnieje już dystrybucja (lub inny system operacyjny), który spełnia nasze wymagania czy wizje dystrybucji. Sprecyzujmy teraz nasze żądania.
Jeśli jest to dystrybucja dla nas, dla naszych znajomych, lub na określony, niewielki zbiór komputerów, architekturę mamy ściśle określoną. Robiąc dystrybucję dla mas zapewne będziemy chcieli więcej architektur obsługiwać. Dystrybucja np. do obliczeń w biologii pewnie będzie musiała obsługiwać kilka dziwnych architektur, wieloprocesorowych.
Po odpowiedzeniu sobie na poprzednie trzy pytania, tak naprawdę bardzo z grubsza wiemy, jak nasza dystrybucja powinna wyglądać, jakie programy powinna zawierać i w wersji dla jakich architektur. Teraz nadchodzi bardzo ważne pytanie...
To pytanie jest ważne dla każdej odpowiedzi na pytanie pierwsze: jeśli istnieje dystrybucja, pokrywająca się z naszą wizją, to albo zaoszczędzono nam dużo pracy (odp. 2 i 3) albo nisza rynkowa jest już wypełniona.
Patrząc tutaj, nie tylko inne Linuxy (których jest bardzo dużo) się liczą. Może, jeśli mamy zamiar postawić biurkową dystrybucję, Windows pokrywa naszę potrzeby? A może któryś Unix będzie bardzo dobry do naszych celów? Ktoś przed nami mógł mieć takie myśli jak my.
Po tych meta-pytaniach, czas zabrać się za bardziej techniczne aspekty dystrybucji Linuxa.
Jednym z prawdopodobnych wyborów może być któraś otwarta odmiana BSD, np. FreeBSD lub OpenBSD. BSD (Berkeley Software Distribution) jest odmianą Unix-a, rozwijaną na Uniwersytecie Kalifornijskim od lat siedemdziesiątych. Dość znane są jego dwie najpopularniejsze otwarte odmiany: FreeBSD i OpenBSD.
Większość dystrybucji BSD jest opartych na licencji BSD, będącej na pograniczu kompatybilności z GPL.
Na podstawie pytań 1-5 powinniśmy wysnuć kilka wniosków bardziej technicznych na temat naszej dystrybucji:
Oczywiście, fajnie by było jakby nasz system zawsze działał poprawnie, jednak jest to po prostu niemożliwe.
To pytanie jest tak naprawdę bardzo pokrewne do poprzedniego. Chcielibyśmy, aby nasz system był zawsze bezpieczny, choć dobrze wiemy, że nie jest to możliwe.
Po zadaniu sobie powyższych pytań, pora na formalniejszą definicję dystrybucji, czyli co tak naprawdę potrzebujemy zrobić.
Współczesna dystrybucja składa się z:
Teraz, przeanalizujemy składowe dystrybucji, patrząc na dostępne już rozwiązania i zapotrzebowania użytkowników. Wpierw jednak, dowiedzmy się, co musimy zrobić, by można było nazwać naszą dystrybucję Linuxem.
Filesystem Hierarchy Standard (Standard Hierarchi systemu plików) jest standardem precyzującym logiczne rozmieszczenie poszczególnych rodzajów plików i katalogów dla różnych UNIXowych systemów plików. Aktualnie obowiązujący FHS jest w wersji 2.3 ogłoszonej 29 stycznia 2004.
FHS stawia sobie za cel:
Dokument ten porusza kwestie:
FHS zaleca by główny system (korzeń) znajdował się na osobnej partycji, możliwie małej, ale żeby zawierał wszystko co jest wymagane aby: bootować, odzystkiwać i reperować system.
Motywuje to następująco:
Katalogi obowiązkowe na ścieżce /:
Ścieżka | Zawartość |
---|---|
/boot | Statyczne pliki bootloadera |
/dev | Pliki urządzeń |
/etc | Lokalna konfiguracja |
/lib | Kluczowe biblioteki współdzielone i moduły jądra |
/media | Punkt montowania nośników wymiennych |
/mnt | Punkt montowania tymczasowego |
/opt | Dodatkowe pakiety oprogramowania |
/bin | Kluczowe systemowe pliki wykonywalne poleceń |
/sbin | Kluczowe systemowe pliki binarne |
/srv | Dane usług świadczonych przez system |
/tmp | Dane tymczasowe |
/usr | Druga hierarchia plików |
/var | Dane "zmieniające się" |
Katalogi opcjonalne:
Ścieżka | Zawartość |
---|---|
/home | Katalogi prywatne użytkowników |
/lib{dodatek} | Alternatywny zestaw bibliotek |
/root | Katalog domowy użytkownika root |
Polecenia te powinny być (choć w większości dystrybucji linuxa niesą) dostępne nawet wtedy gdy ich funkcjonalność jest realizowalna przez powłokę systemową (shell).
Ponadto, jeśli w systemie są zainstalowane odpowiednie aplikacje, to w /bin muszą znajdować się następujące programy: csh, ed, tar, cpio, gzip, gunzip, zcat, netstat,ping
Katalog zawiera wszystkie pliki konieczne do przeprowadzenia procesu bootowania. Tam też znajduje się jądro (choć w wyjątkowych sytuacja dopuszczalne jest by jądro było bezpośrednio w katalogu /).
Pliki konfiguracyjne wymagane w procesie bootowania powinny (menu.lst dla grub'a) powinny być linkowane symbolicznie do /etc (/etc/grub/menu.lst).
HFS dla Linuxa wymaga dodatkowo istnienienia następujących urządzeń specjalnych:
Katalog /etc zawiera pliki konfiguracyjne. Żadnego pliki binarne nie mogą się znajdować w katalogu /etc. Zalecane jest by pliki poszczególnych programów były zapisywane w odpowiednich podkatalogach.
Jeśli system zawiera odpowiednie podsystemy, to obowiązkowo powinien zawierać odpowiednie wpisy w /etc:
Ścieżka | Zawarość |
---|---|
katalog /etc/opt | Pliki programów znajdujących się w /opt. Każdy program w /opt powinien posiadać swój katalog w /etc (o ile posiada jakąkolwiek konfigurację) |
katalog /etc/X11 | Konfiguracja X windows system. |
katalog /etc/xml | Konfiguracja programów XMLowych |
katalog /etc/sgml | Konfiguracja programów sGMLowych |
oraz pliki:
Plik | Opis |
---|---|
csh.login | Ustawienia o znaczeniu globalny dla C shella |
exports | NFS Access Control List - uprawnienia |
fstab | Statyczne informacje o montowanych systemach plików |
ftpusers | Upawnienia do korzystania z FTP |
gateways | Bramy wyjściowe (ciekawostka - moim zdaniem zapisuje się to przy konfiguracji interfejsu) |
gettydefs | Ustawienia terminali |
group | Grupy użytkowników |
host.conf | Konfiguracja zarządzania siecią |
hosts | Statycznie przyznane nazwy hostów |
hosts.allow | Uprawnienia do dostępu przez TCP/IP |
hosts.deny | Zakazy dostęp przez TCP/IP |
hosts.equiv | Zaufane hosty dla rlogin, rsh, rcp |
hosts.lpd | Zaufane hosty dla lpd |
inetd.conf | Konfiguracja demona inetd |
inittab | Konfiguracja procesu init |
issue | Komunikat przed logowaniem |
ld.so.conf | Lista dodatkowych katalogów |
motd | Komunikat po logowaniu |
mtab | Dynamiczna informacja o zamontowanych systemach plików (ze względów historycznych) |
mtools.conf | Konfiguracja mtoolsa |
networks | Statyczna informacja o nazwach w sieci |
passwd | Plik z użytkownikami i hasłami |
printcap | Konfiguracja demona lpd (drukarka) |
profile | Domyślne i globalne dla całego systemu opcje startowe bash'a |
protocols | Lista protokołów IP i przypisanych portów |
resolv.conf | Konfiguracja serwerów DNS |
rpc | Lista protokołów RPC |
securetty | Ograniczenie dostęp do logowania przez terminale |
services | Numery portów dla nazwy serwera |
shells | Dostępne shelle (optional) |
syslog.conf | Konfiguracja sysloga |
Jest to katalog, który zawiera katalogi domowe użytkówników. W tych katalogach powinny być wszystkie pliki specyficzne dla użytkownika, także konfiguracje prywatne użytkowników.
Konfiguracje prywatne poszczególnych aplikacji powinny się znajdować w "ukrytych" plikach i katalogach (rozpoczynających się od .). Jeśli aplikacja posiada katalog ukryty na pliki konfiguracyjne, to pliki w nim nie powinny być ukryte.
Katalog /lib powinein zawierać kluczowe biblioteki, tzn. te wymagane przez kluczowe aplikacja dla działania systemu, czyli przez jądro (moduły), oraz aplikacje z /bin i /sbin.
Moduły jądra powinny się znaleźć w podkatalogu "modules". W katalogu głównym z kolei powinny się znajdować conajmniej następujące pliki:
A alternatywne środowisko? Uzyskujemy np. tworząc alternatywny "korzeń" i chroot'ując do niego
Jest to katalog przeznaczony na podkatalogi będące punktami montowania poszczególnych urządzeń wymiennych.
Większość użytkowników linux'a pewnie nie zauważyła tego katalogu, bo większość dystrybucji go domyślnie nie zakłada.
Katalog | Opis |
---|---|
floppy | Stacja dyskietek |
cdrom | stacja CD-ROM lub DVD-rom |
cdrecorder | nagrywarka CD |
zip | stacja Zip |
Jeśli jest więcej urządzeń danego typu, to katalogi te należy numerować kolejno od 0. Jednak należy obowiązkowo zostawić symlink do urządzenia domyślnego danego typu (pozbawiany numerka).
Jak widać autorzy standardu 2.3 zapomnieli o urządzeniach klasy pendrive
Katalog na dodatkowe aplikacje. Oplikacje mogą się instalować w katalogach o nazwach programów i w katalogach zarejestorowanych dostawców oprogramowania (LANANA).
Katalogi /opt/bin, /opt/doc, /opt/include, /opt/info,/opt/lib,/opt/man są zastrzeżone dla użytku przez administratora. Pakiety mogą wystawić makiete (front-end) w tych katalogach, przy pomocy linków.
Polecaną przez FHS metodą organizowania opt'a jest używanie najpierw katalogu z nazwą dostawcy programu, a dopiero potem katalog programu. Ma to na celu umożliwienie umieszczania wspólnych plików wykonywalnych i bibliotek bezpośrednio w katalogu dostawny (np. /opt/{dostawca}/bin , /opt/{dostawca}/lib)
Narzędzia potrzebne administratorowi i tylko administratorowi (root-only) powinny być przetrzymywane w następujących katalogach:
Katalog /sbin może zawierać polecenia lub linki posiadające funkcjonalność: bootowania, odzyskiwania oraz reperowania systemu. Programy wykonywane po zamontowaniu /usr powinny znajdować się w /usr/sbin. Programy zainstalowane lokalnie (np. do obsługi sprzętu na lokalnej maszynie) powinny znajdować się w /usr/local/sbin
W katalogu /sbin musi znajdować się (lub lokalny link) do polecenia shutdown - zamykającego system.
Następujące polecenia są zalecane:
Katalog | Opis |
---|---|
fastboot | Uruchom ponowinie system (bez kontroli dysku) |
fasthalt | Zatrzymaj system natychmiastowo (bez kontroli dysku) |
fdisk | Manipulator tablic partycji |
fsck | Ogólne polecenie kontroli systemu plików |
fsck.* | Kontrola i naprawa konkretnego systemu plików |
getty | The getty program |
halt | Zatrzymanie systemu |
ifconfig | Konfiguracja interfejsów sieciowych |
init | Proces inicjujący pracę systemu |
mkfs | Ogólne polecenie zakładania systemu plików |
mkfs.* | Tworzy na partycji właściwy (zależny *)system plików |
mkswap | Tworzy na partycji znaczniki, że może być ona wykorzystana do swapowania |
reboot | Polecenie rebootowania systemu |
route | Tablica routingu IP |
swapon | Włącza swapowanie na wskazanej partycji |
swapoff | Wyłącza swapowanie na wskazanej partycji |
update | Demon oczyszczający (zapisujące na dysk) bufory systemowy |
Jest to katalog przewidziany na dane usług. Jeżeli serwer np. udostępnia archiwum ftp, archiwum svn/cvs lub stronę www, to odpowiedni katalog powinien się znaleźć w /srv.
Jest kilka metodologii tworzenia podkatalogów w /srv. Jedną możliwością jest nazywanie ich w zależności od nazwy protokołu. Inna metoda to najpierw katalogowanie ich w zależności od tematyki, a dopiero później od protokołu (o ile jest tych protokołów kilka).
Oczywiście wszystkie dane "użytkowników" powinny się znaleźć w katalogu domowym użytkownika i być co najwyżej linkowane do /svr.
Ogólniejsze, ale w pewien sposób istotnie ograniczone. Poddrzewo /usr musi zawierać pliki, które mogą być współdzielone przez kilka hostów (czyli nie mogą zawierać żadnych informacji charakterystycznych dla hosta). Ponadto katalog ten musi być tylko do odczytu - czyli musi umieć pracować w trybie read-only. Oczywiście zapis do niego jest możliwy - np. podczas instalacji aplikacji, ale możliwość zapisu nie może być potrzebą działających programów. Wszystkie modyfikowalne dane powinny być zapisywane w strukturze /var.
Wymagane katalogi:
Katalog | Opis |
---|---|
/usr/bin | Większość poleceń użytkownika |
/usr/include | Pliki nagłówkowe języka C (pochodzące od wszystkich programów).
W Linuxach /usr/include/linux powinien wskazywać na pliki nagłówkowe aktualnie używanej wersji jądra systemu |
/usr/lib | Biblioteki |
/usr/local | Hierarchia lokalna - dystrubucja po instalacji powinna zostawiać ją pustą |
/usr/sbin | Narzędzia administracyjne (root-only) |
/usr/share | Dane niezależne od architektóry |
Katalogi opcjonalne:
Katalog | Opis |
---|---|
/usr/X{11}R{6} | XWindow System, wersja 1 wydanie 6 |
/usr/games | Gry i programy edukacyjne |
/usr/lib<qual> | Biblioteki w alternatywnych formatach |
/usr/src | Kody źródłowe. Na linux'ach /usr/src/linux powinien wskazywać na źródła aktualnie używanego jądra systemu |
Jak widać jedynym systemem, który posiada swój własny bezpośredni katalog - to XWindows - ze względu na jego popularność i stopień rozbudowania. Co nie zmienia faktu, że inne - nawet bardziej rozbudowane programy nie powinny zakładać katalogów bezpośrednio w katalogu /usr.
Ze względu na wsteczną zgodnośc poniższe katalogi mogą być dostępne w formie linków symbolicznych. Oczywiście do czasu, aż bieżące implementację nauczą się korzystać bezpośrednio z odpowiedniej struktury.
Katalog /usr/local zawiera wszystkie aplikację "nie należące" do dystrybucji systemu. Wyróżnienie tego drzewa służy temu, by aplikacje nie zostały nadpisane podczas aktualizacji systemu.
Katalog | Opis |
---|---|
/usr/local/bin | Pliki binarne aplikacji |
/usr/local/etc | Specyficzna dla host'a ustawienia (link do /etc/local - w celu ułatwienia backupu) |
/usr/local/games | Lokalne gry |
/usr/local/include | Lokalne pliki nagłówkowe |
/usr/local/lib | Lokalne biblioteki |
/usr/local/man | Lokalne strony manuala |
/usr/local/sbin | Lokalne polecenia systemowe (dla administratora) |
/usr/local/share | Lokalna hierarchia niezależna od architektóry |
/usr/local/src | Lokalna struktura plików |
Katalog /usr/share jest przeznaczony, dla danych, które mogą być używane przez wiele różnych architektur. Czyli wiele programów (w tych samych wersjach), ale skompilowanych na różnych architektórach może korzystać z tych zasobów.
Katalog | Opis |
---|---|
/usr/share/man | Strony podręcznika systemowego man |
/usr/share/misc | Drobne pliki, które nie wymagają oddzielnego podkatalogu (w szczególności: ascii, magic, termcap, termcap.db) |
Przykładowe elementy struktuktury niezależnej od architektóry:
Katalog | Opis |
---|---|
/usr/share/dict | Słowniki (zawierające bezpośrednio plik "words" - tradycyjnie Angielski (brytyjski) zbiór słow), a w podkatalogach słowniki narodowe |
/usr/share/doc | Dokumentacja |
/usr/share/games | Statyczne dane gier (filmy) |
/usr/share/info | GNU Info system |
/usr/share/locale | Informacje lokalne |
/usr/share/nls | Katalogi z tłumaczeniami aplikacji na różne języki |
/usr/share/sgml | Dane SGML |
/usr/share/terminfo | Katalogi bazy danych terminfo |
/usr/share/tmac | makra troff nie dystrybułowane z gruff |
/usr/share/xml | dane XML |
/usr/share/zoneinfo | Konfiguracja i informacje o strefie czasowej |
Inne podsystemy - np. texmf, kbd mogą i powinny tutaj tworzyć katalogi ze swoimi zasobami.
FHS dość dokładnie opisuje system katalogów dla podsystemu man - stron instrukcji obsługi poleceń. Generalnie struktura jest taka .../man/{lokalizacja}/man{section}/{arch}/strony...
Katalog | Opis |
---|---|
man1 | Programy dla użytkownika |
man2 | Wywołania systemowe |
man3 | Elementy bibliotek |
man4 | Pliki specjalne |
man5 | Formaty plików |
man6 | Gry |
man7 | Pozostałe elementy |
man8 | Zagadnienia administracji systemem |
Katalog /var ma zawierać te dane, które podlegają modyfikacją w trakcie działania różnych programów. Może zawierać dane stałe oraz dane tymczasowe.
Pewne elementy tego drzewa podlegają współdzieleniu między wieloma systemami, ale zdecydowanie nie wszystkie. Przykładami przeważnie podlegających współdzieleniu są następujące poddrzewa:
Z kolej współdzieleniu nie podlegają:
Oto wymagane podkatalogi:
Katalog | Opis |
---|---|
/var/cache | Cache - wyróżniony aby móc umieścić na oddzielnej partycji z inną polityką dyskową :) |
/var/lib | Po prostu stałe dane aplikacji |
/var/local | Dane aplikacji z /usr/local |
/var/lock | Blokady na urządzeniach i innych zasobach zapisane w formie plików. (Plik ma nazwę LCK..{urządzenie} i zawartość w postaci odpowiednio przesuniętego spacjami numeru pid) |
/var/log | Pliki loggera systemowego. Obowiązkowo:
|
/var/opt | Dane aplikacji z /opt |
/var/run | Dane bieżące właśnie uruchomionych aplikacji. Katalog czyszczony w procesie bootowania. Tu procesy m.in. umieszcają informacje o swoich pidach (w plikach {nazwa_procesu}.pid). |
/var/spool | Miejsce wymiany danych. Głównie dane oczekujące na dalsze przetworzenie... np. kolejki drukarek (lpd), poczty wychodzącej(mqueue), grup dyskusyjnych (news), czy uruchamiacza czasowego dla Linuxów(cron) |
/var/tmp | Pliki tymczasowe - zachowywane pomiędzy resetami systemu |
Dopuszczalne są także następujące katalogi
Katalog | Opis |
---|---|
/var/account | Dane wyliczeniowe aktualnie działających procesów |
/var/crash | Miejsce na zrzuty informacji o błędach (np. core.dump'y) |
/var/games | Dane gier (np. save'y) |
/var/mail | Skrzynki pocztowa (uwaga: NIE należy używać /var/spool/mail) |
/var/yp | Baza danych systemu NIS (Network Information System [System Informacji Sieciowej]) |
POSIX (Portable Operating System Interface (uniX)) jest zbiorem standarów wyspecyfikowanych przez IEEE (Institute of Electrical and Electronics Engineers) i specyfikujących API dla różnych programów uruchamianych na UNIX'ach. Formalna nazwa pierwszej edycji POSIX'a to standard IEEE 1003.
POSIX jest standardem głównie dla programisty, jednak nie stanowi on biblioteki, ale ogranicza się do bardzo dokładnej specyfikacji symantyki poszczególnych operacji, których programista (lub użytkownik) może oczekiwać od systemu operacyjnego
POSIX w szczególności specyfikuje:
Za datę początku tego standardu uznaje się rok 1985.
Standard POSIX doczekał się wielu rozszerzeń i uzupełnień:
Przykładami plików nagłówkowych wyspecyfikowanych przez POSIX są:
Dostępny jest zbiór testów na zgodność systemu z POSIXem i jest on nazywany PCTS (Posix Conformance Test Suite).
Nawet system Microsoft Windows NT jest częściwo zgodny z POSIX'em, w szczególności w zakresie podsystemu czasu rzeczywistego. Zgodność Windowsa z Posixem wzrasta po zainstalowania Windows Services for Unix lub Cygwina.
Jednak jest problem - standard POSIX jest standardem zamkniętym. IEEE żąda wysokich opłat za udostępnianie dokumentów i nie zgadza się na ich publikację. Wspólnota Free Software nie mogła tego znieść. Dlatego w 1998 roku założyli wspólnotę "Austin Group" (od nazwy miejsca, gdzie odbyło się spotkanie inaugurujące pracę grupy - w siedzibie IBM w Texasie), która wprowadziła standard SUS ("Single UNIX Specification").
Jednak FHS i SUS to zamało by przyciągnąć twórców komercyjnego oprogramowania do Linux'a. Oba standardy nie poruszają problemów binarnej zgodności, a jej brak pomiędzy Unixami uniemożliwia dystrybucję oprogramowania w postaci binarnej lub czyni ją drogą i w większości przypadków nieopłacalną.
Dlatego w 1998 roku rozpoczęła działalność grupa Linux Standard Base, która za swój cel podaje: Celem LSB jest tworzenie i promowanie zestawu binarnych standardów, które zwiększą zgodność pomiędzy Linuxami (i systemami podobnymi) i umożliwi uruchamianie aplikacji na zgodnych systemach. Dodatkowo LSB będzie koordynowało działania mające na celu przyciągnąć producentów oprogramowania do pisania i przenoszenia oprogramowania na platformę Linux
W założeniu grupy uczestniczyli Linux Torvalds, przedstawiciele czołowy dystrybucji, członkowie Linux International oraz Jordan Hubbard z projektu FreeBSD.
Specyfikacja ujrzała światło dzienne 29 czerwca 2001. Od tego czasu co około 6 miesięcy jest ogłaszana realizacja standardu. Obecnie obowiązującym jest standard 3.1
Jako, że celem jest binarna zgodność, to standard musi być uzależniony od architektury. Dlatego też składa się z dwóch części, ogólnej oraz specyficznej dla poszczególnych architektur. Aktualnie wspierane są następne systemu:
Problemy, które specyfikacja próbuje rozwiązać to:
W szczególności LSB opisuje następujące biblioteki:
By umożliwić dodawanie funkcjonalności i zachowanie zgodności, biblioteki te stosują "wersjonowanie symboli". Polega to na zakazie modyfikowania nagłówków funkcji i nakazie dodawania kolejnych numerów przy nazwach funkcji których nagłówki lub symantyka ulega zmiania.
Za podstawowy system pakietów został uznany pewien podzbiór funkcjonalności RPM'a w wersji 3. Systemy nie wykorzystujące RPM'a za swój natywny system pakietów, powinny umożliwić - przy pomocy dodatkowych narzędzi - zainstalowanie oprogramowania z RPM'a.
LSB powołuje się na FHS (Filesystem Hierarchy Standard) w kwestii rozmieszczenia danych na dysku.
LSB udostępnia zestaw narzędzi umożliwiających testowanie zgodności systemu oraz aplikacji z LSB. Dostępne są następujące programy:
LSB prowadzi odpłatną certyfikację na zgodność ze standardem.
Linki:
Podstawową motywacją do tworzenia dystrybucji było dołączenie do jądra wielu programów, dzięki którym Linux stawał się zdatny do użycia do naszych celów. Musimy na początek podjąć decyzję, czy akceptujemy tylko programy na licencji otwartej, czy też jakieś komercyjne lub inne licencje. W przypadku tej drugiej możliwe, że nasza dystrybucja stanie się płatna, gdyż licencja wymusi na nas płacenie twórcy oprogramowania.
Różne programy, nawet nazywające się wolnymi, wypuszczane są na różnorodnych licencjach, w których można się pogubić.
Projekt GNU, mający na celu stworzenie otwartego, wolnego systemu operacyjnego (a którego narzędzia wchodzą w skład Linuxów), wraz z FSF (Free Software Foundation) prowadzą klasyfikację licencji (w tym swoich: GPL General Public License, GPL Free Documentation Licence).
Licencja, pierwsze jaki test przechodzi, to czy jest Free Software License. Aby to spełnić musi zapewniać cztery wolności:
Jeśli licencja zapewnia te możliwości jest zaliczaja jako Free Software License. Nie gwarantując tych możliwości, zaliczana jest jako non-free. Np. licencja programu Scilab nie jest FSL, gdyż nie można rozprowadzać płatnie programu z własnymi poprawkami (niejako oczekując opłaty od własnych poprawek).
Jeśli licencja jest Free Software License, może się ubiegać o status GPL-compatible, czyli zgodną z licencją GPL (sztandarową licencją FSF). Zgodność licencji oznacza, że możesz załączać do swojego programu programu i moduły wydane na licencji GPL i dalej rozprowadzać pod swoją licencją.
Jak widać z powyższych rozważań, bez problemu możemy załączać, nawet do komercyjnej dystrybucji, programy objęte licencją zaliczoną jako Free Software License. Z drugiej strony, załączając tylko takie programy, możemy naszą dystrybucję również objąć jakąś podobną licencją. Uzywanie produktów z inną licencją wymaga uwagi.
Zajmijmy się teraz kilkoma klasycznymi programami (typami programów), które mogą się znaleźć w dystrybucji:
Na każdym punkcie powyższej listy powinniśmy, tworząc dystrybucję, wybrać czy załączamy odpowiednie narzędzia i jakie - nieraz jest kilka do wyboru. W przypadku dystrybucji dla wąskiego grona osób, pewnie się pokierujemy ich preferencjami. W dystrybucji dla mas... pewnie tą, co nam się wyda lepsza.
Mnogość programów które załączymy do naszej dystrybucji szybko przyprawią nas o ból głowy i, instalowane tak po prostu szybko zrobią duży śmietnik, który nie będziemy mogli opanować. Opanowaniu tego bałaganu służą pakiety.
Pakiet to po prostu
Innymi słowy, wraz z samym programem (biblioteką, dokumentacją) zamieszczamy parę dodatkowych informacji:
Za pomocą mechanizmu wymagań (ang. dependencies) tworzymy sieć zależności, które m.in.:
Jedną z decyzji, które też powinniśmy podjąć, jest stopień rozdrobnienia pakietów. Dla przykładu: w dystrybucji PLD przyjęto założenie, że jeśli tylko się da, dzielimy program na podpakiety. Z jednej strony powoduje to, że oszczędzamy na wielkości systemu: zainstalowane na komputerze jest tylko to, co jest aktualnie potrzebne. Z drugiej strony, przy takim rozwiązaniu, urasta znacznie liczba pakietów i komplikuje się sieć zależności. Alternatywą jest łączenie mniejszych pakietów w większe - zmniejsza to liczbę pakietów, ale nieraz będziemy mieli niepotrzebne oprogramowanie zainstalowane na komputerze.
Drugą decyzją jest to, czy preferujemy rozprowadzanie pakietów w formie źródeł czy skompilowanej. Pakiety skompilowane nie wymagają instalacji (przez co się je szybciej instaluje) i są prostsze w instalacji, lecz za to są kompilacja na architekturę docelowego użytkownika na jego maszynie nieraz zwiększa efektywność.
Oprócz samej idei pakietów, oraz po ustaleniu formatu pakietu (który m.in. zawiera, jakie informacje są przechowywane w pakiecie), potrzebujemy jeszcze programu, który będzie rozumiał pakiety, potrafił je zainstalować, informować użytkownika o zależnościach. Taki program to menedżer pakietów.
Dostępnych jest wiele gotowych rozwiązań pakietowych, każdy ma swoje wady i zalety. Zapewne, tworząc dystrybucję, nie będziemy tworzyć nowego systemu pakietów, lecz wesprzemy się którymś z instniejących.
Tworzenie własnego systemu pakietów ma oczywiście parę zalet:
Wad, ze względu też na mnogość różnych systemów pakietów na rynku, jest chyba więcej niż zalet:
Tak więc pora na przegląd kilku najbardziej popularnych systemów pakietów. Następie omówimy systemy wspomagające wiele systemów pakietów, jak np. autopackage.
RPM, czyli RPM Package ManagerRPM Package Manager, dawniej RedHat Package Manager, był pierwotnie rozwijany w dystrybucji RedHat, teraz jest najbardziej popularnym systemem pakietów, uznany przez Linux Standard Base za podstawę. Używany obecnie m.in. w: Fedora Core, SuSe, Auroxa, PLD. Trochę już mieliśmy okazji go poznać przy okazji laboratorium. Podstawowe cechy: |
Z zalet można wymienić:
Bez wad też się nie obejdzie:
Także RPMy są zazwyczaj używane w dystrybucjach zarówno dla mniej jak i bardziej zaawansowanych użytkowników, głównie w dystrybucjach biurkowych i programistycznych (na stacje robocze).
System pakietów Debiana, Dpkg, który również jest używany w kilku innych dystrybucjach, np. Knoppixie, jest bardzo zbliżony ideą do RPMów.
Trochę różni się architektura rozwiązań: program dpkg, i jego pomocnicze skrypty, jest narzędziem dość niskopoziomowym: potrafi rozpakować i zainstalować paczkę, sprawdzić czy zależności się zgadzają, odinstalować paczkę. Jest to program przeznaczony do użycia w bardziej wysokopoziomych narzędziach, jak APT, opisany w rozdziale dotyczącym systemów aktualizacji - sam w sobie jest dość ubogi.
O samym Dpkg można powiedzieć trochę:
Jednak podstawową zaletą jest istnienie bardzo dobrego programu APT, który jest uznawany za jedną z podstawowych zalet Debiana i dystrybucji pochodnych. APT jest opisany w rozdziale dotyczącym systemów aktualizacji.
Slackware w standardowym założeniu nie przejmuje się zależnościami między pakietami. Pakiet to po prostu spakowana paczka .tgz
,
która może posiadać skrypt doinst.sh
, który w razie czego wysypie się, jak nie będzie miał potrzebnych programów czy bibliotek. Proste
programy: installpkg
, updatepkg
, removepkg
to instalacja, aktualizacja i usunięcie takiego pakietu.
Paczka Slackware'owa może jednak zawierać pewne informacje o zależnościach w osobnych plikach, potrafią sobie z nim poradzić bardziej
wysokopoziomowe narzędzia, jak np. slapt-get
. Zostały one opisane w rozdziale o aktualizacjach.
Mechanizm Portage jest jednym z najbardziej złożonych mechanizmów zarządzania pakietami - ze szczególnym naciskiem na pakiety źródłowe (ale bez ograniczenia możliwości w pracy z pakietami binarnymi i pakietami języków, gdzie pojęcie źródeł się zaciera).
Mechanizm portage realizuje następujące zadania:
Flagi USE to sedno tych "raz zdefiniowanych preferencji użytkownika". Przykład flag USE to:
Autopackage jest mechanizmem obsługującym pakietów dostarczonych w pliku o rozszerzeniu ".package".
Zakłada on:
Jeśli nasza dystrybucja jest przeznaczona dla dużej liczby użytkowników na świecie, musimy opracować system rozprowadzania tejże dystrybucji, pakietów oraz aktualizacji do pakietów. W obecnym świecie Linuxowym popularne są następujące metody (lub, od drugiej strony patrząc, są to sposoby otrzymania Linuxa ;) ):
W dodatku, oczywiście, powinniśmy stworzyć dokumentację do naszego Linuxa - opis instalacji, konfiguracji itd.
Jak już zostało powiedziane, pakiety z oprogramowaniem zawierają numer wersji, menedżer pakietów potrafi zaktualizowac pakiety. Naszym systemem rozprowadzania, prawdopobodnie za pomocą serwerów FTP, rozprowadzamy aktualizacje do pakietów. Szybko jednak się okaże ręczne instalowanie aktualizacji niewygodne, bo:
W związku jest potrzeba zrobienia mniej lub bardziej automatycznego programu aktualizującego. Program ten powinien potrafić:
Poniżej omówimy kilka istniających programów aktualizujących - być może chcemy któryś z nich wybrać:
|
apt-get
..tgz
, niektóre z nich mogą zawierać pliki informujące o zależnościach. Istnieją
programy pod Slackware, potrafiące obsługiwać te zależności i przeprowadzać automatyczne aktualizacje. Tymi programami są np. slapt-get, starający
się emulować APTa, oraz slackpkg czy swaret. Te programy, poza przeprowadzaniem aktualizacji i próbą rozwiązywania zależności,
tworzą również wygodny interfejs użytkownika do Slackware'owego systemu pakietów (programów installpkg, updatepkg itd).Jeśli robimy Linuxa nie na kilka komputerów tylko, powinniśmy stworzyć system instalacji. Instalacje Linuxów można robić na wiele sposobów:
Wybór ostatni jest oczywiście tylko dla zaawansowanych użytkowników, gdy nasz system będzie na niewielu komputerach (np. system dla klastrów obliczeniowych).
Instalator powinien:
Narzędzie do partycjonowania dysku służy do utworzenia partycji dla Linuxa (właściwej i swap, być może też innych, jak użytkownik sobie zażyczy) oraz do modyfikacji istniejących partycji (np. Windowsowej). Jeśli nasza dystrybucja jest dla początkujących użytkowników, powinien on tłumaczyć wszystko co robi i nie pozwolić bez wielu ostrzeżeń nic wykasować. Dla zaawansowanych, powinien udostępniać wiele opcji.
Boot manager to program, który znajduje się w Master Boot Record na dysku, czyli tam, gdzie komputer sięga, szukając systemu operacyjnego. Boot manager uruchamia sie, czyta swój plik konfiguracyjny, a następnie daje użytkownikowi możliwość wyboru systemu operacyjnego, który będzie uruchamiany. Daje to możliwość współistnienia wielu jąder Linuxa oraz Linuxa i innych systemów operacyjnych, np. Windows. Po wyborze program ładuje boot record wybranego systemu i wykonuje zwykły skok do początku kodu odpowiedniego miejsca w tym kodzie, uruchamiając system. System nie widzi wogóle, że był uruchomiony przez boot-loadera.
Popularnymi boot managerami dostępnymi z Linuxami są LILO oraz Grub.
/etc/grub.conf
i jądra do załadowania. Przez obsługę wielu systemów plików,
jest duży dzięki czemu wymaga dwóch stopni ładowania: stage 1 ładuje, jeśli potrzeba, stage 1.5 która to dopiero
ładuje właściwego Grub-a, czyli stage 2. Aktualnie Grub przestał być rozwijany, kosztem postania Grub2. Dla naszej dystrybucji pewnie będziemy chcieli wybrać standardowy i obsługiwane systemy plików. Systemy plików były już omawiane, więc tu nie będziemy się nad nimi rozwodzić.
Pytanie, które sobie powinniśmy postawić też, to to, w jaki sposób nasza dystrybucja będzie się rozwijać. Różne dystrybucje Linuxa stosują kilka różnych metod:
Tworzenie dystrybucji - to nie jest takie trudne! Linux From ScratchProjekt Linux From Scratch oferuje możliwość zbudowania własnej dystrybucji linuxa od podstaw, z samych źródeł programów dostępnych w sieci. LFS jest de facto książką "jak to zrobić". W wersji "podstawowej" daje nam możliwość zbudowania własnej dystrybucji na świeżej, czystej partycji. Na stronie LFS dostępnę są też "dodatki" do tej książki, umożliwiające m.in.:
|
Tworzenie własnej dystrybucji, poza zaspokojeniem potrzeb wynikających z Pytania 1 i ogólnej motywacji do tworzenia dystrybucji, ponadto pozwala nam (wg autorów LFS):
Rozpoczynając tworzenie własnej dystrybucji wg. LFS potrzebujemy:
Robiąc własnego Linuxa, w wielkim skrócie należy dokonać:
bootscripts
)Oczywiście dalej nasz system będzie wymagał wiele pracy, zainstalowania potrzebnych narzędzi do pracy itd... ale działa!
Mając już za sobą teoretyczną drogę prowadzącą do stworzenia dystrybucji, pora przyjrzeć się paru najbardziej popularnym dystrybucjom, zastanowić się jakie decyzje oni podjeli, dla kogo są one przeznaczone, oraz je porównać.
Jeśli ktoś zastanawia się, jaką dystrybucję wybrać, polecamy Linux Distribution Chooser oraz porównanie dystrybucji Linuxa na Wikipedii.
Mandriva LinuxTrzy słowa o historiiZa Wikipedią:Dystrybucja stworzona w 1998 r. Początkowo był to zbiór pakietów na Red Hat Linux, później usamodzielniła się i rozwinęła. Przez pewien czas firma (wówczas Mandrakesoft) balansowała na krawędzi bankructwa, ale wyszła z tego obronna ręką, w czym duża zasługa modelu biznesowego, konsekwentnie opartego o lojalność wobec społeczności FLOSS. 24 stycznia 2005 r. poinformowano, że Mandrakesoft łączy się z brazylijską firmą Conectiva a 7 kwietnia tego roku o zmianie nazwy z Mandrakesoft na Mandriva i zmianie nazwy dystrybucji na z Mandrakelinux na Mandriva Linux. Zmiana nazwy wiąże się z procesem wytoczonym przez wydawcę komiksu Mandrake the Magician, który zarzuca dystrybutorowi naruszenie praw autorskich przez zapożyczenie nazwy i "magiczne" skojarzenia graficzne. |
Jest to:
Fedora Core, następca RedHat Linuxa |
W roku 2003 Red Hat Inc., firma zajmująca się dystrybucją otwartą i darmową RedHat, zmieniła strategię działania tworząc, w dużej mierze niezależną, dystrybucję otwartą Fedora Core, oraz własną, komercyjną, Red Hat Enterprise Linux. Od tego czasu wydane zostały 4 wydania Fedory, ostatnia wersja została wydana 13 czerwca 2005.
W związku z tym dystrybucja spełnia:
Dystrybucja nastawiona jest na jak najnowsze pakiety, nie stroni od nowinek, graficznych bajerów, w podstawowej instalacji zajmuje 2-3GB.
Dystrybucja wydawana jest co kilka miesięcy, rozwijana przez społeczność internetową.
Fedora przejęła całego RPMa, z dobrodziejstwem inwentarza, w tym narzędziami YUM i Up2date. Daje to bardzo dużą różnorodność pakietów do instalacji, ale też pewien czasem potrafi powodować śmietnik w zależnościach.
Fedora posiada, przy instalacji, do wyboru wersję Desktop, Server oraz oczywiście custom. Posiada do instalacji:
Oczywiście, wersje Desktop i Server standardowo posiadają odpowiedni, logiczny podzbiór powyższych.
Jak widać owa dystrybucja jest ciężka, przeznaczona do wszystkiego, w tym dla studentów ;).
Używam fedory od wielu lat... tak z moich obserwacji:
GentooTrzy słowa o historiiPan Daniel Robbins miał dużo czasu. Dlatego lubił modyfikować i kombinować w wielu dystrybucjach. Początkowo jego ofiarą był Debian, ale po pownym czasie pan Daniel Robbins zaczął uczestniczyć w tworzeniu dystrybucji Stampede Linux w którym tworzył system pakietów. Z niepodanych do publicznej wiadomości powodów opuścił zespół i stwierdził, że zrobi własną dystrybucję. Tak się narodził Enoch. Miał to być bardzo szybki system z całkowicie zautomatyzowanym instalowaniem pakietów. System zaczął się rozwijać, po pewnym czasie było 10 developerów. Jak już przestał przypominać pierwowzór nazwano go Gentoo linux. Na szczęście Daniel kupił sobie nową szybką maszynę, ale błąd chipsetu spowodował, że wieszała się ona permanentnie. Rozwój Gentoo przystanął, a Daniels (niewiadomo na którym komputerze) przestawił się na FreeBSD. Spodobało mu się to co zobaczył - w szczególności system "Portów". Po pewnym czasie powrócił do tworzenia Gentoo i przeprojektował system pakietów i napisał go na nowo - tak powstał Portage. |
Jest to:
Jest to system bardzo elastyczny. Pozwala, by system działał optymalnie zarówno przy konfiguracji bardzo precyzyjnej i nastawionej na konkretne zastosowania, oraz jako system utrzymany w stanie "studenckim" (wszystko).
Pozwala utrzymywać zarówno aplikacje w wersji jeszcze "rozwojowej", jak i tylko w wersji "bardzo stabilnej".
By ułatwić konfigurację systemu dostępne są różne profile dla wszystkich architektur, które definiują, które pakiety są zdolne pracować w tej konfiguracji (np. dla x86 istnieją w szczególności profile oparte o jądro systemu 2.4.x jak i jądro 2.6.x)
Zdecydowana większość oprogramowania rozpowszechniana jest w postaci kodów źródłowych, aby umożliwić dokładne dostosowanie oprogramowania do potrzeb (flagi podczas kompilacji). W ten sposób powstaje także dynamiczny system zależności.
Jedyną wadą systemu jest stosunkowo długi czas instalacji pakietów, ze względu na to, że są one w większości kompilowane. Jednak można robić to zbiorczo i bezobsługowo- np. w nocy, co w większości przypadków wystarcza.
Drugą (pomijalnie małą) wadą jest brak instalatora graficznego, który czyni dystrybucję nieosiągalną dla wielu użytkowników - którzy z powodzeniem mogli by z niej korzystać. Trwają nad nim intensywne prace.
System charakteryzują bardzo częste aktualizacje pakietów (około 500 pakietów jest aktualizowanych w ciągu doby). Emerge zawierające najpopularniejsze programy ukazują się niemal równocześnie z wersjami tych programów. Jednocześnie nie istnieje pojęcie "zainstalowania nowszej wersji Gentoo". System jest utrzymywany aktualnym cały czas (wtedy, gdy chce tego użytkownik).
Systemem pakietów jest oczywiście mechanizm Portage. W systemie można dodatkowo zainstalować (zemergować) narzędzia typu RPM, ale jest to zbędne i może doprowadzić do bałaganu w systemie - jednak jest to czasami konieczne (zadanie II).
Ponad 10000 pakietów w wersjach stabilnych oraz rozwojowych. Prawie wszystko - także programy komercyjne (np. VMware).
Powstaje wiele dystrybucji opartych na Gentoo - w tym wiele LiveCD ze względu na stosunkowo prosty mechanizm tworzenia własnego LiveCD opartego na Gentoo.
DebianTrzy słowa o historiiCytuję za wikipedią:Powstanie Debiana ogłosił 16 sierpnia 1993 r. na grupie comp.os.linux.development Ian Murdock, wówczas student uniwersytetu. Napisał on Manifest Debiana, w którym apelował o stworzenie otwartej dystrybucji w duchu Linuksa i GNU. Nazwa "Debian" powstała z połączenia imion Murdocka i jego dziewczyny (obecnie żony) Debry [1] (jest to portmanteau). Dystrybucja ta została zbudowana na podstawie SLS. Wśród założeń Debiana było między innymi to, że będzie zawierał on najbardziej aktualne wersje oprogramowania. Debian powoli rozwijał się i w latach 1994 oraz 1995 - powstały wtedy pierwsze wersje 0.9. Pierwsza wersja 1.x pojawiła się w 1996 roku. Wiosną 1996 roku Bruce Perens zastąpił Iana Murdocka w roli koordynatora projektu. Zainicjował on stworzenie kilku ważnych dokumentów (umowy społecznej wraz z Wytycznymi Dotyczącymi Wolnego Oprogramowania) oraz instytucji prawnej (SPI), a także poprowadził projekt aż do wersji ELF/libc5 (1.1, 1.2, 1.3). |
Jest to:
Systemem pakietów debiana są pliki DEB
Obsługują je
następujące narzędzia (zarządcy pakietów):
Podstawowym instalatorem pakietów jest dpkg - instalator niskiego poziomu obsługiwany z linii poleceń, lub jego bardziej zaawansowany odpowiednik - APT, w którym wiele czynności jest zautomatyzowanych (pobieranie pakietów, rozwiązywanie zależności między pakietami). Do wygodniejszego zarządzania pakietami, Debian dysponuje nakładkami na powyższe narzędzia - dselect oraz nowszy - aptitude.
Z dystrybucji wywodzi się wiele innych dystrybucji:
Nazwy kolejnych edycji dystrybucji pochodzą od imion postaci z filmu Toy Story:
PLD Linux Distribution(skrót rekurencyjny)Trzy słowa o historiiza dokumentacją PLD:Wraz ze wzrostem zainteresowania Linuksem w Polsce, rosły naciski na stworzenie polskiej dystrybucji tego systemu. Niemal wszyscy jej chcieli, a niektórzy nawet mówili, że już takową robią. Nic jednak z tego nie wynikało. Wreszcie, w lipcu 1998, zawiązał się projekt mający na celu stworzenie polskiej dystrybucji Linuxa. Projekt PLD, czyli Polish(ed) Linux Distribution, był na tyle dobrze zorganizowany, by przetrwać trudne początki. Nie obeszło się oczywiście bez burzliwych dyskusji na temat kształtu dystrybucji, doboru oprogramowania jak również wersji jądra, na której projekt ma być rozwijany. W efekcie zdecydowano się prowadzić równolegle dwa projekty. Pierwszy został nazwany PLD-devel i był forpocztą dla obecnego PLD-stable. Miała to być pierwsza dystrybucja Linuxa zgodna z nowym, promowanym przez OpenGroup, standardem - Unix98. Równolegle druga grupa pracowała nad podwalinami właściwej PLD-stable. 22 listopada 2002 roku światło dzienne ujrzała pierwsza stabilna wersja dystrybucji PLD Linux Distribution 1.0 (Ra). Jeszcze w czasie jej stabilizacji rozpoczęły się prace nad kolejną wersją. Twórcy projektu zakładali uniwersalność PLD, która pozwalałaby na korzystanie z dystrybucji przez użytkowników z całego świata, jednak pojawiły się obawy, że nazwa Polish(ed) Linux Distribution odstraszy potencjalnych odbiorców z innych krajów. Postanowiono, że zmieniona zostanie nazwa projektu. Pozostawiono charakterystyczny skrót "PLD" w niezmienionej postaci, zmieniono zaś jego rozwinięcie - nazwa "PLD" stała się rekurencyjnym skrótem od PLD Linux Distribution. |
Jest to:
PLD Linux kładzie nacisk na wsparcie nowoczesnych technologii sieciowych (IPv6), bezpieczeństwo (PAM, GSSAPI, TLS/SSL) oraz elastyczne używanie różnych języków naturalnych do komunikacji z użytkownikiem.
PLD wykorzystuje system pakietów RPM. Jest ona przystosowana dodatkowo do łatwego uaktualniania za pomocą narzędzia poldek.
Jest to:
W związku z tym ta dystrybucja spełnia:
Jak już było omówione wcześniej, Slackware nie posiada rozbudowanego systemu pakietów z zależnościami - paczkami są tutaj archiwa .tgz
, które
ewentualnie mogą zawierać skrypt instalacyjny. Proste narzędzia installpkg
, updatepkg
i removepkg
zapewniają podstawową
obsługe paczek; istnieją narzędzia wyższego poziomu, jak np. slapt-get
umożliwiające obsługę zależności i automatyczne aktualizacje.
Dystrybucja ta, stosując zasadę KISS, podchodzi dość minimalistycznie do dostarczonych programów. Programy dzielą się na podstawowe, instalowane zazwyczaj z systemem, oraz dodatki. W wersji najnowszej, tj. 10.2, dla przykładu:
W powyższych przykładach "numerkowych" widać, że Slackware nastawione jest na starsze, stabilne wersje programów.
KnoppixTrzy słowa o historiiKnoppix to dystrybucja utworzona na bazie Debiana przez niemieckiego inżyniera Klausa Knoppera, który chciał mieć dystrybucję na płycie CD, która będzie działała na większości komputerów - bez konfiguracji.
Obecnie istnieje wersja 4.1 dystrybucji na płycie CD (zawierająca 2GB oprogramowania) oraz na płycie DVD (9 GB oprogramowania) |
Jest to:
Linuxy komercyjne, na przykładzie Red Hat Enterprise Linux |
RedHat jest jedną z najstarszych i bardzo zasłużonych firm w branży Linuxów. Dawniejsza, otwarta i darmowa, dystrybucja Red Hat, miała opcją "komercyjną", dającą możliwość wsparcia technicznego i dostosowania do potrzeb odbiorcy. W roku 2003 firma RedHat zmieniła strategię, tworząc dystrybucję Fedora Core (omówioną wcześniej), otwartą i tworzoną przez społeczność, oraz komercyjną Red Hat Enterprise Linux.
Trudno dalej mówić o RHEL bez opowiedzenia, że występuje on w czterech edycjach:
aspekt | AS duże serwery | ES mniejsze serwery | WS większe stacje robocze | Desktop mniejsze stacje robocze |
---|---|---|---|---|
przeznaczenie | duże serwery o krytycznym znaczeniu (24x7), wielkie bazy danych | mniejsze serwery: WWW, FTP, CUPS, serwer plików | obliczenia, stacja robocza dla zaawansowanych użytkowników | biurkowa i programisty |
architektury | wiele: x86, Itanium, różne IBMa itd. | x86, Itanium | x86, Itanium | x86 (bez SMP) |
Więc, standardowo, rozwiązania przeznaczone dla serwerów są bezpieczne, wydajne, ale niekoniecznie user-friendly. Dystrybucja WS również stawia nacisk bardziej na wydajność niż przyjazność; dystrybucja Desktop jest typową dystrybucją biurkową.
Ponadto RedHat oferuje, do zakupionych dystrybucji, pakiety pomocowe:
Ponadto RedHat wypuszcza specjalną, po niskiej cenie, wersję Academic swojego RHEL, w wydaniach Server i Desktop.
Dystrybucja | Opis |
---|---|
ClusterKnoppix | Klaster od zaraz- bootujesz jeden komputer z płyty. Pozostałe z sieci... i masz działający klaster. Wykorzystuje OpenMotif |
Quantian | Quantian jest naukową odmianą Knoppiksa. Zawiera ponad 500 MB oprogramowania naukowego, w tym Scilab, OpenDX czy język obliczeń statystycznych R. W najnowszej wersji Quantian poszerzył się o obsługę protokołu comedi, służącego do współpracy ze sprzętem pomiarowym, system informacji geograficznej GRASS, LyX itd. Ma możliwość pracy w klastrach - co jest niezwykle korzystne przy złożonych obliczeniach matematycznych. |
Freesco | Freesco jest dystrybucją Linuksa stworzoną jako darmowa alternatywa dla drogich sprzętowych routerów Cisco (nazwa: freesco = free + cisco). Bootuje się z jednej dyskietki. |
Jusix | Jusix to niewielka polska dystrybucja Linuksa uruchamiana z płyty CD. Dystrybucja ukierunkowana na odtwarzanie multimediów. Pliki wideo - avi, mpeg, divx, oraz muzyka - odtwarzanie plików mp3. |
Kamix | Kamix to polska minidystrybucja Linuksa mieszcząca się w całości na jednej dyskietce. Zawiera moduły do najpopularniejszych kart sieciowych oraz programy klienckie SSH, Telnet i FTP. Dostępny jest również program ułatwiający skonfigurowanie urządzeń i zapisanie ustawień. Posiada również prosty edytor tekstowy E3 i odtwarzacz płyt AudioCD. |
NNW - Nasza Nowa Dystrybucji (druga nazwa: Niestety Nie Działa) | Gotowy router do neostrady i SDI. Zawiera prosty serwer WWW i SSH oraz zaporę sieciową. Obsługuje modemy USB. |
Linux-EduCD | Knoppix edukacyjny na potrzeby polskiego szkolnictwa |