Repositories ============ A number of repositories are currently mirrored on AFS under ``/afs/psi.ch/software/mirror`` (``$MIRROR``), in particular the following versions of Scientific Linux, both 32 and 64 bit: 5.7, 6.0, 6.4, and 6.x. The repositories are accessible via HTTP at http://linux.web.psi.ch/. They are stored in ``$MIRROR/scientific``, each subdirectory of which is a mount point for a separate AFS volume. This is done because smaller AFS volumes are easier to handle (e.g. when moving them between fileservers). Each mirror, e.g. ``$MIRROR/scientific/60/epelp/`` contains a subdirectory ``all``, which contains the packages that we actually want in our YUM repositories. Repository management as well as package building can be done on the various ``tux*.psi.ch`` servers. Further documentation on repository management can be found in ``/afs/psi.ch/project/linux/doc``. This documentation will eventually be included in this document. The directory ``$MIRROR/scientific/scripts`` contains scripts for various tasks related to managing the Scientific Linux repositories. It is a working copy of a [git repository](http://git.psi.ch/linux-dist/sl-scripts). Tools ----- There are several scripts that are used to maintain/update the various repositories. ``sync_updates.sh`` ~~~~~~~~~~~~~~~~~~~ This script copies new packages from the SL mirror to the PSI distribution directories, and runs ``createrepo --update`` to update the repository metadata. Information on the directories is read from a file ``dist-config`` in the current working directory. ``update_symlinks`` ~~~~~~~~~~~~~~~~~~~ Updates ------- To release updates to the existing repositories, the steps below have to be performed. The value of ``DIST_DIR`` is the base directory of the distribution to be updated, i.e. ``/afs/psi.ch/software/linux/dist/scientific/xx/``, where ``xx`` is one of ``57``, ``60``, or ``64``. 1. Update add-on repositories 2. cd "${DIST_DIR}/scripts" 3. ./sync_updates.sh 4. ./update_symlinks.sh 5. ./create_snapshots.sh alldirs 6. ./release_unstable.sh 7. ./incr_version.sh 8. ./update_version_info.sh 9. test new unstable release 10. ./release.sh testing 11. ./update_version-info.sh 12. test testing release 13. ./release.sh stable 14. ./update_version-info.sh The sections below describe each step in detail. The value of ``PRJ_DIR`` is ``/afs/psi.ch/project/linux/``. Kernel updates ~~~~~~~~~~~~~~ If there is a new kernel, some of the modules need to be rebuilt. For SL 5.7 there is a script in the ``scripts`` subdirectory taking care of this: ``build_kernel_modules.sh``. Update add-on repositories ~~~~~~~~~~~~~~~~~~~~~~~~~~ GPFS ,,,, rsync --archive --verbose ${PRJ_DIR}/dist/slp6/RPMS/*/kmod-gpfs* "${DIST_DIR}/psi/all" rsync --archive --verbose ${PRJ_DIR}/dist/slp6/RPMS/*/gpfs* "${DIST_DIR}/nonfree/all" Notes: - Don't know why the kernel modules for GPFS are in 'psi' but the GPFS user-land software is in 'nonfree'. - Hans-Christian is responsible for building RPMs OpenAFS ,,,,,,, Note: OpenAFS version on tux50 and tux50-64 is 1.4.x. On all other systems it is 1.6.x. Build OpenAFS +++++++++++++ On tux50, tux50-64, tux60-tux60-64, tux70. Either:: rsync --verbose ${PRJ_DIR}/dist/slp6/RPMS/*/kernel-module-openafs-* "${DIST_DIR}/psi/all" or: copy decicated versions Notes: Achim is responsible for building OpenAFS RPMs. Checklist +++++++++ New version available? If yes, build binaries: ========= ===== ========= ======== OS New? Compiled Copied? --------- ----- --------- -------- tux50 no tux50-64 no tux60 yes yes yes tux60-64 yes yes yes tux70-64 yes yes yes ========= ===== ========= ======== New kernel or version available? If yes, install kernel, build module: ========= ===== ========= ======== OS New? Compiled Copied? --------- ----- --------- -------- tux50 no - - tux50-64 no - - tux60 yes yes yes tux60-64 yes yes yes tux70-64 yes yes yes ========= ===== ========= ======== ZFS ,,, ZFS kernel modules are available for EL7 only! Sync from master repository +++++++++++++++++++++++++++ Run on tux70-64 as normal user:: reposync --repoid=zfs --norepopath --download_path /afs/psi.ch/software/mirror/zfsonlinux/7/x86_64 Build kmod ++++++++++ Build on tux70-64 as root. Boot into the right (newest) kernel! This is the kernel we are going to build the modules for. Run:: # set some variables $ ZFS_VERS='x.y.z' $ ZFS_REL='r' $ ZFS_REPO_DIR='/afs/psi.ch/software/linux/dist/scientificlinux/7x/x86_64/zfs/' $ DIST='el7' $ ARCH='x86_64' $ cd /usr/src/spl-$ZFS_VERS $ ./configure $ make rpm-utils rpm-kmod # Install the spl packages, they are required to build zfs. $ yum localinstall \ kmod-spl-devel-$ZFS_VERS-$ZFS_REL.$DIST.$ARCH.rpm \ kmod-spl-devel-kernel-$ZFS_VERS-$ZFS_REL.$DIST.$ARCH.rpm \ kmod-spl-kernel-$ZFS_VERS-$ZFS_REL.$DIST.$ARCH.rpm \ spl-$ZFS_VERS-$ZFS_REL.$DIST.$ARCH.rpm $ cd ../zfs-x.y.z $ ./configure $ make rpm-utils rpm-kmod # you need an AFS-token to copy the files! $ klog.openafs USERNAME # for a new ZFS version do $ cp -v spl-$ZFS_VERS/*.x86_64.rpm "$ZFS_REPO_DIR" $ cp -v zfs-$ZFS_VERS/*.x86_64.rpm "$ZFS_REPO_DIR" # to copy kernel modules only, do $ cp -v spl-$ZFS_VERS/kmod-*-$(uname -r)*.x86_64.rpm "$ZFS_REPO_DIR" $ cp -v zfs-$ZFS_VERS/kmod-*-$(uname -r)*.x86_64.rpm "$ZFS_REPO_DIR" # update repo $ cd "$ZFS_REPO_DIR" $ createrepo --update . See also: ``_ Checklist +++++++++ If there is a new version: Are the RPM of the new versions of spl-x.y.z and zfs-x.y.z in ``/afs/psi.ch/software/linux/dist/scientificlinux/7x/x86_64/zfs/``? Are the kmod-RPM's for the newest kernel in ``/afs/psi.ch/software/linux/dist/scientificlinux/7x/x86_64/zfs/``? Flash Player ,,,,,,,,,,,, Download ++++++++ Current Flash-Player must be downloaded from `Adobe `_ and copied to ``${DIST_DIR}/nonfree/all``. Checklist +++++++++ Is the newest version installed in ``/afs/psi.ch/software/linux/dist/scientific/xx/nonfree/all/`` (``xx`` in ``57``, ``60``, ``64``)? NVidia ,,,,,, syslog-ng ,,,,,,,,, openntpd ,,,,,,,,