This is one of those things that I will probably be looking for again in the future, no matter how lame it seems right now.
I like to keep local copies of the source code for the software I have on Crux systems, just because if something breaks and I am not online, then it helps to get things going again. It’s also useful if network speeds are slow or if there’s a problem getting a particular source package with the proper checksum.
On the other hand, that tends to take up a lot of space, particularly if there’s a large library or compile-time dependency involved. ocaml, for example, is a gargantuan beast that’s only really necessary to compile wyrd. Once it’s been built, I don’t need ocaml ever again.
So to save space I sometimes have to remove source packages (which can be neatly done with prt-utils’
prtwash -a -s command), but it makes me itchy.
So I decided today to get all the source packages back from the applications I’d installed and then cleared out, as a precautionary measure.
pkgmk has a
-do flag, which just gets the package but doesn’t do anything with it.
But I don’t think you can give
pkgmk the name of a program to build; it has to be executed from the port directory, where it reads the Pkgfile and goes to work.
prt-get has a
path command, which spits out the full path of a package, and that means I can
cd into a
path‘d directory and issue the
pkgmk -do command.
If I can get a proper list of all the packages on the system, that is.
prt-get to the rescue again, with the wonderfully sparse
listinst command. Ergo:
for i in `prt-get listinst` ; do cd `prt-get path $i` ; pkgmk -do ; done
Not much in the way of error checking. Definitely not idiot-proof. And it could, I suppose, stand to save a little bandwidth if the package is already on hand and passes an md5sum check.
But those are embellishments. Flair! Bloat!
Anyway, that’s probably the dumbest thing I’ve come up with for a while. Watch: This’ll be the most frequent page I hit over the next year or so. This and the page for setting locales. …