Diff for /wikisrc/guide/fetch.mdwn between versions 1.5 and 1.6

version 1.5, 2015/06/19 19:18:31 version 1.6, 2021/04/12 13:15:02
Line 1 Line 1
 **Contents**  This page was moved to:
   [The NetBSD Guide - Obtaining the sources](//www.NetBSD.org/docs/guide/en/chap-fetch.html)
 [[!toc levels=3]]  
   
 # Obtaining the sources  
   
 To read the NetBSD sources from your local disk or to build the system or parts  
 of it, you need to download the NetBSD sources. This chapter explains how to get  
 the NetBSD source using a number of different ways, although the preferred one  
 is to get the tarballs and then update via  
 [[!template id=man name="cvs" section="1"]].  
   
 ## Preparing directories  
   
 Kernel and userland sources are usually placed in `/usr/src`. This directory is  
 not present by default in the NetBSD installation and you will need to create it  
 first. As it is in a system directory, you will need root access to create the  
 directory and make sure your normal user account can write to it. For  
 demonstration purposes, it is assumed that the non-root login is `carlo`.  
 Please replace it with a valid login name on your system:  
   
     $ su  
     Password:  
     # mkdir /usr/src  
     # chown <carlo> /usr/src  
   
 Also, if you want X11R6 sources, you can prepare `/usr/xsrc`:  
   
     # mkdir /usr/xsrc  
     # chown <carlo> /usr/xsrc  
   
 *Note*: Please note that for the subsequent steps, root access is neither needed  
 nor recommended, so this preparation step should be done first. All CVS  
 operations can (and should) be done as normal user and you don't need root  
 privileges any more:  
   
     # exit  
     $  
   
 ## Terminology  
   
 **Before starting to fetch or download the required files, you may want to know  
 the definitions of *Formal releases*, *Maintenance branches* and other related  
 terms**. That information is available under the [NetBSD release glossary and  
 graphs](http://www.NetBSD.org/releases/release-map.html).  
   
 ## Downloading tarballs  
   
 It is sometimes faster to download a tarball and then continue updating with  
 [[!template id=man name="cvs" section="1"]]. You can  
 download tarballs (see  
 [[!template id=man name="tar" section="1"]]) from  
 ftp.NetBSD.org (or any other mirror) for a number of releases or branches.  
   
 The only drawback is that the tarballs are updated less often. Normally, every  
 three days.  
   
 Also, please note that these tarballs include the `CVS` directories, so you can  
 download them and then update your source tree using  
 [[!template id=man name="cvs" section="1"]], as  
 explained in the CVS section.  
   
 ### Downloading sources for a NetBSD release  
   
 The tarball files for the sources of a specific release are available under  
 `/pub/NetBSD/NetBSD-<RELEASE-NUMBER>/source/sets/`  
 on ftp.NetBSD.org (or a mirror), where `<RELEASE-NUMBER>` is the release you  
 want to fetch (for example, `4.0`).  
   
 To fetch the sources of a NetBSD release using tarballs, simply do:  
   
     $ ftp -i ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-4.0/source/sets/  
     Trying 2001:4f8:4:7:2e0:81ff:fe21:6563...  
     Connected to ftp.NetBSD.org.  
     220 ftp.NetBSD.org FTP server (NetBSD-ftpd 20070809) ready.  
     331 Guest login ok, type your name as password.  
     [...]  
     250 CWD command successful.  
     250 CWD command successful.  
     250 CWD command successful.  
     ftp> mget *.tgz  
     local: gnusrc.tgz remote: gnusrc.tgz  
     229 Entering Extended Passive Mode (|||58302|)  
     150 Opening BINARY mode data connection for 'gnusrc.tgz' (79233899 bytes).  
     [...]  
     ftp> quit  
     221-  
         Data traffic for this session was 232797304 bytes in 5 files.  
         Total traffic for this session was 232803039 bytes in 6 transfers.  
     221 Thank you for using the FTP service on ftp.NetBSD.org.  
   
 You should now have 5 files:  
   
     $ ls *.tgz  
     gnusrc.tgz      sharesrc.tgz    src.tgz         syssrc.tgz      xsrc.tgz  
   
 You now must extract them all:  
   
     $ foreach file (*.tgz)  
     ?    tar -xzf $file -C /usr/src  
     ? end  
   
 ### Downloading sources for a NetBSD stable branch  
   
     $ ftp -i ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-release-4-0/tar_files/src/  
     Trying 2001:4f8:4:7:2e0:81ff:fe21:6563...  
     Connected to ftp.NetBSD.org.  
     220 ftp.NetBSD.org FTP server (NetBSD-ftpd 20070809) ready.  
     331 Guest login ok, type your name as password.  
     [...]  
     250 CWD command successful.  
     250 CWD command successful.  
     250 CWD command successful.  
     250 CWD command successful.  
     ftp> mget *.tar.gz  
     local: bin.tar.gz remote: bin.tar.gz  
     229 Entering Extended Passive Mode (|||56011|)  
     150 Opening BINARY mode data connection for 'bin.tar.gz' (914202 bytes).  
     [...]  
     ftp> quit  
     221-  
         Data traffic for this session was 149221420 bytes in 22 files.  
         Total traffic for this session was 149231539 bytes in 23 transfers.  
     221 Thank you for using the FTP service on ftp.NetBSD.org.  
   
 You should now have 22 files:  
   
     $ ls *.tar.gz  
     bin.tar.gz          doc.tar.gz          libexec.tar.gz      tools.tar.gz  
     config.tar.gz       etc.tar.gz          regress.tar.gz      top-level.tar.gz  
     contrib.tar.gz      games.tar.gz        rescue.tar.gz       usr.bin.tar.gz  
     crypto.tar.gz       gnu.tar.gz          sbin.tar.gz         usr.sbin.tar.gz  
     dist.tar.gz         include.tar.gz      share.tar.gz  
     distrib.tar.gz      lib.tar.gz          sys.tar.gz  
   
 You now must extract them all:  
   
     $ foreach file (*.tar.gz)  
     ?   tar -xzf $file -C /usr/src  
     ? end  
   
 ### Downloading sources for a NetBSD-current development branch  
   
 To download the NetBSD-current tarballs, located under  
 `/pub/NetBSD/NetBSD-current/tar_files/src`, just follow the same steps as in the  
 previous section, but now on a different directory.  
   
 You may also want to fetch the X11 source, available under:  
 `/pub/NetBSD/NetBSD-current/tar_files/xsrc`.  
   
 ## Fetching by CVS  
   
 CVS (Concurrent Versions System) can be used to fetch the NetBSD source tree or  
 to keep the NetBSD source tree up to date with respect to changes made to the  
 NetBSD sources. There are three trees maintained for which you can use  
 [[!template id=man name="cvs" section="1"]] to obtain  
 them or keep them up to date:  
   
 The list of currently maintained branches is available under  
 [`src/doc/BRANCHES`](http://cvsweb.NetBSD.org/bsdweb.cgi/src/doc/BRANCHES?rev=HEAD&content-type=text/x-cvsweb-markup)  
 (see the *Status* entry on *Release branches* section).  
   
 Before you can do an initial (full) checkout of the NetBSD sources via  
 *anonymous CVS*, you first have to set some environment variables. For the  
 C-Shell, type:  
   
     $ setenv CVS_RSH ssh  
     $ setenv CVSROOT anoncvs@anoncvs.NetBSD.org:/cvsroot  
   
 Or, the same for the bourne shell:  
   
     $ export CVS_RSH="ssh"  
     $ export CVSROOT="anoncvs@anoncvs.NetBSD.org:/cvsroot"  
   
 We will also use the `-P` option in the examples below since it is used to prune  
 empty directories.  
   
 ### Fetching a NetBSD release  
   
 A release is a set of particular versions of source files, and once released  
 does not change over time.  
   
 To get the NetBSD (kernel and userland) sources from a specific release, run the  
 following command after the preparations done above:  
   
     $ cd /usr  
     $ cvs checkout -r <BRANCH> -P src  
   
 Where `<BRANCH>` is the release branch to be checked out, for example,  
 `netbsd-3-1-RELEASE` or `netbsd-4-0-RELEASE`. If you want to fetch a different  
 patchlevel, you would use `netbsd-3-0-1-RELEASE` or `netbsd-3-0-2-RELEASE`.  
   
 For example, in order to fetch `netbsd-4-0-RELEASE` you would use:  
   
     $ cvs checkout -r netbsd-4-0-RELEASE -P src  
   
 To fetch the X11R6 source, just `checkout` the `xsrc` module. For example:  
   
     $ cvs checkout -r netbsd-4-0-RELEASE -P xsrc  
   
 ### Fetching a NetBSD stable branch  
   
 NetBSD stable branches are also called *Maintenance branches*. Please consult  
 the [[Terminology|guide/fetch#term]].  
   
 If you want to follow a stable branch, just pass the branch name to the  
 [[!template id=man name="cvs" section="1"]] `-r`  
 option.  
   
 For example, if you want to fetch the most recent version of `netbsd-4`, you  
 just need to use that tag:  
   
     $ cd /usr  
     $ cvs checkout -r netbsd-4 -P src  
   
 And for the `xsrc` module:  
   
     $ cvs checkout -r netbsd-4 -P xsrc  
   
 If you have checked out sources from a stable branch in `/usr/src` and want to  
 update them to get the latest security-fixes and bug-fixes, run:  
   
     $ cd /usr/src  
     $ cvs update -Pd  
   
 The same applies to the `xsrc` module, but in that case you will have to change  
 your working directory to `/usr/xsrc` first.  
   
 *Caution!* Be sure to take care in selecting the correct and desired branch tag  
 so you don't accidentally *downgrade* your source tree.  
   
 ### Fetching the NetBSD-current development branch  
   
 To obtain the NetBSD-current source just omit `-r` *`<BRANCH>`* and replace it  
 by `-A`:  
   
     $ cd /usr  
     $ cvs checkout -A -P src  
   
 The `xsrc` is also available:  
   
     $ cd /usr  
     $ cvs checkout -A -P xsrc  
   
 To update your NetBSD-current source tree, add the `-A` flag:  
   
     $ cd /usr/src  
     $ cvs update -A -Pd  
   
 ### Saving some cvs options  
   
 If you find yourself typing some options to cvs over and over again, you can as  
 well put them into a file `.cvsrc` in your home directory. It is useful for just  
 typing `cvs update` on a directory with a branch checked out to update it  
 (adding `-A` would revert the branch to the -current branch, which is not what  
 one usually wants!), For unified diffs, transfers should be compressed and `cvs  
 update` should be mostly quiet:  
   
 **Example `.cvsrc`**:  
   
     #update -dPA  
     update  -dP  
     rdiff   -u  
     diff    -u  
     cvs     -q  
   
 ## Sources on CD (ISO)  
   
 If you prefer to download (and maybe burn) a CD-ROM image with the NetBSD  
 source, just fetch `sourcecd-<RELEASE-NUMBER>.iso` from ftp.NetBSD.org or any  
 other mirror.  
   
 The `sourcecd-<RELEASE-NUMBER>.iso` file is located under  
 `/pub/NetBSD/iso/<RELEASE>`, where `<RELEASE>` is a release of NetBSD,  
 for example, `5.1`:  
   
     ftp://ftp.NetBSD.org/pub/NetBSD/iso/5.1/sourcecd-5.1.iso  
   
 The next step is to burn the ISO image or mount it with the help of  
 [[!template id=man name="vnconfig" section="8"]].  
 Please see [[Using removable media|guide/rmmedia]], as it explains in detail how  
 to do it.  
   
 Assuming you have mounted the CD under `/mnt`, `/mnt/source/sets` should have  
 everything you need to extract:  
   
     $ ls /mnt/source/sets  
     BSDSUM          MD5             gnusrc.tgz      src.tgz         xsrc.tgz  
     CKSUM           SYSVSUM         sharesrc.tgz    syssrc.tgz  
   
 All tarballs should be extracted to the root file system (`/`). The following  
 command will do it:  
   
     $ foreach file (*.tgz)  
     ?   tar -xzf $file -C /  
     ? end  
   
 After that, you should have `/usr/src` and `/usr/xsrc` populated with the NetBSD  
 sources.  

Removed from v.1.5  
changed lines
  Added in v.1.6


CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb