Arch Build System: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Keine Bearbeitungszusammenfassung
(14 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Einführung ==
Das Arch Build System (ABS) wird genutzt um:
Das Arch Build System (ABS) wird genutzt um:


Zeile 51: Zeile 50:
  replaces=('mffoo')
  replaces=('mffoo')
  backup=('etc/foo/foo.conf')
  backup=('etc/foo/foo.conf')
  install=('foo.install')
  install='foo.install'
  source=(http://www.foo.org/download/$pkgname-$pkgver.tar.gz)
  source=(http://www.foo.org/download/$pkgname-$pkgver.tar.gz)
  md5sums=('2c0cca3ef6330a187c6ef4fe41eca')
  md5sums=('2c0cca3ef6330a187c6ef4fe41eca')
Zeile 74: Zeile 73:
* '''pkgver''' : Die Paketversion
* '''pkgver''' : Die Paketversion
* '''pkgrel''' : Die Releasenummer des Arch Paketes. Wird geändert, wenn das PKGBUILD verändert wurde, sie unterscheided sich also von der Paketversion.
* '''pkgrel''' : Die Releasenummer des Arch Paketes. Wird geändert, wenn das PKGBUILD verändert wurde, sie unterscheided sich also von der Paketversion.
* '''pkgdesc''' : Eine Kurzbeschreibung des Paketes. Du siehst sie, in der [http://www.archlinux.de/?page=Packages Paket Datenbank]
* '''pkgdesc''' : Eine Kurzbeschreibung des Paketes. Du siehst sie in der [http://www.archlinux.de/?page=Packages Paket Datenbank]
* '''arch''' : Die Architekturen, auf denen das Paket kompiliert und getestet wurde, oder 'any' bei plattformunabhängigen Paketen.
* '''arch''' : Die Architekturen, auf denen das Paket kompiliert und getestet wurde, oder 'any' bei plattformunabhängigen Paketen.
* '''url''' : Die Homepage des Programmes
* '''url''' : Die Homepage des Programmes
Zeile 113: Zeile 112:
   ./configure --prefix=/usr
   ./configure --prefix=/usr
   make
   make
}
}


Erklärung:
Erklärung:


* In das Verzeichnis der von ''makepkg'' entpackten Quelltexte wechseln:
* In das Verzeichnis der von ''makepkg'' entpackten Quelltexte wechseln (hier treten in der Praxis oft schon Probleme auf; besser, man schaut nach ob das Verzeichnis wirklich so heißt):
  cd $srcdir/$pkgname-$pkgver
  cd $srcdir/$pkgname-$pkgver


* Konfigurieren des Paketes mit dem Installationsverzeichnis ''/usr'' und unter Umständen weiteren Optionen:
* Konfigurieren des Paketes mit dem Installationsverzeichnis ''/usr'' und unter Umständen weiteren Optionen:
  ./configure --prefix=/usr
  ./configure --prefix=/usr --option1 --option2


Da die meisten Programme davon ausgehen, dass nach /usr/local installiert werden soll, wir unter Arch Linux aber  nach /usr installieren wollen, ist es wichtig, das Prefix zu setzen.
Da die meisten Programme davon ausgehen, dass nach /usr/local installiert werden soll, wir unter Arch Linux aber  nach /usr installieren wollen, ist es wichtig, das Prefix zu setzen.
Zeile 134: Zeile 132:
  make DESTDIR=$pkgdir install
  make DESTDIR=$pkgdir install


Dabei wird das Programm nicht in ''/usr'' sondern in ''$pkgdir/usr'' installiert, sodass [[pacman]] Kontrolle über die Dateien hat!
Dabei wird das Programm nicht in ''/usr'' sondern in ''$pkgdir/usr'' installiert, so dass erst einmal [[makepkg]] und indirekt auch [[pacman]] Kontrolle über die Dateien hat!  
Ob ''DESTDIR'' verwendet wird, hängt vom jeweiligen Programm bzw. dessen Makefile ab. Manchmal muss z.B. auch PREFIX verwendet und entsprechend umgebogen werden.
Ob ''DESTDIR'' verwendet wird, hängt vom jeweiligen Programm bzw. dessen Makefile ab. Manchmal muss z.B. auch PREFIX verwendet und entsprechend umgebogen werden.


Zeile 196: Zeile 194:
{{achtung|Um Schäden am System zu vermeiden, sollten Pakete nie als root erstellt werden!}}
{{achtung|Um Schäden am System zu vermeiden, sollten Pakete nie als root erstellt werden!}}
Pakete werden mit ''makepkg'' erstellt. Dazu muss in das Verzeichnis gewechselt werden, in dem sich das Paket befindet und hier ''makepkg'' ausgeführt werden. Verzeichnisse aus dem ABS-Verzeichnisbaum
Pakete werden mit ''makepkg'' erstellt. Dazu muss in das Verzeichnis gewechselt werden, in dem sich das Paket befindet und hier ''makepkg'' ausgeführt werden. Verzeichnisse aus dem ABS-Verzeichnisbaum
sollten zuvor nach ''/var/abs/local'' kopiert werden und nicht zur Erstellung des Pakets benutzt werden.
sollten zuvor woandershin, zum Beispiel nach ''/var/abs/local'' oder nach ~/paketierung kopiert werden und nicht zur Erstellung des Pakets benutzt werden.
Sind nicht alle Abhängigkeiten zum Bau vorhanden, listet ''makepkg'' diese auf.
 
  cd foo-0.99
~/paketierung/foo/PKGBUILD (und ggf. noch weitere Dateien wie install-files, desktop-files, Patches u.v.m.
 
Sind nicht alle Abhängigkeiten zum Bau vorhanden, listet ''makepkg'' diese auf. ''makepkg -s'' würde versuchen, sie zu installieren. Das funktioniert aber nur, wenn sie in einem Repo vorhanden sind, auf das die Datei [[pacman.conf]] referenziert.
 
  cd ~/paketierung/foo
  makepkg
  makepkg
Jetzt entstehen ein Verzeichnis namens src, und eines namens pkg. In ersterem findet der Paketbau statt in letzerem landen die Dateien, die ins fertige Paket sollen. Im PKGBUILD kann mit $srcdir bzw. $pkgdir darauf zugegriffen werden.
~/paketierung/foo/PKGBUILD
                  src
                  pkg


Das erstellte Paket befindet sich jetzt im selben Verzeichnis und kann mit [[pacman]] installiert werden:
Das erstellte Paket (oder je nach Konfiguration der Variablen PKGDEST in der [[makepkg.conf]] ein Link darauf) befindet sich jetzt im selben Verzeichnis und kann mit [[pacman]] installiert werden:
  pacman -U foo-0.99-x86_64.pkg.tar.gz
  pacman -U foo-0.99-x86_64.pkg.tar.gz


Zeile 212: Zeile 220:
In der Datei ''/etc/makepkg.conf'' werden die Eigenschaften von ''makepkg'' festgelegt. Dabei lassen sich die Standardeinstellungen der Programme verändern, die ''makepkg'' verwendet, um Pakete zu erstellen.
In der Datei ''/etc/makepkg.conf'' werden die Eigenschaften von ''makepkg'' festgelegt. Dabei lassen sich die Standardeinstellungen der Programme verändern, die ''makepkg'' verwendet, um Pakete zu erstellen.
Zu nennen sind dabei die Umgebungsvariablen MAKEFLAGS, CFLAGS und CXXFLAGS, die ''gcc'' und ''make'' beeinflussen.
Zu nennen sind dabei die Umgebungsvariablen MAKEFLAGS, CFLAGS und CXXFLAGS, die ''gcc'' und ''make'' beeinflussen.
==Hinzufügen von Patches==
Hier wird beschrieben wie man einen Patch
den man selbst erstellt oder heruntergeladen hat, in die {{ic|prepare ()}} Funktion einer {{ic|PKGBUILD}} Datei einpflegt.
Als erstes fügt man einen Eintrag für den Patch in die {{ic|source}} Zeile ein. Dieser Eintrag muss durch ein Leerzeichen von dem URL zur Originalquelle getrennt sein.
Ist der Patch im Internet verfügbar, trägt man den vollständigen URL zum Patch ein, der Patch wird dann später beim eigentlichen Kompilieren des Paketes automatisch heruntergeladen und im src Verzeichnis abgelegt. Hat man den Patch selbst erstellt, oder bereits vorher heruntergeladen, legt man ihn im selben Verzeichnis wie die {{ic|PKGBUILD}} Datei ab. In diesem Fall trägt man lediglich den Dateinamen des Patches in die {{ic|source}} Zeile ein. Der Patch wird dann automatisch in das {{ic|source}} Verzeichnis kopiert. Sollte man die {{ic|PKGBUILD}} Datei weitergeben wollen, so muss man sie mit der Patchdatei zusammen weitergeben.
Anschließend fügt man einen Eintrag zur {{ic|md5sums}} bzw. {{ic|sha1sums}} Zeile hinzu. Die Prüfsummen erstellt man mittels {{ic|makepkg -g}}.
Nun erstellt man die {{ic|prepare()}} Funktion. Um das Patchen zu automatisieren trägt man die Anweisung in das zu patchende Verzeichnis zu wechseln ein; z.B.
cd $srcdir/$pkgname-$pkgver
oder ähnlich. {{ic|$pkname-$pkgver}} ist oftmals, aber nicht immer, der Name des beim Entpacken einer heruntergeladenen Quelldatei erstellten Verzeichnisses.
Abschließend muss man noch dafür sorgen, dass der Patch aus dem angegebenen Verzeichnis heraus appliziert werden kann. Dies geschieht, indem man
patch -p1 -i $srcdir/pkgname.patch
in die {{ic|prepare()}} Funktion einträgt. Für {{ic|pkgname.patch}} setzt man hier den zuvor in die {{ic|source}} Zeile eingetragenen Dateinamen des Patches ein.
Hier ein zur Veranschaulichung ein Beispiel für eine {{ic|prepare}} Funktion mit Patchfunktion:
prepare() {
cd "${srcdir}/${pkgname}-${pkgver}"
sed 's/file_handle/file_handle_rofl/g' -i istream.*
patch -p1 -i ../https-segfault.patch
patch -p1 -1 ../w3m-bdwgc72.diff
}
Das Paket kann nun in gewohnter Weise gebaut werden.


== Siehe auch ==
== Siehe auch ==
* [[pacman]]
* [[pacman]]
* [[AUR]]
* [[AUR]]
* [[:en:Patching_in_ABS|Patching in ABS]] {{Sprache|en}}


== Weblinks ==
== Weblinks ==

Version vom 2. Juni 2014, 18:27 Uhr

Das Arch Build System (ABS) wird genutzt um:

  • Neue Pakete für Software zu erstellen
  • Vorhande Pakete an die eigenen Bedürfnisse anzupassen

Das Arch Build System besteht aus abs, makepkg und pacman. Dieser Artikel versucht nun eine Übersicht über das Erstellen von Paketen unter Archlinux zu geben. Detailreichere Informationen finden sich in den jeweiligen Manpages.

Vorbereitung

Das Paket "abs" installieren:

pacman -S abs

Alle sonstigen Pakete, die zur Erstellung von Paketen notwendig sind, befinden sich in der Gruppe base-devel:

pacman -S base-devel

Das Paket

Ein Paket ist eine Datei, die meist foo.pkg.tar.gz bzw. foo.pkg.tar.xz genannt ist.

Es ist nicht mehr, als ein gz bzw. xz komprimiertes tar-Archiv, das folgendes enthält:

  • Die zu installierenden Dateien
  • .PKGINFO : enthält alle Metadaten, die pacman für den Umgang mit Paketen, Abhängigkeiten etc. benötigt.
  • .INSTALL : enthält Befehle, die nach dem Installieren/Aktualisieren/Deinstallieren ausgeführt werden. (Nur vorhanden, wenn es in PKGBUILD definiert wurde)

Das PKGBUILD

PKGBUILD enthält die Metadaten über ein Paket, die von pacman benötigt werden, um die Pakete verwalten zu können. Es stellt die Grundlage für Pakete in Archlinux dar. Ein PKGBUILD ist eine einfache Textdatei, die beispielsweise so aussehen kann:

# $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"
license=('GPL')
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=('2c0cca3ef6330a187c6ef4fe41eca')

build() {
  cd $srcdir/$pkgname-$pkgver
  ./configure --prefix=/usr
  make
}
package() {
  cd $srcdir/$pkgname-$pkgver
  make DESTDIR=$pkgdir install
}

Erklärung:

  • # text : Kommentare
  • # $Id: PKGBUILD,v ... : Das SVN-Tag für dieses Paket (automatisch vom Archlinux-SVN System erstellt). Dies sollte bei Paketen, die für das AUR gedacht sind, stets weggelassen werden.
  • # Maintainer : Der Verantwortliche für dieses Paket in den offiziellen Repositories.
  • # Contributor : Der Verfasser der ersten PKGBUILD für dieses Paket.
  • pkgname : Der Paketname
  • pkgver : Die Paketversion
  • pkgrel : Die Releasenummer des Arch Paketes. Wird geändert, wenn das PKGBUILD verändert wurde, sie unterscheided sich also von der Paketversion.
  • pkgdesc : Eine Kurzbeschreibung des Paketes. Du siehst sie in der Paket Datenbank
  • arch : Die Architekturen, auf denen das Paket kompiliert und getestet wurde, oder 'any' bei plattformunabhängigen Paketen.
  • url : Die Homepage des Programmes
  • license : Die Lizenz, unter der das Programm steht
  • groups : Wird genutzt um Pakete zu Gruppen zusammen zu fassen. Wenn du z.B. KDE installieren willst, werden alle Pakete installiert, die zur Gruppe 'kde' gehören
  • provides : Wird genutzt, wenn das Paket ein anderes Paket bereitstellt.
  • depends : Liste der Abhängigkeiten um das Programm auszuführen.
  • makedepends : Liste der Abhängigkeiten um das Programm zu kompilieren. Pakete, die schon unter depends aufgeführt wurden, sind hier nicht noch einmal aufzuführen.
  • conflicts : Pakete, die nicht zusammen mit diesem Programm installiert sein können. In unserem Fall steht foo in Konflikt zu yafoo.
  • replaces : Das neue Paket ersetzt das alte. In unserem Fall wird mffoo nicht mehr unterstützt und wird durch foo ersetzt.
  • backup : Dateien, die gesichert werden (als .pacsave), wenn das Programm deinstalliert wird.
  • install : Spezifiziert ein Installationsskript, das im Paket enthalten ist. (Muss sich mit PKGBUILD im selben Verzeichnis befinden)
  • source : Die Bezugsquelle des Quelltextes. Kann sowohl ein lokales Paket, als auch ein remote "http" oder "ftp" Paket sein. Der Dateiname wird aus pkgname und pkgver erstellt, damit der Pfad nicht bei jeder neuen Version angepasst werden muss.
  • md5sums : MD5 Summen der Quelltexte um beschädigte Dateien auszuschließen.
  • build() : Alle Schritte, die nötig sind um das Paket zu kompilieren.

Die build-Funktion und die Package-Funktion

In der build-Funktion werden die Anweisungen ausgeführt, die nötig sind, um das Paket zu kompilieren.

In der package-Funktion werden die zu installierenden Dateien und Verzeichnisse so abgelegt, dass makepkg daraus einen Tarball - das Paket - erstellen kann, der dann von pacman installiert werden kann. Es kann aber auch mehrere Package-Funktionen geben. Dann spricht man von split packages.


Wenn du dich nicht mit dem Bauen von Paketen auskennst, solltest du wissen, dass die meisten Pakete über den Dreisatz erstellt werden können:

./configure --prefix=/usr
make
make install

./configure überprüft zunächst, ob alle Voraussetzungen für das zu kompilierende Programm erfüllt sind. Über dieses Script lässt sich auch konfigurieren, wie und mit welchen Funktionen ein Programm kompiliert wird. ./configure --help zeigt meistens eine Übersicht über die Optionen, die verfügbar sind. make kompiliert schließlich das Paket und make install installiert die Dateien.

Du solltest immer die INSTALL oder die README Datei des jeweiligen Pakets lesen, um zu erfahren, wie es erstellt und installiert werden sollte, denn nicht alle Pakete nutzen diesen Dreisatz!


Eine 'Standard' build-Funktion sieht so aus:

build() {
 cd $srcdir/$pkgname-$pkgver
 ./configure --prefix=/usr
 make
}

Erklärung:

  • In das Verzeichnis der von makepkg entpackten Quelltexte wechseln (hier treten in der Praxis oft schon Probleme auf; besser, man schaut nach ob das Verzeichnis wirklich so heißt):
cd $srcdir/$pkgname-$pkgver
  • Konfigurieren des Paketes mit dem Installationsverzeichnis /usr und unter Umständen weiteren Optionen:
./configure --prefix=/usr --option1 --option2

Da die meisten Programme davon ausgehen, dass nach /usr/local installiert werden soll, wir unter Arch Linux aber nach /usr installieren wollen, ist es wichtig, das Prefix zu setzen.

  • kompilieren:
make

Eine 'Standard' package-Funktion sieht so aus:

  • installieren:
make DESTDIR=$pkgdir install

Dabei wird das Programm nicht in /usr sondern in $pkgdir/usr installiert, so dass erst einmal makepkg und indirekt auch pacman Kontrolle über die Dateien hat! Ob DESTDIR verwendet wird, hängt vom jeweiligen Programm bzw. dessen Makefile ab. Manchmal muss z.B. auch PREFIX verwendet und entsprechend umgebogen werden.

make PREFIX=$pkgdir/usr install

Installationsdateien

Installationsdateien stellen die Möglichkeit bereit, Anweisungen zu bestimmten Punkten der Installation auszuführen. Dazu müssen sie im PKGBUILD angegeben werden. Unseres gibt 'foo.install' als Installationsdatei an. Es könnte z.B. folgendes enthalten:

post_install() {
/bin/true
}

post_upgrade() {
/bin/true
}

pre_remove() {
/bin/true
}

Erklärungen:

  • post_install: Wird nach der Installation ausgeführt. Es wird ein Argument übergeben:
    • Die Paketversion
  • post_upgrade: Wird ausgeführt, nachdem alle Dateien aktualisiert wurden Es werden zwei Argumente übergeben:
    • Die neue Paketversion
    • Die alte Paketversion
  • pre_remove: Wird ausgeführt, bevor Dateien gelöscht werden (beendet z.B. daemonen) und übergibt ein Argument:
    • Die Paketversion

Der ABS-Verzeichnisbaum

Bei Archlinux werden die PKGBUILDs, anhand derer die Pakete in den offiziellen Repositories gebaut sind, mit SVN verwaltet. Sie werden mit abs auf den lokalen Rechner heruntergeladen oder aktualisiert:

abs

Der nun mit dem SVN-System synchrone Verzeichnisbaum befindet sich in /var/abs und sieht folgendermaßen aus:

| -- core/
|     || -- acl/
|     ||     || -- PKGBUILD
|     || -- attr/
|     ||     || -- PKGBUILD
|     || -- autoconf/
|     ||     || -- PKGBUILD
|     || -- ...
| -- extra/
|     || -- acpid/
|     ||     || -- PKGBUILD
|     || -- apache/
|     ||     || -- PKGBUILD
|     || -- ...
| -- community/
|     || -- ...

Jedes Repository besitzt einen eigenen Ordner in diesem Verzeichnisbaum, in dem sich dann die Ordner der jeweiligen Pakete befinden. Das Verzeichnis local dient zur Aufbewahrung selbst erstellter Pakete. Es wird im Gegensatz zu den anderen Ordnern von abs nicht verändert.

Die sich nun auf dem lokalen Rechner befindlichen PKGBUILDs lassen sich jetzt nach den eigenen Wünschen verändern und wie im nächsten Abschnitt beschrieben neu erstellen.

Erstellung von Paketen

Achtung: Um Schäden am System zu vermeiden, sollten Pakete nie als root erstellt werden!

Pakete werden mit makepkg erstellt. Dazu muss in das Verzeichnis gewechselt werden, in dem sich das Paket befindet und hier makepkg ausgeführt werden. Verzeichnisse aus dem ABS-Verzeichnisbaum sollten zuvor woandershin, zum Beispiel nach /var/abs/local oder nach ~/paketierung kopiert werden und nicht zur Erstellung des Pakets benutzt werden.

~/paketierung/foo/PKGBUILD (und ggf. noch weitere Dateien wie install-files, desktop-files, Patches u.v.m.

Sind nicht alle Abhängigkeiten zum Bau vorhanden, listet makepkg diese auf. makepkg -s würde versuchen, sie zu installieren. Das funktioniert aber nur, wenn sie in einem Repo vorhanden sind, auf das die Datei pacman.conf referenziert.

cd ~/paketierung/foo
makepkg

Jetzt entstehen ein Verzeichnis namens src, und eines namens pkg. In ersterem findet der Paketbau statt in letzerem landen die Dateien, die ins fertige Paket sollen. Im PKGBUILD kann mit $srcdir bzw. $pkgdir darauf zugegriffen werden.

~/paketierung/foo/PKGBUILD
                  src
                  pkg

Das erstellte Paket (oder je nach Konfiguration der Variablen PKGDEST in der makepkg.conf ein Link darauf) befindet sich jetzt im selben Verzeichnis und kann mit pacman installiert werden:

pacman -U foo-0.99-x86_64.pkg.tar.gz

Konfiguration

abs.conf

In der Datei /etc/abs.conf werden die Eigenschaften von abs festgelegt. Der wichtigste Punkt stellt die Möglichkeit der Wahl der Repositories dar, deren PKGBUILDs synchronisiert werden sollen.

makepkg.conf

Achtung: Änderungen in makepkg.conf können Probleme und Fehler in den Paketen nachsichziehen und sollten daher nur von erfahreneren Nutzern durchgeführt werden.

In der Datei /etc/makepkg.conf werden die Eigenschaften von makepkg festgelegt. Dabei lassen sich die Standardeinstellungen der Programme verändern, die makepkg verwendet, um Pakete zu erstellen. Zu nennen sind dabei die Umgebungsvariablen MAKEFLAGS, CFLAGS und CXXFLAGS, die gcc und make beeinflussen.

Hinzufügen von Patches

Hier wird beschrieben wie man einen Patch den man selbst erstellt oder heruntergeladen hat, in die prepare () Funktion einer PKGBUILD Datei einpflegt.

Als erstes fügt man einen Eintrag für den Patch in die source Zeile ein. Dieser Eintrag muss durch ein Leerzeichen von dem URL zur Originalquelle getrennt sein. Ist der Patch im Internet verfügbar, trägt man den vollständigen URL zum Patch ein, der Patch wird dann später beim eigentlichen Kompilieren des Paketes automatisch heruntergeladen und im src Verzeichnis abgelegt. Hat man den Patch selbst erstellt, oder bereits vorher heruntergeladen, legt man ihn im selben Verzeichnis wie die PKGBUILD Datei ab. In diesem Fall trägt man lediglich den Dateinamen des Patches in die source Zeile ein. Der Patch wird dann automatisch in das source Verzeichnis kopiert. Sollte man die PKGBUILD Datei weitergeben wollen, so muss man sie mit der Patchdatei zusammen weitergeben. Anschließend fügt man einen Eintrag zur md5sums bzw. sha1sums Zeile hinzu. Die Prüfsummen erstellt man mittels makepkg -g. Nun erstellt man die prepare() Funktion. Um das Patchen zu automatisieren trägt man die Anweisung in das zu patchende Verzeichnis zu wechseln ein; z.B.

cd $srcdir/$pkgname-$pkgver

oder ähnlich. $pkname-$pkgver ist oftmals, aber nicht immer, der Name des beim Entpacken einer heruntergeladenen Quelldatei erstellten Verzeichnisses. Abschließend muss man noch dafür sorgen, dass der Patch aus dem angegebenen Verzeichnis heraus appliziert werden kann. Dies geschieht, indem man

patch -p1 -i $srcdir/pkgname.patch

in die prepare() Funktion einträgt. Für pkgname.patch setzt man hier den zuvor in die source Zeile eingetragenen Dateinamen des Patches ein. Hier ein zur Veranschaulichung ein Beispiel für eine prepare Funktion mit Patchfunktion:

prepare() {
cd "${srcdir}/${pkgname}-${pkgver}"
sed 's/file_handle/file_handle_rofl/g' -i istream.*
patch -p1 -i ../https-segfault.patch 
patch -p1 -1 ../w3m-bdwgc72.diff
}

Das Paket kann nun in gewohnter Weise gebaut werden.

Siehe auch

Weblinks


Dieser Artikel (oder Teile davon) steht unter GNU FDL (GNU Freie Dokumentationslizenz) und ist eine Übersetzung aus dem ArchLinux.org Wiki. Am Original-Artikel kann jeder Korrekturen und Ergänzungen vornehmen. Im ArchLinux.org Wiki ist eine Liste der Autoren verfügbar.