Pacman

From CBLFS
Jump to navigationJump to search
Download Source: ftp://ftp.archlinux.org/other/pacman/pacman-3.2.2.tar.gz

Introduction to Pacman

pacman is a utility which manages software packages in Linux. It uses simple compressed files as a package format, and maintains a text-based package database, just in case some hand tweaking is necessary. This is the package management system used by Arch Linux.

Project Homepage: http://www.archlinux.org/pacman/

Dependencies

Required

Optional

Configuration Information

--disable-doxygen: Disable building Doxygen API documentation.
--disable-fakeroot: Disable fakeroot proof support.
--with-config-file=path: Set the location of pacman's config file.

Non-Multilib

Compile the package:

./configure --prefix=/usr --sysconfdir=/etc \
    --localstatedir=/var --disable-doxygen &&
make

Install the package:

make install

Multilib

32Bit

Compile the package:

CC="gcc ${BUILD32}" ./configure --prefix=/usr \
    --sysconfdir=/etc --localstatedir=/var \
    --disable-doxygen &&
make

Install the package:

make install

N32

Compile the package:

CC="gcc ${BUILDN32}" ./configure --prefix=/usr \
    --libdir=/usr/lib32 --sysconfdir=/etc \
    --localstatedir=/var --disable-doxygen &&
make

Install the package:

make install

64Bit

Compile the package:

CC="gcc ${BUILD64}" ./configure --prefix=/usr \
    --libdir=/usr/lib64 --sysconfdir=/etc \
    --localstatedir=/var --disable-doxygen &&
make

Install the package:

make install

Configuring

See the following webpages for instructions to work with the main portions of pacman

http://wiki.archlinux.org/index.php/Pacman
http://wiki.archlinux.org/index.php/ABS_-_The_Arch_Build_System
http://wiki.archlinux.org/index.php/Makepkg

Arch Linux is not a standards compliant multilib operating system. If you will be using pacman to create your own, local repositories (e.g., to use with your CLFS cluster) on a multilib platform, replace this section in /etc/makepkg.conf:

#-- Exclusive: will only run on x86-64
# -mtune builds exclusively for an architecture
# -mcpu optimizes for an architecture, but builds for the whole processor family
CFLAGS="-march=x86_64 -mtune=generic -O2 -pipe"
CXXFLAGS="-march=x86_64 -mtune=generic -O2 -pipe"

with the following:

#-- Exclusive: will only run on x86-64
# -mtune builds exclusively for an architecture
# -mcpu optimizes for an architecture, but builds for the whole processor family
if [ "$USE_ARCH" = "32" ]; then
    CARCH="$CARCH-32"
    CFLAGS="${BUILD32}"
    CXXFLAGS="${BUILD32}"
    export PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}"
elif [ "$USE_ARCH" = "n32" ]; then
    CARCH="$CARCH-n32"
    CFLAGS="${BUILDN32}"
    CXXFLAGS="${BUILDN32}"
    export PKG_CONFIG_PATH="${PKG_CONFIG_PATHN32}"
elif [ "$USE_ARCH" = "64" ]; then
    CARCH="$CARCH-64"
    CFLAGS="${BUILD64}"
    CXXFLAGS="${BUILD64}"
    export PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}"
else
    echo "Unknown or unsupported architecture: $USE_ARCH"
    echo "Exiting!"
    exit 1
fi

Based on minimal testing to date on an x86_64 multilib CLFS system, using the USE_ARCH environment variable will build the appropriate ABI package. You will need to create separate repositories for the 32-bit and 64-bit packages. The packages will have 32, N32, or 64 inserted in the package name so you will be able to tell them apart.

Contents

Installed Directories: /etc/abs, /etc/pacman.d,
Installed Programs: abs, gensync, makepkg, makeworld, pacman, pacman.static, pacman-optimize, rankmirrors, repo-add, repo-remove, testpkg, updatesync, vercmp
Installed Libraries: libalpm.{a,la,so}