| .TH INSTALL 1 |
| .SH NAME |
| install \- notes about Plan 9 from User Space installation |
| .SH SYNOPSIS |
| .B |
| cd \*9; ./INSTALL |
| [ |
| .B -b |
| | |
| .B -c |
| ] [ |
| .B -r |
| .I path |
| ] |
| .SH DESCRIPTION |
| To obtain the Plan 9 tree, use Mercurial |
| (see |
| .IR hg (1)) |
| or download a tar file from |
| .HR http://swtch.com/plan9port "" . |
| .PP |
| The tree can be unpacked anywhere, but the |
| usual place is |
| .BR /usr/local/plan9 . |
| In the root of the tree, run |
| .BR ./INSTALL . |
| This script builds the Plan 9 build program |
| .IR mk (1) |
| if necessary, |
| cleans all previously built object files and libraries out of the tree, |
| rebuilds and installs everything, and then cleans up. |
| .PP |
| There are a few files in tree which have the root |
| hard-coded in them. |
| After the build, |
| .I INSTALL |
| edits these files to replace the string |
| .B /usr/local/plan9 |
| with the name of the root of the current tree. |
| .PP |
| Finally, |
| .I INSTALL |
| builds an HTML version of the manual and installs it in |
| .BR \*9/man . |
| .PP |
| The installation can be thought of as two steps: |
| build all the binaries, and then edit files as necessary |
| to fix the references to the installation root. |
| If necessary, these can be run separately. |
| Given the |
| .B -b |
| flag, |
| .I INSTALL |
| performs only the first step. |
| Given the |
| .B -c |
| flag, |
| .I INSTALL |
| performs only the second step. |
| The first step can be done with the tree in a temporary work directory, |
| but the second step must be done once the tree is in its final location. |
| If you want to build the project in one location and then install into |
| another location, use |
| .B -r |
| .I path |
| to specify the |
| .I final |
| location of Plan9 tree. |
| These flags are only necessary when trying to conform to the |
| expectations of certain package management systems. |
| .PP |
| At the end of the installation, |
| .I INSTALL |
| prints suggested settings for the environment variables |
| .B $PLAN9 |
| and |
| .BR $PATH . |
| .PP |
| Plan 9 from User Space uses different threading implementations on Linux 2.6 and |
| later kernels than on 2.4 and earlier; |
| and on FreeBSD 5 and later kernels than on FreeBSD 4 and earlier. |
| Running binaries from one class on another will not work. |
| .PP |
| Some Linux 2.6 systems (e.g., Gentoo) do not use the new NPTL pthread library |
| even though the kernel supports them. On these systems, plan9port must |
| fall back on the threading code intended for Linux 2.4. To accomplish this, |
| .I INSTALL |
| checks whether the running system uses NPTL and sets |
| .B SYSVERSION |
| in |
| .B \*9/config |
| accordingly. |
| The file |
| .B \*9/LOCAL.config |
| is appended to |
| .B config |
| after this auto-detection and can be used to override the choices. |
| If |
| .B LOCAL.config |
| contains a line |
| .B WSYSTYPE=nowsys |
| then the system is built without using X11. |
| .PP |
| On most Linux systems, the X11 header packages need to be installed |
| to build using X11. On Debian. the required packages are |
| libx11-dev, libxext-dev, and libxt-dev. |
| On Ubuntu, it suffices to install xorg-dev. |
| .PP |
| .I INSTALL |
| can safely be repeated to rebuild the system from scratch. |
| .PP |
| Once the system is built for the first time, |
| it can be maintained and rebuilt using |
| .IR mk (1). |
| To rebuild individual commands or libraries, |
| run |
| .B mk |
| .B install |
| and |
| .B mk |
| .B clean |
| in the appropriate source directory |
| (see |
| .IR src (1)). |
| .SH FILES |
| .TP |
| .B \*9/lib/moveplan9.files |
| the list of files that need to have |
| .B /usr/local/plan9 |
| edited out of them |
| .TP |
| .B \*9/lib/moveplan9.sh |
| the script that edits the files |
| .TP |
| .B \*9/src/mkmk.sh |
| the shell script used to build |
| .IR mk (1) |
| .TP |
| .B \*9/dist/manweb |
| the shell script that builds the HTML manual |
| .TP |
| .B \*9/man/index.html |
| the top-level page in the HTML version of the manual |
| .TP |
| .B \*9/install.log |
| logged output from the last run of |
| .I INSTALL |
| .TP |
| .B \*9/install.sum |
| a summary of |
| .B install.log |
| .SH SEE ALSO |
| .IR intro (1), |
| .IR hg (1) |