#!/bin/bash # Copyleft 2012 - Nicolás Reynolds # Bootstraps a Parabola root, useful for base systems, build chroots, etc. # Note: this is a very basic script that let's you do whatever you want, so # it's not foolproof ;) # Attempt to provide some help if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then echo "Installs a Parabola root on the current dir" echo "Usage: newroot [custom package1 ...]" echo "" echo "Environment variables:" echo -e "WORKDIR \tThe install dir" echo -e "LOGFILE \tAn alternate logfile ($PWD/pacman.log)" echo -e "PACCACHE\tThe pacman cache (guessed)" exit fi # Fail at any error set -E if [ ! -w / ]; then echo "Run as root."; exit 1; fi # Should work unless you have a messy pacman.conf function find_cache() { grep "CacheDir\s*=\s*" /etc/pacman.conf | tail -n1 | cut -d"=" -f2 | tr -d " " } # Build on the current dir or WORKDIR env var WORKDIR="${WORKDIR:-${PWD}}" LOGFILE="${LOGFILE:-${WORKDIR}/pacman.log}" PACCACHE="${PACCACHE:-$(find_cache)}" # Do a last attempt to have a pacman cache PACCACHE="${PACCACHE:-/var/cache/pacman/pkg}" export WORKDIR LOGFILE PACCACHE function pacman() { /usr/bin/pacman -r "${WORKDIR}" \ --dbpath "${WORKDIR}"/var/lib/pacman \ --logfile "${LOGFILE}" \ --noconfirm \ --needed \ --cachedir "${PACCACHE}" \ --config /etc/pacman.conf $@ } # Bootstrap! mkdir -p "${WORKDIR}"/var/lib/pacman # We need to do this twice or the install won't find the databases pacman -Sy pacman -S base $@