ABS - The Arch Build System (Polski)
From ArchWiki
| i18n |
|---|
| Česky |
| English |
| 繁體中文 |
| Polski |
| Русский |
Contents |
[edit] 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.
[edit] 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.
[edit] 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).
[edit] 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.