13 | | You can view this document with glorious Trac Wiki formatting at: |
14 | | * http://trac.mcs.anl.gov/projects/bcfg2/wiki/EncapHowto |
15 | | (Although that version may be out of date) |
16 | | |
17 | | You can obtain the latest version of the code from bcfg2 svn: |
18 | | * `svn co https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2/encap` |
19 | | |
20 | | Or browse the latest version on the web via: |
21 | | * http://trac.mcs.anl.gov/projects/bcfg2/browser/trunk/bcfg2/encap |
22 | | |
23 | | Using the encap package manager it automatically downloads, builds and |
24 | | creates encap packages for bcfg2 and dependencies to `/usr/local/encap`, and |
25 | | installs symbolic links to these packages from `/usr/local` (the usual encap |
26 | | thing). |
27 | | |
28 | | It attempts to be as self contained as possible; everything gets linked to |
29 | | under `/usr/local/lib/bcfg2`, except for bcfg2 itself and some dependent |
30 | | software, which is prefixed by `b2-` (`b2-openssl`, `b2-python` etc.). |
31 | | |
32 | | To run the bcfg2 server, you also need to install gamin, which |
33 | | supports a subset of the platforms bcfg2 client will work on, including |
34 | | GNU/Linux and FreeBSD. |
35 | | |
36 | | When using this packaging, `/etc/bcfg2.conf` is instead |
37 | | `/usr/local/etc/bcfg2.conf`. |
38 | | |
39 | | This should be considered an alpha version. Everything compiles and seems to |
40 | | work, but it has not yet been tested with a working bcfg2 repository. |
41 | | |
42 | | == Building and installing everything == |
43 | | 1. Make sure all of the Prerequisites (see below) are installed. |
44 | | 1. The build user needs write access to the encap source and build |
45 | | directories. By default, these are `/usr/local/encap` and |
46 | | `/usr/local/src`. If you like to live dangerously, you can also just do |
47 | | the builds as `root`. |
48 | | 1. Run `make`. This will kick off and background the entire build process. |
49 | | Make output will be redirected to `make.log`, and package build output |
50 | | will go to individual log files. |
51 | | 1. If everything goes well, try running "`bcfg2-repo-validate`". This should |
52 | | not generate a python traceback :-) |
53 | | 1. You now have *-encap-*.tar.gz encap packages you can distribute to other |
54 | | machines. If you don't like the OS name encap uses automatically (esp. |
55 | | on GNU/Linux these can be too generic), do `make rename OS=somestring`. |
56 | | |
57 | | == Prerequisites == |
58 | | * GNU gcc and GNU g++ |
59 | | * If you are using the gcc distributed with Solaris/x86 10, you need to |
60 | | install the gcc bugfix at http://www.openssl.org/~appro/values.c by |
61 | | running "ksh -f values.c" as root (or openssl will segfault) |
62 | | * GNU make (make sure "gmake" links to GNU make on non-GNU platforms) |
63 | | * epkg (the encap package manager) |
64 | | * Canonical website is http://www.encap.org/epkg |
65 | | * Mirror of epkg binaries is available at http://www.dclark.us/mirror/ |
66 | | * If built from source, first need all recommended libraries from web page |
67 | | |
68 | | You will need binaries of the GNU tools. For GNU and BSD based operating |
69 | | systems, you should be able to get these via the operating system's package |
70 | | system. For commercial operating systems, these can be obtained from: |
71 | | |
72 | | AIX:: |
73 | | * UCLA's Public Domain Software Library for AIX at |
74 | | http://aixpdslib.seas.ucla.edu/aixpdslib.html |
75 | | (These are trivial to convert into encap packages) |
76 | | * Bull AIX Freeware at http://www.bullfreeware.com/ |
77 | | |
78 | | Solaris:: |
79 | | * Freeware for Solaris at http://www.sunfreeware.com/ |
80 | | * Community Software for Solaris at http://www.blastwave.org/packages.php |
81 | | |
82 | | == Supported Platforms == |
83 | | Below is a table of platforms that have been successfully bootstrapped using |
84 | | this code. |
85 | | |
86 | | || OS || Vendor || Version || Arch || GCC || By || With VERSION || |
87 | | || AIX || IBM || 5.3 || POWER || 4.1.0 || dc || 0.7/0.8.2 || |
88 | | || GNU/Linux || Debian || Sarge || i386 || 3.3.5 || dc || 0.7/0.8.2 || |
89 | | || GNU/Linux || Debian || Sid || i386 || 4.1.2 || dc || 0.8/0.8.2 || |
90 | | || Solaris || Sun || 10 || Sparc || 3.4.3 || dc || 0.7/0.8.2 || |
91 | | || Solaris || Sun || 10 || i386 || 3.4.3 || dc || 0.7/0.8.2 || |
92 | | |
93 | | dc: "Daniel Clark" <mailto:[email protected]> |
94 | | |
95 | | If you bootstrap a platform not listed above, please add a comment to: |
96 | | * http://trac.mcs.anl.gov/projects/bcfg2/ticket/74 |
97 | | so that platform can be added to the list. |
98 | | |
99 | | If you modified any of the files in this package to be able to bootstrap the |
100 | | new platform, please include either diffs or a tarball of your modified |
101 | | version in a new ticket so your changes can be incorporated into a new |
102 | | release. |
103 | | |
104 | | Any other notes, such as where you got the GNU binaries or any issues people |
105 | | should be aware of, would also be appreciated. |
106 | | |
107 | | You may want to scan all of the bootstrapped binaries and libraries with |
108 | | `ldd` (or equivalent) to make sure there are no dependencies on libraries |
109 | | other than those included with the base operating system and the libraries |
110 | | built as part of the bootstrap process. |
111 | | |
112 | | On non-GNU operating systems, libgcc and libstdc++ are a run-time |
113 | | requirement. These libraries are usually distributed with gcc/g++, so the |
114 | | bootstrap system attempts to create encap packages containing those |
115 | | libraries by copying them from the build machine. To test that this worked, |
116 | | you'll want to either temporarily remove gcc/g++ from the build machine and |
117 | | make sure everything still works, or install the bcfg2-*.tar.gz encap |
118 | | packages on a "clean" machine (without a gcc/g++ install) and test on that |
119 | | machine. |
120 | | |
121 | | Note that the doc for the encap profile format is in "man 5 encap_profile". |
122 | | |
123 | | == Release Notes == |
124 | | 0.1:: |
125 | | * Initial Released Version |
126 | | * Work needs to be done to minimize size of distribution. In 0.1 |
127 | | libraries and binaries are not stripped, and there is a lot of |
128 | | pruning that can be done of individual packages. |
129 | | |
130 | | 0.2:: |
131 | | * Updated bcfg2 to 0.8.2pre7 |
132 | | * Updated README to point to mcs.anl.gov resources |
133 | | |
134 | | 0.3:: |
135 | | * Updated bcfg2 to 0.8.2pre10 |
136 | | |
137 | | 0.4:: |
138 | | * Versions before this version won't work without manually fixing paths |
139 | | * Added patches so paths actually exist, specifically: |
140 | | * bcfg2.conf default location is /usr/local/etc |
141 | | * epkg/encap paths changed to encap default /usr/local paths |
142 | | * schema prefix patch (changeset 1953) applied |
143 | | * default schema prefix changed to /usr/local/lib/bcfg2 |
144 | | * Added mirror of all packages downloaded by the profiles at |
145 | | http://www.pobox.com/users/dclark/mirror and made mirror default for |
146 | | those downloads |
147 | | * Set up automatic hourly mirror of bcfg2 ftp site *.tar.gz files |
148 | | * Mirror of other packages is manual (but deps shouldn't change often) |
149 | | |
150 | | 0.5:: |
151 | | * Removed external download of patches as that was not working consistently; |
152 | | replaced with patches inline the bcfg2 encap profile (.ep file) |
153 | | * Added GNU patch dependency, both for bcfg2 patches and call from Cfg.py |
154 | | * Fixed bcfg-repo-validate so it can find xmllint (as b2-xmllint) |
155 | | |
156 | | 0.6:: |
157 | | * Updated bcfg2 to 0.8.2 (released version) |
158 | | * Removed r1953 patch from bcfg2 profile, since that is included in 0.8.2 |
159 | | * Added alpha version warning |
160 | | |
161 | | 0.7:: |
162 | | * Added Solaris support |
163 | | |
164 | | 0.8:: |
165 | | * Added python code to fix paths; removed inline patch & GNU patch dependency |
166 | | * Path change happens as part of install, logged to postinstall.log |
167 | | * Changed prefix from b2 to b2- to disambiguate from system commands |
168 | | * Fixes to make man pages easier to access |
169 | | * Install tools as b2-example-tools-* |
170 | | * Added some auxiliary tools under tools/ directory |
171 | | * daemontools - cross-platform alternative to init scripts/cron |
172 | | * ostiary - simple/secure daemon for kicking off a local script |
173 | | * epkg Makefile - to build epkg when prebuilt binaries aren't available |
| 9 | <Reference to README and INSTALL in wiki: format> |