Just like I announced last week, my binary packages repository is now history. I’m gonna remove the redirections from lighttpd and DNS in a few.
Tag: binpkg
packages.barfoo.org is going away
For those of you, still using my binary packages. It’s just a waste of disk space for me (6.8G to be exact), so I decided to remove them. I’m gonna give people one week to grab yourself a copy. I’m gonna keep the bashrc and all the other stuff I wrote back when I was still interested in binary packages, but the binary packages are gonna vanish!
Again, grab yourself a copy if you need them, at some point next week (probably on Friday), I’m simply gonna rm -rf them.
Advanced bashrc (‘Turning a simple chroot into a binpkg repository’ continued)
As I pointed out back in October, it’s rather easy to create a setup which syncs a built binary package to a remote node (which is serving them to the world – via http,rsync,ftp – pick your poison).
Now, ever since we had slight space problems on miranda (cough my binpkgs cough), I wanted to look into methods on how to get rid of storing them on the buildnode and the webnode. I think now (hehe, it’s only 7pm), I finally managed to get a “proper” bashrc which does a lot of that foo. Take a look at this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
... syncpkg() { # Syncing the binary tbz2 to my webhost if is_feature "buildpkg" && [[ -n $REPO_HOST && -n $REPO_BASE && -n $REPO_PATH ]] ; then REMOTE_TARGET="$REPO_HOST:$REPO_BASE/$REPO_PATH" REMOTE_ECACHE="$REPO_BASE/$REPO_PATH/settings/.ebuild.x" einfo "Publishing data to remote repository ($REPO_PATH) on ${REPO_HOST##*@}" if ! $( ssh $REPO_HOST "test -d $REPO_BASE/$REPO_PATH/settings" ) ; then ssh $REPO_HOST "mkdir -p $REPO_BASE/$REPO_PATH/settings" >> /var/log/syncpkg.log 2>&1 fi if [ -x /usr/bin/q ] ; then /usr/bin/qlist -IvCU > /etc/portage/package.list fi ebegin " [ SYNC: 1/3] /etc/make.conf, /etc/portage/package* to $REPO_PATH/settings" rssh /etc/{make.conf,portage/package*,portage/profile,portage/bin,portage/bashrc} $REMOTE_TARGET/settings/ > /var/log/syncpkg.log 2>&1 eend $? ebegin " [ SYNC: 2/3] $PKGDIR to $REPO_PATH" rssh $PKGDIR/ $REMOTE_TARGET/ >> /var/log/syncpkg.log 2>&1 eend $? ebegin " [ SYNC: 3/3] Cleaning $PKGDIR" rm -rf $PKGDIR/* >> /var/log/syncpkg.log 2>&1 eend $? # We sync our copy of .ebuild.x over to the webnode, as it might not be # synced as often / at the same time as the buildnode. Thus the # `qpkg --eclean' would remove packages, which *are* in the tree, but # the webnode hasn't synced up yet. rssh $PORTDIR/.ebuild.x $REMOTE_TARGET/settings/.ebuild.x >> /var/log/syncpkg.log 2>&1 if $( ssh $REPO_HOST "test -f $REMOTE_ECACHE" ) ; then ebegin " [MAINT: 1/3] Removing stale packages in $REPO_PATH" ssh $REPO_HOST "CACHE_EBUILD_FILE=$REMOTE_ECACHE qpkg -Eq -P $REPO_BASE/$REPO_PATH/" >> /var/log/syncpkg.log 2>&1 eend $? fi # And now remove the .ebuild.x copy again. ssh $REPO_HOST "rm -f $REMOTE_ECACHE" >> /var/log/syncpkg.log 2>&1 # The user ssh'ing, needs to be in the portage group on the remote # end. Otherwise, things *will* go wrong (like genpkgindex being # unable to write to /var/cache/edb/xpak). Also /var/cache/edb/xpak # needs to be owned by portage:portage, as well as group-writeable. if $( ssh $REPO_HOST "test -w /var/cache/edb/xpak" ) ; then ebegin " [MAINT: 2/3] Regenerating $REPO_PATH/Packages" ssh $REPO_HOST "$REPO_BASE/$REPO_PATH/settings/bin/genpkgindex $REPO_BASE/$REPO_PATH/All" >> /var/log/syncpkg.log 2>&1 eend $? fi if ! $( ssh $REPO_HOST "test -L $REPO_BASE/$REPO_PATH/Packages" ) ; then ebegin " [MAINT: 3/3] Fixing $REPO_PATH/Packages symlink" ssh $REPO_HOST "cd $REPO_BASE/$REPO_PATH; rm -f Packages; ln -s All/Packages" >> /var/log/syncpkg.log 2>&1 eend $? fi fi } ... |
As you can see, it does a lot of things, which are all connected with binary package repositories (including cleaning up old packages no longer in the tree – trying not to waste too much space). Sadly, I currently have to use a custom patched qpkg version, as the one implementing the –eclean features isn’t in the tree yet. When I talked to Ned the other day, he complained about it being slow (well, yeah — it has to go through the whole tree) which I don’t really see when you look at what it’s doing.
Also, I had a weird phenomenon today happening: the buildnode built a binary package, sent it to the webnode, which ran qpkg --eclean' afterwards. But after that the binary package was gone. "Why" you ask now ? Well, apparently the webnode isn't synced the same time the buildnode syncs (the webnode is in Germany, the buildnode in the US). So I had to come up with a trick, in order to fool qpkg into not cleaning the freshly built binary packages. See the
rssh’ in front of the qpkg call ? Guess what, that’s the lil’ dirty trick …
Anyway, the full bashrc is available. The next thing I’m gonna have to look at (which Markus already did), is building packages via buildbot.
Update: as you see, I updated the bashrc a bit. That’s because after writing this, I started a new (fresh) binpkg repository (empty), and out of the sudden the thing ain’t syncing correctly (as in no Packages file, no portage settings). Turns out, rsync doesn’t create directories which ain’t there. So another extra `ssh‘ execution to create the settings/ directory inside the repo.
Turning a simple chroot into a binpkg repository
OK, since Alex asked me last Sunday what exactly needs to be done to turn a simple chroot (or even a bloody box) into a binpkg producing environment, here’s a little howto …
First, lets start from a freshly unpacked stage3.
1 2 3 4 5 |
catalyst/x86 stage3-amd64-hardened # chroot . /bin/bash --login # Now, make sure you turn on FEATURES=buildpkg # (and setup anything else you need, like CFLAGS, # LDFLAGS, whatever) linux # echo 'FEATURES="buildpkg"' >> /etc/make.conf |
With that single change you’re basically nearly finished with setting up the whole thing, the remaining things are just
- Making sure the binary packages get to a web-enabled (either ftp or http) box, from where you’re going to fetch the binary packages to their target
- Make sure you use binary packages on the target systems by default
But first, we’re gonna need to emerge something within that freshly created build chroot.
1 2 3 4 |
# Let's emerge some packages linux # emerge -e world -q ... (some minutes/hours/days later) linux # |
Since we now emerged some things we do have quite a few binary packages, which we are going to need on the target systems in order to avoid individual compile time.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
linux # cd /usr/portage/packages/; ls */* -rw-r--r-- 1 root root 780125 Oct 9 21:59 All/autoconf-2.61-r1.tbz2 -rw-r--r-- 1 root root 24648 Oct 9 21:32 All/autoconf-wrapper-4-r3.tbz2 -rw-r--r-- 1 root root 24331 Oct 9 21:32 All/automake-wrapper-3-r1.tbz2 -rw-r--r-- 1 root root 270794 Oct 9 22:07 All/baselayout-1.12.9-r2.tbz2 -rw-r--r-- 1 root root 734855 Oct 9 21:41 All/bash-3.2_p17.tbz2 -rw-r--r-- 1 root root 3546966 Oct 9 21:51 All/binutils-2.17-r1.tbz2 -rw-r--r-- 1 root root 23989 Oct 9 21:48 All/binutils-config-1.9-r4.tbz2 -rw-r--r-- 1 root root 536021 Oct 9 21:49 All/bison-2.3.tbz2 -rw-r--r-- 1 root root 1589258 Oct 9 21:36 All/busybox-1.6.1.tbz2 -rw-r--r-- 1 root root 592700 Oct 9 21:36 All/bzip2-1.0.4.tbz2 -rw-r--r-- 1 root root 119105 Oct 9 22:03 All/ca-certificates-20070303-r1.tbz2 -rw-r--r-- 1 root root 50235 Oct 9 21:43 All/com_err-1.39.tbz2 -rw-r--r-- 1 root root 2377785 Oct 9 22:05 All/coreutils-6.9-r1.tbz2 -rw-r--r-- 1 root root 180610 Oct 9 21:37 All/cpio-2.9.tbz2 -rw-r--r-- 1 root root 256863 Oct 9 21:31 All/cracklib-2.8.10.tbz2 -rw-r--r-- 1 root root 2356960 Oct 9 21:56 All/db-4.5.20_p2.tbz2 -rw-r--r-- 1 root root 67253 Oct 9 21:58 All/debianutils-2.17.5.tbz2 -rw-r--r-- 1 root root 327359 Oct 9 21:59 All/diffutils-2.8.7-r2.tbz2 -rw-r--r-- 1 root root 805505 Oct 9 21:52 All/e2fsprogs-1.39-r2.tbz2 -rw-r--r-- 1 root root 199867 Oct 9 21:31 All/expat-2.0.1.tbz2 -rw-r--r-- 1 root root 465529 Oct 9 21:44 All/findutils-4.3.8-r1.tbz2 -rw-r--r-- 1 root root 379065 Oct 9 21:45 All/flex-2.5.33-r2.tbz2 -rw-r--r-- 1 root root 947984 Oct 9 21:47 All/gawk-3.1.5-r3.tbz2 -rw-r--r-- 1 root root 47111 Oct 9 21:32 All/gcc-config-1.3.16.tbz2 -rw-r--r-- 1 root root 2049299 Oct 9 21:39 All/gettext-0.16.1-r1.tbz2 -rw-r--r-- 1 root root 71249 Oct 9 21:31 All/gnuconfig-20070118.tbz2 -rw-r--r-- 1 root root 198718 Oct 9 21:45 All/grep-2.5.1a-r1.tbz2 -rw-r--r-- 1 root root 2770274 Oct 9 22:08 All/groff-1.19.2-r1.tbz2 -rw-r--r-- 1 root root 158291 Oct 9 21:46 All/gzip-1.3.12.tbz2 -rw-r--r-- 1 root root 31423 Oct 9 21:32 All/hashalot-0.3-r2.tbz2 -rw-r--r-- 1 root root 18045 Oct 9 21:49 All/init-0.tbz2 -rw-r--r-- 1 root root 94341 Oct 9 21:46 All/iputils-20060512.tbz2 -rw-r--r-- 1 root root 1123810 Oct 9 21:46 All/kbd-1.12-r8.tbz2 -rw-r--r-- 1 root root 183504 Oct 9 21:41 All/less-406.tbz2 -rw-r--r-- 1 root root 18560 Oct 9 21:31 All/libiconv-0.tbz2 -rw-r--r-- 1 root root 18583 Oct 9 21:31 All/libintl-0.tbz2 -rw-r--r-- 1 root root 1937796 Oct 9 21:58 All/libperl-5.8.8-r1.tbz2 -rw-r--r-- 1 root root 514331 Oct 9 21:40 All/linux-headers-2.6.21.tbz2 -rw-r--r-- 1 root root 248267 Oct 9 21:42 All/m4-1.4.9-r1.tbz2 -rw-r--r-- 1 root root 502032 Oct 9 21:48 All/make-3.81.tbz2 -rw-r--r-- 1 root root 282155 Oct 9 22:08 All/man-1.6e-r3.tbz2 -rw-r--r-- 1 root root 4013627 Oct 9 21:59 All/man-pages-2.64.tbz2 -rw-r--r-- 1 root root 40598 Oct 9 21:58 All/mktemp-1.5.tbz2 -rw-r--r-- 1 root root 360001 Oct 9 22:07 All/module-init-tools-3.2.2-r3.tbz2 -rw-r--r-- 1 root root 473826 Oct 9 21:48 All/nano-2.0.6.tbz2 -rw-r--r-- 1 root root 1371743 Oct 9 21:29 All/ncurses-5.6-r1.tbz2 -rw-r--r-- 1 root root 564916 Oct 9 21:46 All/net-tools-1.60-r12.tbz2 -rw-r--r-- 1 root root 3002432 Oct 9 22:02 All/openssl-0.9.8e-r3.tbz2 -rw-r--r-- 1 root root 730702 Oct 9 22:07 All/pam-0.78-r5.tbz2 -rw-r--r-- 1 root root 128006 Oct 9 21:36 All/patch-2.5.9.tbz2 -rw-r--r-- 1 root root 90402 Oct 9 21:31 All/pax-utils-0.1.15.tbz2 -rw-r--r-- 1 root root 23917 Oct 9 21:59 All/perl-cleaner-1.04.3.tbz2 -rw-r--r-- 1 root root 115201 Oct 9 21:32 All/pkgconfig-0.21-r1.tbz2 -rw-r--r-- 1 root root 88097 Oct 9 21:44 All/popt-1.10.7.tbz2 -rw-r--r-- 1 root root 416062 Oct 9 21:27 All/portage-2.1.3.9.tbz2 -rw-r--r-- 1 root root 262433 Oct 9 21:41 All/procps-3.2.7.tbz2 -rw-r--r-- 1 root root 20749 Oct 9 21:33 All/python-updater-0.2.tbz2 -rw-r--r-- 1 root root 1032660 Oct 9 21:45 All/readline-5.2_p7.tbz2 -rw-r--r-- 1 root root 302340 Oct 9 21:49 All/rsync-2.6.9-r3.tbz2 -rw-r--r-- 1 root root 76862 Oct 9 21:33 All/sandbox-1.2.17.tbz2 -rw-r--r-- 1 root root 221380 Oct 9 21:43 All/sed-4.1.5.tbz2 -rw-r--r-- 1 root root 37273 Oct 9 21:33 All/setarch-1.8.tbz2 -rw-r--r-- 1 root root 1186511 Oct 9 22:09 All/shadow-4.0.18.1-r1.tbz2 -rw-r--r-- 1 root root 60436 Oct 9 21:48 All/ss-1.39.tbz2 -rw-r--r-- 1 root root 136646 Oct 9 21:43 All/sysvinit-2.86-r8.tbz2 -rw-r--r-- 1 root root 819482 Oct 9 21:47 All/tar-1.18-r2.tbz2 -rw-r--r-- 1 root root 149255 Oct 9 21:33 All/tcp-wrappers-7.6-r8.tbz2 -rw-r--r-- 1 root root 836401 Oct 9 21:42 All/texinfo-4.8-r5.tbz2 -rw-r--r-- 1 root root 545686 Oct 9 21:34 All/timezone-data-2007g.tbz2 -rw-r--r-- 1 root root 318901 Oct 9 22:07 All/udev-114.tbz2 -rw-r--r-- 1 root root 33969 Oct 9 21:33 All/unifdef-1.20.tbz2 -rw-r--r-- 1 root root 1356353 Oct 9 21:56 All/util-linux-2.12r-r7.tbz2 -rw-r--r-- 1 root root 514592 Oct 9 22:03 All/wget-1.10.2.tbz2 -rw-r--r-- 1 root root 53049 Oct 9 21:49 All/which-2.16.tbz2 -rw-r--r-- 1 root root 153247 Oct 9 21:31 All/zlib-1.2.3-r1.tbz2 lrwxrwxrwx 1 root root 31 Oct 9 21:59 app-admin/perl-cleaner-1.04.3.tbz2 -> ../All/perl-cleaner-1.04.3.tbz2 lrwxrwxrwx 1 root root 30 Oct 9 21:33 app-admin/python-updater-0.2.tbz2 -> ../All/python-updater-0.2.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:36 app-arch/bzip2-1.0.4.tbz2 -> ../All/bzip2-1.0.4.tbz2 lrwxrwxrwx 1 root root 20 Oct 9 21:37 app-arch/cpio-2.9.tbz2 -> ../All/cpio-2.9.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:46 app-arch/gzip-1.3.12.tbz2 -> ../All/gzip-1.3.12.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:47 app-arch/tar-1.18-r2.tbz2 -> ../All/tar-1.18-r2.tbz2 lrwxrwxrwx 1 root root 27 Oct 9 21:32 app-crypt/hashalot-0.3-r2.tbz2 -> ../All/hashalot-0.3-r2.tbz2 lrwxrwxrwx 1 root root 22 Oct 9 21:48 app-editors/nano-2.0.6.tbz2 -> ../All/nano-2.0.6.tbz2 lrwxrwxrwx 1 root root 39 Oct 9 22:03 app-misc/ca-certificates-20070303-r1.tbz2 -> ../All/ca-certificates-20070303-r1.tbz2 lrwxrwxrwx 1 root root 28 Oct 9 21:31 app-misc/pax-utils-0.1.15.tbz2 -> ../All/pax-utils-0.1.15.tbz2 lrwxrwxrwx 1 root root 24 Oct 9 21:41 app-shells/bash-3.2_p17.tbz2 -> ../All/bash-3.2_p17.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:31 dev-libs/expat-2.0.1.tbz2 -> ../All/expat-2.0.1.tbz2 lrwxrwxrwx 1 root root 29 Oct 9 22:02 dev-libs/openssl-0.9.8e-r3.tbz2 -> ../All/openssl-0.9.8e-r3.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:44 dev-libs/popt-1.10.7.tbz2 -> ../All/popt-1.10.7.tbz2 lrwxrwxrwx 1 root root 29 Oct 9 21:32 dev-util/pkgconfig-0.21-r1.tbz2 -> ../All/pkgconfig-0.21-r1.tbz2 lrwxrwxrwx 1 root root 24 Oct 9 21:33 dev-util/unifdef-1.20.tbz2 -> ../All/unifdef-1.20.tbz2 lrwxrwxrwx 1 root root 28 Oct 9 21:46 net-misc/iputils-20060512.tbz2 -> ../All/iputils-20060512.tbz2 lrwxrwxrwx 1 root root 26 Oct 9 21:49 net-misc/rsync-2.6.9-r3.tbz2 -> ../All/rsync-2.6.9-r3.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 22:03 net-misc/wget-1.10.2.tbz2 -> ../All/wget-1.10.2.tbz2 lrwxrwxrwx 1 root root 32 Oct 9 22:07 sys-apps/baselayout-1.12.9-r2.tbz2 -> ../All/baselayout-1.12.9-r2.tbz2 lrwxrwxrwx 1 root root 25 Oct 9 21:36 sys-apps/busybox-1.6.1.tbz2 -> ../All/busybox-1.6.1.tbz2 lrwxrwxrwx 1 root root 28 Oct 9 22:05 sys-apps/coreutils-6.9-r1.tbz2 -> ../All/coreutils-6.9-r1.tbz2 lrwxrwxrwx 1 root root 30 Oct 9 21:58 sys-apps/debianutils-2.17.5.tbz2 -> ../All/debianutils-2.17.5.tbz2 lrwxrwxrwx 1 root root 30 Oct 9 21:59 sys-apps/diffutils-2.8.7-r2.tbz2 -> ../All/diffutils-2.8.7-r2.tbz2 lrwxrwxrwx 1 root root 30 Oct 9 21:44 sys-apps/findutils-4.3.8-r1.tbz2 -> ../All/findutils-4.3.8-r1.tbz2 lrwxrwxrwx 1 root root 25 Oct 9 21:47 sys-apps/gawk-3.1.5-r3.tbz2 -> ../All/gawk-3.1.5-r3.tbz2 lrwxrwxrwx 1 root root 26 Oct 9 21:45 sys-apps/grep-2.5.1a-r1.tbz2 -> ../All/grep-2.5.1a-r1.tbz2 lrwxrwxrwx 1 root root 27 Oct 9 22:08 sys-apps/groff-1.19.2-r1.tbz2 -> ../All/groff-1.19.2-r1.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:46 sys-apps/kbd-1.12-r8.tbz2 -> ../All/kbd-1.12-r8.tbz2 lrwxrwxrwx 1 root root 20 Oct 9 21:41 sys-apps/less-406.tbz2 -> ../All/less-406.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 22:08 sys-apps/man-1.6e-r3.tbz2 -> ../All/man-1.6e-r3.tbz2 lrwxrwxrwx 1 root root 26 Oct 9 21:59 sys-apps/man-pages-2.64.tbz2 -> ../All/man-pages-2.64.tbz2 lrwxrwxrwx 1 root root 22 Oct 9 21:58 sys-apps/mktemp-1.5.tbz2 -> ../All/mktemp-1.5.tbz2 lrwxrwxrwx 1 root root 38 Oct 9 22:07 sys-apps/module-init-tools-3.2.2-r3.tbz2 -> ../All/module-init-tools-3.2.2-r3.tbz2 lrwxrwxrwx 1 root root 30 Oct 9 21:46 sys-apps/net-tools-1.60-r12.tbz2 -> ../All/net-tools-1.60-r12.tbz2 lrwxrwxrwx 1 root root 27 Oct 9 21:27 sys-apps/portage-2.1.3.9.tbz2 -> ../All/portage-2.1.3.9.tbz2 lrwxrwxrwx 1 root root 26 Oct 9 21:33 sys-apps/sandbox-1.2.17.tbz2 -> ../All/sandbox-1.2.17.tbz2 lrwxrwxrwx 1 root root 21 Oct 9 21:43 sys-apps/sed-4.1.5.tbz2 -> ../All/sed-4.1.5.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:33 sys-apps/setarch-1.8.tbz2 -> ../All/setarch-1.8.tbz2 lrwxrwxrwx 1 root root 30 Oct 9 22:09 sys-apps/shadow-4.0.18.1-r1.tbz2 -> ../All/shadow-4.0.18.1-r1.tbz2 lrwxrwxrwx 1 root root 28 Oct 9 21:43 sys-apps/sysvinit-2.86-r8.tbz2 -> ../All/sysvinit-2.86-r8.tbz2 lrwxrwxrwx 1 root root 31 Oct 9 21:33 sys-apps/tcp-wrappers-7.6-r8.tbz2 -> ../All/tcp-wrappers-7.6-r8.tbz2 lrwxrwxrwx 1 root root 26 Oct 9 21:42 sys-apps/texinfo-4.8-r5.tbz2 -> ../All/texinfo-4.8-r5.tbz2 lrwxrwxrwx 1 root root 31 Oct 9 21:56 sys-apps/util-linux-2.12r-r7.tbz2 -> ../All/util-linux-2.12r-r7.tbz2 lrwxrwxrwx 1 root root 22 Oct 9 21:49 sys-apps/which-2.16.tbz2 -> ../All/which-2.16.tbz2 lrwxrwxrwx 1 root root 28 Oct 9 21:59 sys-devel/autoconf-2.61-r1.tbz2 -> ../All/autoconf-2.61-r1.tbz2 lrwxrwxrwx 1 root root 33 Oct 9 21:32 sys-devel/autoconf-wrapper-4-r3.tbz2 -> ../All/autoconf-wrapper-4-r3.tbz2 lrwxrwxrwx 1 root root 33 Oct 9 21:32 sys-devel/automake-wrapper-3-r1.tbz2 -> ../All/automake-wrapper-3-r1.tbz2 lrwxrwxrwx 1 root root 28 Oct 9 21:51 sys-devel/binutils-2.17-r1.tbz2 -> ../All/binutils-2.17-r1.tbz2 lrwxrwxrwx 1 root root 34 Oct 9 21:48 sys-devel/binutils-config-1.9-r4.tbz2 -> ../All/binutils-config-1.9-r4.tbz2 lrwxrwxrwx 1 root root 21 Oct 9 21:49 sys-devel/bison-2.3.tbz2 -> ../All/bison-2.3.tbz2 lrwxrwxrwx 1 root root 26 Oct 9 21:45 sys-devel/flex-2.5.33-r2.tbz2 -> ../All/flex-2.5.33-r2.tbz2 lrwxrwxrwx 1 root root 29 Oct 9 21:32 sys-devel/gcc-config-1.3.16.tbz2 -> ../All/gcc-config-1.3.16.tbz2 lrwxrwxrwx 1 root root 29 Oct 9 21:39 sys-devel/gettext-0.16.1-r1.tbz2 -> ../All/gettext-0.16.1-r1.tbz2 lrwxrwxrwx 1 root root 30 Oct 9 21:31 sys-devel/gnuconfig-20070118.tbz2 -> ../All/gnuconfig-20070118.tbz2 lrwxrwxrwx 1 root root 28 Oct 9 21:58 sys-devel/libperl-5.8.8-r1.tbz2 -> ../All/libperl-5.8.8-r1.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:42 sys-devel/m4-1.4.9-r1.tbz2 -> ../All/m4-1.4.9-r1.tbz2 lrwxrwxrwx 1 root root 21 Oct 9 21:48 sys-devel/make-3.81.tbz2 -> ../All/make-3.81.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 21:36 sys-devel/patch-2.5.9.tbz2 -> ../All/patch-2.5.9.tbz2 lrwxrwxrwx 1 root root 29 Oct 9 21:52 sys-fs/e2fsprogs-1.39-r2.tbz2 -> ../All/e2fsprogs-1.39-r2.tbz2 lrwxrwxrwx 1 root root 20 Oct 9 22:07 sys-fs/udev-114.tbz2 -> ../All/udev-114.tbz2 lrwxrwxrwx 1 root root 32 Oct 9 21:40 sys-kernel/linux-headers-2.6.21.tbz2 -> ../All/linux-headers-2.6.21.tbz2 lrwxrwxrwx 1 root root 24 Oct 9 21:43 sys-libs/com_err-1.39.tbz2 -> ../All/com_err-1.39.tbz2 lrwxrwxrwx 1 root root 27 Oct 9 21:31 sys-libs/cracklib-2.8.10.tbz2 -> ../All/cracklib-2.8.10.tbz2 lrwxrwxrwx 1 root root 24 Oct 9 21:56 sys-libs/db-4.5.20_p2.tbz2 -> ../All/db-4.5.20_p2.tbz2 lrwxrwxrwx 1 root root 26 Oct 9 21:29 sys-libs/ncurses-5.6-r1.tbz2 -> ../All/ncurses-5.6-r1.tbz2 lrwxrwxrwx 1 root root 23 Oct 9 22:07 sys-libs/pam-0.78-r5.tbz2 -> ../All/pam-0.78-r5.tbz2 lrwxrwxrwx 1 root root 27 Oct 9 21:45 sys-libs/readline-5.2_p7.tbz2 -> ../All/readline-5.2_p7.tbz2 lrwxrwxrwx 1 root root 19 Oct 9 21:48 sys-libs/ss-1.39.tbz2 -> ../All/ss-1.39.tbz2 lrwxrwxrwx 1 root root 31 Oct 9 21:34 sys-libs/timezone-data-2007g.tbz2 -> ../All/timezone-data-2007g.tbz2 lrwxrwxrwx 1 root root 25 Oct 9 21:31 sys-libs/zlib-1.2.3-r1.tbz2 -> ../All/zlib-1.2.3-r1.tbz2 lrwxrwxrwx 1 root root 24 Oct 9 21:41 sys-process/procps-3.2.7.tbz2 -> ../All/procps-3.2.7.tbz2 lrwxrwxrwx 1 root root 18 Oct 9 21:49 virtual/init-0.tbz2 -> ../All/init-0.tbz2 lrwxrwxrwx 1 root root 22 Oct 9 21:31 virtual/libiconv-0.tbz2 -> ../All/libiconv-0.tbz2 lrwxrwxrwx 1 root root 21 Oct 9 21:31 virtual/libintl-0.tbz2 -> ../All/libintl-0.tbz2 |
Now, we just need to figure out a way to get the packages to a remote repository. That’s where bashrc, rsync and ssh come into play.
Take a looksie at my bashrc (or at solar’s if you can find it), especially at syncpkg. That’s the actual function doing all the work for us. It’s basically guessing what profile you’re using atm (by reading the info’s on /etc/make.profile (x86, amd64)), and the uploading it to the remote location given by REPO_HOST, REPO_BASE and REPO_TYPE (either via environment or by /etc/make.conf).
Sure the emerge takes a bit longer (since emerge forks an rsync process via ssh that syncs the just merged binary to our remote repository), but that way you have a nice repository, from which you can install one or 1.000 boxes.