pkgsrc: System pakietów NetBSD Tomasz Luchowski zuntum@NetBSD.org
pkgsrc: System pakietów NetBSD Agenda Informacje ogólne Trochę historii pkgsrc a bezpieczeństwo Gałęzie Przenośność, Buildlink, Package Views Plany na przyszłość pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Oficjalny system pakietów NetBSD Łatwy w użyciu oraz utrzymaniu Przenośny Wsparcie dla bezpieczeństwa Wersja rozwojowa pkgsrc-current, oraz publikowane kwartalnie gałęzie stabilne pkgsrc: System pakietów NetBSD
Dlaczego warto używać systemu pakietów? Konieczność zarządzania ogromną ilością niezależnego oprogramowania Ręczna instalacja – powtarzające się, uciążliwe czynności Problemy przy aktualizacji oprogramowania Może pojawić się konieczność samodzielnego „portowania” aplikacji do naszego systemu operacyjnego Ściągnięcie plików dystrybucyjnych Sprawdzenie sum kontrolnych Instalacja wymaganych pakietów – zależności Rozpakowanie źródeł Zaaplikowanie patch’y Kompilacja Instalacja pkgsrc: System pakietów NetBSD
Proces budowania pakietu check vulnerabilities fetch checksum buildlink, tools, wrapper extract patch install-depends configure build install Ściągnięcie plików dystrybucyjnych Sprawdzenie sum kontrolnych Instalacja wymaganych pakietów – zależności Rozpakowanie źródeł Zaaplikowanie patch’y Kompilacja Instalacja pkgsrc: System pakietów NetBSD
Dlaczego warto używać pkgsrc? Dostępne dla wielu systemów operacyjnych Łatwe budowanie pakietów ze źródeł oraz utworzenie pakietu binarnego Wsparcie dla bezpieczeństwa Możliwość kompilacji z konta zwykłego użytkownika Dostępne na licencji BSD Wygodne skrypty startowe rc.d Spójna obsługa plików konfiguracyjnych (PKG_SYSCONFBASE) .include „../../bsd.pkg.mk” pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Historia Sierpień 1994 – FreeBSD (ports) Czerwiec 1996 – OpenBSD (ports) Sierpień 1997 – NetBSD (pkgsrc) W każdym z tych systemów dokonano wielu zmian Początkowo planowano zintegrować modyfikacje z powrotem do ports FreeBSD pkgsrc: System pakietów NetBSD
Wiele systemów pakietów… Swobodne dostosowanie do własnych potrzeb Konieczność duplikowania tej samej pracy Zmiany nie są synchronizowane (dane z 2003) FreeBSD ports: ~8500 pakietów OpenBSD ports: ~1800 pakietów NetBSD pkgsrc: ~3700 pakietów Inne projekty: OpenPackages, OpenPKG pkgsrc: System pakietów NetBSD
pkgsrc a bezpieczeństwo (1) Utrzymywana jest baza danych z listą vulnerabilities Przy próbie kompilacji pakietu przeglądana w poszukiwaniu problemów bezpieczeństwa Sprawdzanie pakietów zainstalowanych w systemie audit-packages Aktualizacja bazy download-vulnerability-list pkgsrc: System pakietów NetBSD
pkgsrc a bezpieczeństwo (2) Można wykorzystać system pakietów do łatania dziur w bezpieczeństwie systemu operacyjnego Możliwe jest przezroczyste dla użytkowników aktualizowanie programów Podpisywane pakiety binarne (gpg) pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD just-in-time su(1) Pakiety możemy kompilować z konta zwykłego użytkownika Dodatkowe przywileje potrzebne jedynie na czas instalacji Aby nie wprowadzać hasła z klawiatury można użyć narzędzia typu sudo pkgsrc: System pakietów NetBSD
Wspierane platformy systemowe NetBSD Sierpień 1997 Solaris Marzec 1999 Linux Czerwiec 1999 Mac OS X Październik 2001 FreeBSD Listopad 2002 OpenBSD Listopad 2002 IRIX Grudzień 2002 BSD/OS Grudzień 2003 AIX Grudzień 2003 MS Windows Services for UNIX Marzec 2004 pkgsrc: System pakietów NetBSD
Przenośność - problemy PLIST: manuale (gz) Współdzielone biblioteki – różna ilość suffixów ncurses pkgsrc: System pakietów NetBSD
Przenośność - rozwiązania ${ECHO}, ${TOUCH}, ${CAT} REPLACE_PERL pthread.buildlink3.mk java-vm.mk: PKG_JVM_DEFAULT, USE_JAVA Buildlink! pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD bootstrap-pkgsrc (1) Zestaw narzędzi, pozwalający używać pkgsrc na platformie innej niż NetBSD Zawiera: pkg_install, bmake, ftp, mtree, pax Zastąpiło rozwijany kiedyś projekt Zoularis pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD bootstrap-pkgsrc (2) Dla niektórych platform dostępne są binaria: gzip -c -d bootstrap-pkgsrc-IRIX64-6.5-mips-20040912.tar.gz \ | (cd /; tar -xpf -) pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD bootstrap-pkgsrc (3) Kompilacja oraz instalacja ze źródeł: cd pkgsrc/bootstrap ./bootstrap pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD bootstrap-pkgsrc (4) Używamy komendy bmake zamiast make Należy dodać /usr/pkg/bin do PATH Należy dodać /usr/pkg/man do MANPATH pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Buildlink Ścisła kontrola zależności Nagłówki użyte w czasie kompilacji Zwiększa przenośność pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Buildlink 1 Katalog tymczasowy wypełniany linkami symbolicznymi w czasie budowania pakietu – nagłówki, biblioteki ${PREFIX} -> ${WRKDIR}/.buildlink Konieczność usuwania referencji do BUILDLINK_DIR pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Buildlink 2 Wrapper CC, AS Podmiana ścieżek pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Buildlink 3 Zaprojektowany aby zwiększyć przenośność Wsparcie dla Package Views Skrypt CC symulujący GCC Podmienia argumenty, ścieżki Możliwość używania „systemowe” kompilatora – SUN PRO, MIPS PRO WRKDIR/{bin,include,lib} Linki symboliczne Silniejsze sprawdzanie zależności (DEPENDS) pkgsrc: System pakietów NetBSD
Oprogramowanie systemowe czy z pakietu? Różnice w standardowo dostępnym oprogramowaniu pomiędzy systemami operacyjnymi PREFER_PKGSRC PREFER_NATIVE Podajemy: nazwa_pakietu | YES | NO pkgsrc: System pakietów NetBSD
Tworzenie pakietów dla pkgsrc Stosunkowo proste i dobrze udokumentowane Szczegółowa dokumentacja w pliku Packages.txt Można wykorzystać narzędzie url2pkg pkgsrc: System pakietów NetBSD
pkgsrc-wip (work in progress) Projekt utrzymywany na SourceForge Każda chętna osoba może otrzymać konto z dostępem do CVS Pakiety po zaakceptowaniu są przenoszone do oficjalnej kolekcji pkgsrc Jest to sugerowana metoda zgłaszania własnych pakietów pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Gałęzie pkgsrc Kwartalnie pkgsrc jest zamrażane, dokonuje się stabilizacji i tworzona jest nowa gałąź Obecnie najnowsze wydanie – pkgsrc-2004Q3 Wersja rozwojowa – pkgsrc-current (HEAD) Pull-up’s pkgsrc: System pakietów NetBSD
Gdzie utrzymywane jest pkgsrc? W repozytorium CVS projektu NetBSD Główny serwer - cvs.netbsd.org Dla użytkowników – anoncvs.netbsd.org oraz serwery lustrzane pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Plany na przyszłość Pełne wsparcie dla wszystkich ważniejszych systemów operacyjnych Package Views, dynamic PLIST Bulk builds na platformach różnych od NetBSD pkgsrc: System pakietów NetBSD
pkgsrc: System pakietów NetBSD Linki The NetBSD Project http://www.NetBSD.org/ The NetBSD Packages Collection http://www.pkgsrc.org/ The pkgsrc guide http://www.NetBSD.org/Documentation/pkgsrc/ pkgsrc: System pakietów NetBSD
Pytania? Tomasz Luchowski The NetBSD Project <tomasz@luchowski.com> http://www.luchowski.com/ The NetBSD Project http://www.NetBSD.org/ <zuntum@NetBSD.org> pkgsrc: System pakietów NetBSD