ABS - The Arch Build System (Polski)
From ArchWiki
i18n |
---|
Česky |
English |
繁體中文 |
Polski |
Русский |
Contents |
Wprowadzenie
Arch Build System, w skrócie ABS, jest używany do:
- tworzenia nowych pakietów (programów), które nie są jeszcze dostępne,
- dostosowywania istniejących pakietów do własnych potrzeb poprzez włączanie, bądź wyłączanie różnych opcji,
- przebudowywania całego systemu używając własnych flag kompilatora.
Znajomość ABS nie jest niezbędna przy korzystaniu z systemu Arch Linux, jednak w wielu przypadkach może być bardzo przydatna.
To HOWTO zawiera jedynie przegląd informacji na temat ABS oraz pakietów Archa. Jeśli chcesz dowiedzieć się więcej, zajrzyj do manuala.
Instalowanie pakietów
Aby zacząć używać ABS, musisz najpierw zainstalować programy abs, cvsup oraz wget, poprzez wydanie komendy:
pacman -Sy cvsup wget abs
Alternatywnie, można skorzystać z potencjalnie szybszego i napisanego w języku C klonu programu cvsup, csup. Instalowany przez:
pacman -Sy csup
Zobacz artykuł Pacman (Polski), aby uzyskać więcej informacji na temat instalowania pakietów.
Czym jest pakiet?
Pakiet, czyli plik zawierający program, zwykle nazywa się foo.pkg.tar.gz. W rzeczywistości to nic więcej jak skompresowane archiwum tar, zawierające:
- Pliki do zainstalowania.
- .PKGINFO ─ plik zawierający dane, które pacman wykorzystuje do zarządzania pakietami, zależnościami, itp.
- .FILELIST ─ lista wszystkich plików w archiwum. Jest używana do odinstalowywania programów oraz sprawdzania czy mogą wystąpić konflikty pomiędzy plikami.
- .INSTALL ─ plik jest używany do wykonania poleceń po instalacji/aktualizacji/usunięciu programu (plik jest używany tylko, gdy jest odpowiedni wpis w PKGBUILD).
Czym jest plik PKGBUILD i co zawiera?
Plik PKGBUILD zawiera metadane dotyczące pakietu. Jest to zwykły plik tekstowy, którego przykład znajduje się poniżej:
# $Id: PKGBUILD,v 1.12 2003/11/06 08:26:13 dorphell Exp $ # Maintainer: judd <jvinet@zeroflux.org> # Contributor: Judd Vinet <jvinet@zeroflux.org> pkgname=foo pkgver=0.99 # note: if the pkgver had been '0.99-10' then use an underscore. like '0.99_10' pkgrel=1 pkgdesc="short description of foo" arch=(i686 x86_64) url="http://www.foo.org" groups= provides= depends=('qt' 'python') makedepends=('guile') conflicts=('yafoo') replaces=('mffoo') backup=('etc/foo/foo.conf') install=('foo.install') source=(http://www.foo.org/download/$pkgname-$pkgver.tar.gz) md5sums=('2c0cca3ef6330a187c6ef4fe41ecaa4d35175bee593a7cc7d6205584a94d8625') build() { cd $startdir/src/$pkgname-$pkgver ./configure --prefix=/usr make || return 1 make prefix=$startdir/pkg/usr install }
Wyjaśnienie poszczególnych pól:
- # text ─ komentarze.
- # $Id: PKGBUILD,v ... ─ tag cvs dla tego pakietu.
- # Maintainer ─ osoba opiekująca się paczką w oficjalnym repozytorium.
- # Contributor ─ osoba, która napisała pierwszą wersję pliku PKGBUILD.
- pkgname ─ nazwa pakietu.
- pkgver ─ wersja.
- pkgrel ─ numer wydania pakietu dla Archa. Różni się od wersji pakietu i zmienia wraz z edycją pliku PKGBUILD. Dzieje się to z kilku powodów, np. gdy pakiet zostaje przekompilowany z innymi opcjami.
- pkgdesc ─ krótki opis danego pakietu. Opis ten jest widoczny, gdy przeglądasz bazę pakietów.
- arch ─ architektura, dla której pakiet został zbudowany.
- url ─ strona domowa programu.
- groups ─ używane do grupowania pakietów; przykładowo, gdy próbujesz zainstalować KDE, instalowane są wszystkie (bądź wybrane) pakiety z grupy kde.
- provides ─ używane gdy jeden pakiet dostarcza inny, przykładowo kernel-scsi dostarcza kernel
- depends ─ określa wszelkie zależności dla danego programu, czyli inne pakiety, które są wymagane do jego poprawnego działania
- makedepends ─ określa zależności, które są wymagane jedynie do skompilowania pakietu
- conflicts ─ określa pakiety, które nie mogą współistnieć w systemie razem z danym.
- replaces ─ określa pakiet, który zostanie zastąpiony.
- backup ─ określa pliki, których kopie zapasowe zostaną stworzone podczas instalacji pakietu.
- install ─ określa specjalny skryp instalacyjny, który może być dołączony do paczki i wykonywany w procesie instalacji.
- source ─ określa skąd mają zostać pobrane źródła programu.
- md5sums ─ suma md5 źródeł, konieczna do sprawdzenia integralności.
Wyjaśnienie działania funkcji build(), służącej to stworzenia paczki: Jak widać, plik PKGBUILD zawiera wszystkie informacje, które mogą być potrzebne opiekunowi pakietu. Poza tym, są również pliki instalacyjne, określane w PKGBUILD. Przykładowy wygląda następująco:
post_install() { /bin/true } post_upgrade() { /bin/true } pre_remove() { /bin/true } op=$1 shift $op "$@"
Objaśnienie:
- post_install ─ ten skrypt jest uruchamiany zaraz po zainstalowaniu plików; przyjmuje jeden argument ─ wersję pakietu
- post_upgrade ─ ten skrypt jest uruchamiany po zaktualizowaniu wszystkich plików; przyjmuje dwa argumenty:
- wersję nowego pakietu
- wersję starego pakietu
- pre_remove ─ ten skrypt jest uruchamiany zaraz przed usunięciem plików (przykładowo może zatrzymać działanie demona systemowego i przyjmuje jeden argument ─ wersję pakietu
Końcowe instrukcje są potrzebne w każdym pliku instalacyjnym do poprawnego działania.