Update SL57 and later i386 and x86_64 ===================================== Introduction ------------ Keep the following order: - Get the latest security updates from the SL mirror for the "update.$ARCH" repository. - Build kernel modules. - Get updates for the "psi" repository. - Get updates for the "other" repository. - Get updates for the "nonfree" repository. - Create new snapshots. - Release "unstable" from new snapshots. - Create a new PSI version. - Release "testing". - Release "stable". Update The Different Repositories --------------------------------- Get the Latest Security Update RPMS From SL Mirror ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Get the latest security update RPMS from the local SL57 mirror for both architectures, i386 and x86_64, by invoking `rsync_security_updates_to_all_directories.sh` on tux50. They will be copied to the corresponding `.../updates.${ARCH}/all/` directories. This will take some time:: # cd /afs/psi.ch/software/linux/dist/scientific/57/scripts/ # nohup ./rsync_security_updates_to_all_directories.sh > \ # UPDATE_LOG/$(date +%Y-%m-%d)-rsync_security_updates_to_all_directories.log 2>&1 & Then, check for errors in the log file:: # grep -i error UPDATE_LOG/20091221-rsync_security_updates_to_all_directories.log ... Finally, run `update_symlinks_in_rpms_all.sh` to keep all symlinks in the directory `/afs/psi.ch/software/linux/dist/scientific/57/RPMS_all/` up to date. The script removes dead links and creates new links to the new RPMS. It is basically not necessary for running PSI updates, rather it's just convenient to have a directory with the list of all RPMS of a distribution:: # ./update_symlinks_in_RPMS_all.sh Build Kernel Modules ~~~~~~~~~~~~~~~~~~~~ First install the latest kernel and kernel-devel packages on the respective build systems. Then build the RPMS on the corresponding build systems using the scripts below. 32 bit:: # [gasser_m@tukan50-32] # cd /afs/psi.ch/software/linux/dist/scientific/57/scripts # sh build_kernel_modules.sh 2.6.18-194.3.1.el5 > \ # UPDATE_LOG/20100630-build_kernel_modules-2.6.18-194.3.1.el5.i686.log 2>&1 # check-set-of-built-kernel-modules.bash /tmp/rpms_for_2.6.18-194.3.1.el5 \ # KERNEL_MODULES_TO_BUILD/sl5.i386.kms-to-be-built # sh build-gpfs.sl5x.i386.sh 64 bit:: # [gasser_m@tux50-64] # cd /afs/psi.ch/software/linux/dist/scientific/57/scripts # sh build_kernel_modules.sh 2.6.18-194.3.1.el5 > \ # UPDATE_LOG/20100630-build_kernel_modules-2.6.18-194.3.1.el5.x86_64.log 2>&1 # check-set-of-built-kernel-modules.bash /tmp/rpms_for_2.6.18-194.3.1.el5 \ # KERNEL_MODULES_TO_BUILD/sl5.x86_64.kms-to-be-built # sh build-gpfs.sl5x.x86_64.sh Finally, from both build systems, copy the built kernel modules to the psi repository:: # cp -av `cat /tmp/rpms_for_2.6.18-194.3.1.el5` /afs/psi.ch/software/linux/dist/scientific/57/psi/all/ Get Updates For The Psi Repository ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Get Updates For The Other Repository ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Get Updates For The Nonfree Repository ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create New Snapshots -------------------- The script `create_new_snapshots.sh` will pick out the latest version of each RPM found in the active repositories. It will create a subdirectory (snapshot) in each repository and name it after the current date using the format YYYYMMDD. Then it will place a symbolic link into this subdirectory for each latest RPM found in the `all` subdirectory of the currently processed repository. To invoke it run the following command:: # nohup ./create_new_snapshots.sh alldirs > UPDATE_LOG/$(date +%Y-%m-%d)-create_new_snapshots.log 2>&1 & Release Unstable, Create A New PSI Version And Release The Other SLP Snapshots ------------------------------------------------------------------------------ Release Unstable ~~~~~~~~~~~~~~~~ The "unstable" distribution is where active development of SLP occurs. Generally, this distribution is run by developers and those who like to live on the edge. The command `release_unstable.sh` will update the respective symlinks `.../unstable` to the latest snapshots. Because `release_unstable.sh` is interactive, you should not redirect the output to a file, as you won't be able to see the questions asked. Before `release_unstable.sh`:: # [gasser_m@tux50] # cd /afs/psi.ch/software/linux/dist/scientific/57/ # ls -l */unstable # ./release_unstable.sh After `release_unstable.sh`:: # ls -l */unstable As soon as an unstable distribution has become testing a new unstable can be generated which again points to the new latest snapshots. Create A New PSI Version ~~~~~~~~~~~~~~~~~~~~~~~~ Run:: # cd /afs/psi.ch/software/linux/dist/scientific/57/scripts # sh create_new_psi_version.sh As soon as the new PSI version is created, i.e. the symbolic links which point to the same target snapshots as the latest unstable snapshots, the psi-version-info.txt file has to be actualized to activate the PSI auto-update again for the hosts which are set to unstable:: # ./create_file_psiversion-info.sh Eventually, test the unstable release. Release Testing ~~~~~~~~~~~~~~~ The "testing" distribution contains packages that haven't been accepted into a "stable" release yet, but they are in the queue for that. The main advantage of using this distribution is that it has more recent versions of software. The command `release_testing.sh` will update the respective symlinks `.../testing` to the latest unstable snapshots. If the puppet environment DesktopSL5Unstable was modified and the changes should be made in DesktopSL5Testing, too, run `rsync_puppet_env_testing_with_unstable.sh` before `release_testing.sh`. Because `release_testing.sh` is interactive, you should not redirect the output to a file, as you won't be able to see the questions asked:: # [gasser_m@tux50] # cd /afs/psi.ch/software/linux/dist/scientific/57/scripts # ./rsync_puppet_env_testing_with_unstable.sh # ./rsync_kickstart_dir_DesktopTesting_with_DesktopUnstable.sh # ./release_testing.sh # ./create_file_psiversion-info.sh Release Stable ~~~~~~~~~~~~~~ To activate the PSI auto-update again for testing hosts the psi-version-info.txt file has to be actualized. The "stable" distribution, formerly known as "current", contains the latest officially released distribution of SLP. This is the production release of SLP, the one which we primarily recommend using. The command `release_stable.sh` will update the respective symlinks `.../stable` to the latest unstable snapshots. The procedure is analogous to the procedure described in the "Release Testing" section:: # ./rsync_puppet_env_stable_with_testing.sh # ./rsync_kickstart_dir_DesktopStable_with_DesktopTesting.sh # ./release_stable.sh # ./create_file_psiversion-info.sh ### begin ./release_stable.sh ### Sourcing configuration file ./dist-config TOP_DIR is /afs/psi.ch/software/linux/dist/scientific/57 Running ./release_stable.sh ... Latest snapshot in psi: /afs/psi.ch/software/linux/dist/scientific/57/psi/testing -> 20090916 Latest snapshot in others: /afs/psi.ch/software/linux/dist/scientific/57/others/testing -> 20090916 Latest snapshot in update.i386: /afs/psi.ch/software/linux/dist/scientific/57/update.i386/testing -> 20090916 Latest snapshot in update.x86_64: /afs/psi.ch/software/linux/dist/scientific/57/update.x86_64/testing -> 20090916 Latest snapshot in kernel: /afs/psi.ch/software/linux/dist/scientific/57/kernel/testing -> 2.6.18-128.7.1.el5 Latest snapshot in nonfree: /afs/psi.ch/software/linux/dist/scientific/57/nonfree/testing -> 20090916 Latest snapshot in cluster: /afs/psi.ch/software/linux/dist/scientific/57/cluster/testing -> 20090916 Relink stable to the latest snapshots (y/n)? Before `release_stable.sh`:: # [gasser_m@tux50] # cd /afs/psi.ch/software/linux/dist/scientific/57/ # ls -l */stable lrwxr-xr-x 1 gasser_m ait 8 Sep 18 11:25 cluster/stable -> 20090316 lrwxr-xr-x 1 gasser_m ait 8 Sep 18 11:23 enhanced/stable -> 20090316 lrwxr-xr-x 1 gasser_m ait 18 Sep 18 11:24 kernel/stable -> 2.6.18-128.1.1.el5 lrwxr-xr-x 1 gasser_m ait 8 Sep 18 11:24 nonfree/stable -> 20090316 lrwxr-xr-x 1 gasser_m ait 8 Sep 18 11:22 others/stable -> 20090316 lrwxr-xr-x 1 gasser_m ait 8 Sep 18 11:21 psi/stable -> 20090821 lrwxr-xr-x 1 gasser_m ait 8 Sep 18 11:22 update.i386/stable -> 20090820 lrwxr-xr-x 1 gasser_m ait 8 Sep 18 11:21 update.x86_64/stable -> 20090820 After `release_stable.sh`:: # ls -l */stable