Differences between revisions 5 and 6
Revision 5 as of 2023-01-08 18:31:49
Size: 2644
Comment:
Revision 6 as of 2023-01-08 18:58:43
Size: 3910
Comment:
Deletions are marked like this. Additions are marked like this.
Line 47: Line 47:
== makepkg ==

The '''`makepkg(8)`''' utility uses `PKGBUILD` scripts to build a package.

To build a package, try:

{{{
makepkg
}}}

To install all of a package's dependencies, built it, and install it, try:

{{{
makepkg --syncdeps --install
}}}

To build a source code only package ''(a tarball that does not include sources that can be fetched via a download URL)'', try:

{{{
makepkg -S
}}}

`makepkg(8)` is configured with `makepkg.conf(5)` and through environment variables. In particular, these variables are often configured:

||'''Variable'''||'''Default'''||'''Suggested Value'''||'''Meaning''' ||
||`PKGDEST` ||`.` ||`$HOME/packages` ||built package base directory ||
||`SRCDEST` ||`.` ||`$HOME/sources` ||package source code base directory ||
||`SRCPKGDEST` ||`.` ||`$HOME/srcpackages` ||source code only package base directory||
||`LOGDEST` ||`.` ||`$HOME/makepkglogs` ||build logs base directory ||
||`PACKAGER` ||`` || ||packager name and contact info ||
||`GPGKEY` ||`` || ||packager GPG key ||

----


Arch Linux Packaging


Distributed Design

The Arch Linux project encourages and empowers users to create their own software packages.

  • The package manager pacman is designed to mix and match official binary packages with unofficial, locally compiled packages.

  • Packages are never split between software and development headers.
  • Build options and flags are coordinated through system configuration packages.
  • Tools for isolated build processes are well tested and documented.

The Arch Linux project also supports code for running public and private mirrors of the official binary packages.


PKGBUILD

A PKGBUILD is a shell script to build a software package installable by pacman(8). The shell script is called by the makepkg(8) utility.

A PKGBUILD...

  • mandatorily defines the pkgname, pkgver, pkgrel, and arch variables

  • defines dependencies as an array variable, wherein each element is a package name with versioning constraints
    • try: depends=('foobar>=1.8.0' 'foobar<2.0.0')

  • defines well-known functions that will be called by makepkg(8)

    • prepare applies patches to the source code

    • build calls the build pipeline, including any configuration steps

    • check calls the test suite

    • package creates the package

It's also possible to specify build-time dependencies with the makedepends variable (same format as depends), test suite dependencies with the checkdepends variables (again, same format), and optional (feature gate) dependencies with the optdepends variable (try: optdepends=('cups: printing support')).

If a package provides software that may be depended upon by other packages, set the provides array variable accordingly. Try: provides=('foobar=1.2.3').


makepkg

The makepkg(8) utility uses PKGBUILD scripts to build a package.

To build a package, try:

makepkg

To install all of a package's dependencies, built it, and install it, try:

makepkg --syncdeps --install

To build a source code only package (a tarball that does not include sources that can be fetched via a download URL), try:

makepkg -S

makepkg(8) is configured with makepkg.conf(5) and through environment variables. In particular, these variables are often configured:

Variable

Default

Suggested Value

Meaning

PKGDEST

.

$HOME/packages

built package base directory

SRCDEST

.

$HOME/sources

package source code base directory

SRCPKGDEST

.

$HOME/srcpackages

source code only package base directory

LOGDEST

.

$HOME/makepkglogs

build logs base directory

PACKAGER

packager name and contact info

GPGKEY

packager GPG key


Arch User Repository

The AUR (Arch User Repository) is a public git repository of user-created and user-maintained PKGBUILD scripts.

The AUR is chiefly a way to coordinate the distribution of non-free and closed source applications on Arch Linux. Because a PKGBUILD script itself does not contain copyrighted material, they can be distributed freely and developed as open source code.

While these PKGBUILD scripts can be cloned and used directly, there are a number of 'AUR helpers' that automate this process. See pacaur, paru, pikaur, trizen, yaourt, and yay.


CategoryRicottone

Linux/Arch/Packaging (last edited 2023-12-02 01:46:19 by DominicRicottone)