$ABSROOT

Now that I’ve been with Arch for a few years, I find myself using the ABS much more frequently to rebuild packages from the repos. The abs(3) script is nice because it now lets you grab a single package from the repos without having to waste space and bandwidth synching the entire abs tree. If you haven’t read up on the ABS yet, I highly encourage you to do so.

The convenience of the abs script has only one drawback that I can see; you specifiy an $ABSROOT, and packages end up in $ABSROOT/$REPO. For example if I set ABSROOT=$HOME/pkgs and run abs extra/pkgtools, I end up with $HOME/pkgs/extra/pkgtools. This is a very minor issue but it’s very annoying when you’d like to keep all of your self built packages in one place. I’ve come up with a workaround and I’d like to see if anyone can suggest a better way to accomplish this.

First, create an absroot directory that holds symlinks for all repos abs knows about.

mkdir ~/.absroot
cd $_

for i in core extra community testing; do 
    ln -s ~/pkgs $i;
done

Then, in $HOME/.abs.conf:

ABSROOT="$HOME/.absroot"
SYNCARGS='-mrtv --no-motd --delete-after --no-p --no-o --no-g --keep-dirlinks'

The SYNCARGS are key here. They are default options with the exception of --keep-dirlinks. Without this setting, rsync will wipe out the symlinks you made above and your packages won’t end up where you expect them.

With these settings, I can now run abs extra/pkgtools and I will have a $HOME/pkgs/pkgtools directory amidst all the AUR packages I’ve collected.

If anyone knows an alternative solution, I’d be glad to hear it – I’d also like to know of any major side effects, so let me know what you think.

blog comments powered by Disqus