Changeset 2594 for trunk/server
- Timestamp:
- Aug 27, 2014, 10:53:18 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server/doc/install-howto.sh
r2485 r2594 164 164 165 165 # ----------------------------->8-------------------------------------- 166 # SPHEROID SHENANIGANS167 168 # Install the Python eggs and Ruby gems and PEAR/PECL doohickeys that are on169 # the other scripts.mit.edu servers and do not have RPMs.170 # The general mode of operation will be to run the "list" command171 # on both servers, see what the differences are, check if those diffs172 # are packaged up as rpms, and install them (rpm if possible, native otherwise)173 174 # Note: Since ultimately we'd like to move away from using per-language175 # package manager and all of these be RPMs, it is of questionable176 # importance how much /good/ automation for these is necessary.177 178 # Warning: For a new release, we're supposed to check if Fedora has179 # packaged up the RPM. Unfortunately we don't really have good incants180 # for this.181 182 # Warning: If you're installing a new server mid-lifecycle (or even if183 # this is the start of a cycle, but you've been staggering the184 # installation of servers), upstream may have moved on. Because we185 # don't normally upgrade spheroid projects, that means executing these186 # instructions directly means that you will have mismatched versions187 # (the new servers will have newer versions.) Please follow the188 # UPGRADE commentary attached to each of these.189 190 # Warning: The package lists that are generated are inconsistent on191 # the question of whether or not they contain all packages (locally192 # installed as well as distro packaged), or if they just contain locally193 # installed packages. Check this carefully; many of the install incants194 # filter out already installed packages.195 196 # PERL CPAN197 # ---------198 199 # Install the full list of perl modules that users expect to be on the200 # scripts.mit.edu servers.201 cd /root202 export PERL_MM_USE_DEFAULT=1203 cpan # this is interactive, enter the next two lines204 o conf prerequisites_policy follow205 o conf commit206 # on a reference server207 perldoc -u perllocal | grep head2 | cut -f 3 -d '<' | cut -f 1 -d '|' | sort -u | perl -ne 'chomp; print "notest install $_\n" if system("rpm -q --whatprovides \"perl($_)\" >/dev/null 2>/dev/null")' > perl-packages.txt208 # arrange for perl-packages.txt to be transferred to server209 # Package list only contains new packages210 cat perl-packages.txt | perl -MCPAN -e shell211 # These are in /usr/local212 213 # UPGRADE: Installing old versions of CPAN modules requires you to214 # specify the full path of a module, e.g.215 # M/MS/MSCHWERN/Test-Simple-0.62.tar.gz. It is not currently clear how216 # to get this information programatically. Furthermore, we have a lot217 # of CPAN managed modules. Since CPAN is the only thing218 # placed in /usr/local at this point, it may be easier to simple tar and219 # cp the Perl modules from one server to another, to keep them220 # consistent. But doing this is fiddly XXX221 222 # PYTHON EGGS223 # -----------224 225 # - Look at /usr/lib/python2.7/site-packages and226 # /usr/lib64/python2.7/site-packages for Python eggs and modules.227 # There will be a lot of gunk that was installed from packages;228 # easy-install.pth in /usr/lib/ will tell you what was easy_installed.229 # First use 'yum search' to see if the relevant package is now available230 # as an RPM, and install that if it is. If not, then use easy_install.231 # Pass -Z to easy_install to install them unzipped, as some zipped eggs232 # want to be able to write to ~/.python-eggs. (Also makes sourcediving233 # easier.)234 # 'easy_install AuthKit jsonlib2 pygit'235 cat /usr/lib/python2.7/site-packages/easy-install.pth | grep "^./" | cut -c3- | cut -f1 -d- > egg.txt236 # Package list only contains new packages237 cat egg.txt | xargs easy_install -Z238 # These are in /usr239 240 # UPGRADE: Use 'easy_install -n' to see what new versions are installed, and if there241 # are updates validate them and upgrade them on the old servers. Since242 # we have a really small package list (around 4) checking these manually243 # should be fine. Note that dry run is slightly buggy and may fail244 # midway processing files on account of a missing build directory.245 246 # RUBY GEMS247 # ---------248 249 # - Look at `gem list` for Ruby gems.250 # Again, use 'yum search' and prefer RPMs, but failing that, 'gem install'.251 # ezyang: rspec-rails depends on rspec, and will override the Yum252 # package, so... don't use that RPM yet253 # XXX This doesn't do the right thing for old version gems254 gem list --no-version > gem.txt255 # Package list contains distro gems too256 gem install $(gem list --no-version | grep -Fxvf - gem.txt)257 # Also, we need to install the old rails version258 gem install -v=2.3.14 rails259 # These are in /usr260 261 # UPGRADE: You can either upgrade out-of-date gems, or leave them at262 # the old version. We recommend the latter (see below for the263 # rationale), but note that the install script described here doesn't264 # pin against version, so you'll need to supply the -v parameters265 # manually (the gems we install manually don't move too quickly, so this266 # is fairly tractable if you check 'gem outdated'.)267 #268 # If you want to upgrade, do NOT use wildcard 'gem update'; use 'gem269 # outdated' to find out all gems that are out of date, and verify this270 # against our locally installed gems (there will be a lot of out of date271 # gems, but this is simply because Fedora packaging lags behind the272 # canonical versions (this is a good thing). Manually upgrade just273 # those gems. Note that this doesn't save you from having to install274 # old gems on the servers that are being installed out-of-cycle,275 # because Ruby supports pinning against old versions, and if those gems276 # then mysteriously disappear, things will be sad (note that this isn't277 # a *huge* problem, because usually when you pin gems it's in278 # conjunction with rvm, so they have their local copy of the gem.)279 280 # PHP PEAR281 # --------282 283 # - Look at `pear list` for Pear fruits (or whatever they're called).284 # Yet again, 'yum search' for RPMs before resorting to 'pear install'. Note285 # that for things in the beta repo, you'll need 'pear install package-beta'.286 # (you might get complaints about the php_scripts module; ignore them)287 pear list | tail -n +4 | cut -f 1 -d " " > pear.txt288 # Package list contains distro packages289 pear config-set preferred_state beta290 pear channel-update pear.php.net291 pear install $(pear list | tail -n +4 | cut -f 1 -d " " | grep -Fxvf - pear.txt)292 # These are in /usr293 294 # PHP PECL295 # --------296 297 # - Look at `pecl list` for PECL things. 'yum search', and if you must,298 # 'pecl install' needed items. If it doesn't work, try 'pear install299 # pecl/foo' or 'pecl install foo-beta' or those two combined.300 pecl list | tail -n +4 | cut -f 1 -d " " > pecl.txt301 # Package list contains distro packages302 pecl install --nodeps $(pecl list | tail -n +4 | cut -f 1 -d " " | grep -Fxvf - pecl.txt)303 # These are in /usr304 305 # ----------------------------->8--------------------------------------306 166 # INFINITE CONFIGURATION 307 167
Note: See TracChangeset
for help on using the changeset viewer.