ABS - The Arch Build System (Polski)

From ArchWiki

Jump to: navigation, search
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.

Personal tools