xref: /dragonfly/UPDATING (revision c9f721c2)
1$DragonFly: src/UPDATING,v 1.7 2004/04/22 23:24:19 dillon Exp $
2
3Updating Information for DragonFly users.
4
5This file should warn you of any pitfalls which you might need to work around
6when trying to update your DragonFly system.
7
8If you discover any problem, please contact the bugs@lists.dragonflybsd.org
9mailing list with the details.
10
11------------------------------------------------------------------------------
12
13> Upgrading to DragonFly from FreeBSD
14---------------------
15
16You can build the DragonFly world and DragonFly kernels on a FreeBSD-4.x or
17FreeBSD-5.x machine and then install DragonFly over FreeBSD, replacing
18FreeBSD.  Note that the DragonFly buildworld target does not try to reuse
19make depend information, it starts from scratch, so no pre-cleaning of the
20object hierarchy is necessary.
21
22	# get the CVS pository (it is placed in /home/dcvs, 500MB).
23	# Please use the -h option and a mirror site to pull the
24	# initial repository, but feel free to use the main repository
25	# machine to pull updates.
26	cvsup /usr/share/examples/cvsup/DragonFly-supfile
27	# install the source from the CVS hierarchy (remove preexisting
28	# FreeBSD src first) (500MB)
29	cd /usr
30	rm -rf src
31	cvs -R -d /home/dcvs checkout src
32	cvs -R -d /home/dcvs checkout dfports
33
34	# build it (500MB used in /usr/obj)
35	#
36	cd /usr/src
37	make buildworld
38	make buildkernel KERNCONF=<KERNELNAME>
39
40Once you have built DragonFly you have to install it over FreeBSD.  Since
41DragonFly does not track changes made by FreeBSD to its include file
42hierarchy and include file pollution can cause all sorts of unexpected
43compilation issues to come up, it is best to wipe your include hierarchy
44prior to installing DragonFly.  Note that you should not wipe any installed
45FreeBSD header files or binaries until after you have successfully completed
46the build steps above.
47
48	rm -rf /usr/include
49	mkdir /usr/include
50	make installkernel KERNCONF=<KERNELNAME>
51	make installworld
52
53Then you need to upgrade your /etc.  DragonFly's 'make upgrade' target
54will unconditionally upgrade the /etc files that sysops do not usually
55mess around with, such as the files in /etc/rc.d.  If you are unsure we
56recommend that you make a backup of your /etc before applying this step.
57Note that DragonFly's RC system is basically RCNG from FreeBSD-5, but
58there are some differences in the contents of the RC files.
59
60	make upgrade
61
62Finally we recommend that you do an 'ls -lta BLAH' for /bin, /sbin, /usr/bin,
63/usr/bin, and /usr/lib, and remove any stale files that you find.
64
65------------------------------------------------------------------------------
66
67> Upgrading DragonFly on an existing DragonFly system.
68---------------------
69
70The best way to upgrade DragonFly is to maintain a copy of the DragonFly
71CVS repository via cvsup and to checkout the source base and DragonFly
72ports via this repository.   The repository is stored in /home/dcvs by
73default and requires about 500MB of disk space.  The checked out source
74tree (/usr/src) requires about 500MB of disk space, and the build will
75eat around 500MB of space out of /usr/obj.  To maintain the build you
76should reserve at least 2GB of disk space, and 3GB if you have the space.
77
78Note: most people run cvsup via a root cron job to keep the repository up to
79date.  Please limit such automatic updates to once a day and try to randomize
80the hour and minute in the cron job a bit to avoid pileups.
81
82	# get the CVS pository (it is placed in /home/dcvs)
83	cvsup /usr/share/examples/cvsup/DragonFly-supfile
84	# install the source from the CVS hierarchy
85	cd /usr
86	cvs -R -d /home/dcvs checkout src
87	cvs -R -d /home/dcvs checkout dfports
88
89Once you have the repository and broken out sources you can decide whether to
90update your sources from the repository automatically or manually.  Since
91you are tracking changes made to DragonFly, it is usually a good idea to
92update the sources manually:
93
94	cd /usr/src
95	cvs update
96
97To upgrade a DragonFly system from sources you run the following sequence:
98
99	cd /usr/src
100	make buildworld
101	make buildkernel KERNCONF=<KERNELNAME>
102	make installkernel KERNCONF=<KERNELNAME>
103	make installworld
104
105You will also want to run the 'upgrade' target to upgrade your /etc.  The
106upgrade target is aware of stale files created by older DragonFly
107installations and should delete them automatically.
108
109	make upgrade
110
111If you are using 'config' manually from /usr/src/sys/i386/conf/BLAH, note
112that the build will use the current DragonFly environment rather then
113the post-build environment from the last buildworld.   For this reason manual
114configs are discouraged.  The proper way to build a kernel is to use the
115'buildkernel' or 'quickkernel' target in /usr/src.
116
117Once you've done a full build of the world and kernel you can do incremental
118upgrades of either by using the 'quickworld' and 'quickkernel' targets
119instead of 'buildworld' and 'buildkernel'.  If you have any problems with
120the quick targets, try doing a cvsup, cvs update, and then a full buildworld
121and buildkernel as shown above, before asking for help.
122
123> Kerberos IV
124-------------
125
126Kerberos IV (eBones) was removed from the tree, please consider moving to
127Kerberos 5 (Heimdal).
128
129> FreeBSD and DragonFly ports
130-----------------------------
131
132DragonFly will eventually have its own package management system but at the
133moment we leverage off of the FreeBSD ports system.  You should maintain
134/usr/ports from the FreeBSD cvs repository via cvsup just like you do now.
135
136DragonFly has its own 'port overrides' hierarchy in /usr/dfports.  You can
137check this out of the DragonFly cvs repository using:
138
139cd /usr
140cvs -R -d /cvs checkout dfports
141
142You may wish to use a consolidated distfiles directory, in which case you
143should make /usr/dfports/distfiles a softlink to your existing distfiles
144directory (typically /usr/ports/distfiles).
145
146Be sure that you have installed 'relpath' from the DragonFly sources
147(/usr/src/usr.bin/relpath) as well as the updated /usr/share/mk files from
148/usr/src/share/mk.  As a test you can cd into /usr/ports/sysutils/cpdup and
149build the port.  Dragonfly should contain an override and you should see a
150warning message that the DragonFly override is being build instead when you
151build it from the FreeBSD ports.
152
153