cvs checkout ./. csup
Daniel Nebdal
dnebdal at gmail.com
Tue Nov 15 13:36:03 UTC 2011
On Tue, Nov 15, 2011 at 12:00 PM, Matthew Seaman
<m.seaman at infracaninophile.co.uk> wrote:
> On 15/11/2011 09:48, Matthias Apitz wrote:
>> Since many years I'm fetching or updating /usr/ports with
>>
>> # cd /usr
>> # setenv CVSROOT :pserver:anoncvs at anoncvs.fr.FreeBSD.org:/home/ncvs
>> # cvs checkout ports
>>
>> and later do the updating just with:
>>
>> # cd /usr/ports
>> # cvs update
>> # portupgrade -ai
>>
>> The FreeBSD handbook describes (or recommends?) using 'csup' for
>> updating ports tree... What is the advantage (or reason, if any)?
>
> Efficiency, basically. csup should require less bandwidth and put less
> load on servers than using cvs directly. It works like rsync, only
> transferring the parts of the files that changed but exploiting the cvs
> revision history to produce more specific and minimal deltas than you
> can get just by using the standard rsync algorithm.
>
> However csup(1) doesn't give you any of the VCS features you'ld get by
> doing a cvs checkout -- so no simple way to diff a local copy against
> the repo, etc. etc. 'cvs checkout' of all or parts of the ports is still
> frequently preferable for developing rather than just using the ports.
>
> There are also many more cvsup servers worldwide than there are anon-cvs
> servers.
>
There's also portsnap, which has been in the base system for a while
now. It has some of the same drawbacks as csup/cvsup (no VCS
features), but is in my experience faster than them. In short, you can
use "portsnap fetch extract" to download a complete compressed tarball
of current ports and extract it, and after doing that you can use
"portsnap fetch update" to update to the current state. Read the
manpage; there are some important details.
It uses a binary patch system that's quite efficient, so if you just
want an updated /usr/ports , it's probably the fastest solution. (I
think the exact method is that "fetch" grabs a tarball if it doesn't
exist. If it does exist, it gets the binary patches required to update
it to the current state. With it in place, "extract" unpacks the
entire thing, and "update" only extracts the files touched by the last
"fetch"-command.)
It has a handbook page: http://www.freebsd.org/doc/handbook/portsnap.html
--
Daniel Nebdal
More information about the freebsd-ports
mailing list