App-sync for vitenskapelig programvare

Diverse vitenskapelige programmer distribueres via en UiO-spesifikk mekanisme som vi kaller app-sync. Dette er en enkel løsning som baseres på rsync.

1   Bakgrunn

Enkelte programmer, herunder Matlab og Maple, er vanskelig og/eller tidkrevende å diste via eksisterende mekanismer som RPM-pakke. Vi har derfor laget et opplegg for dist av slike programmer basert på rsync. Det er lagt vekt på at løsningen skal være enkel i sin helhet, bruke kjente, åpne protokoller, være enkel i bruk og samt enkel å drifte.

2   Programmet app-sync

Det er satt opp rsync-server på app-sync.uio.no (aka rsync-prod01.uio.no). Klientene kommuniserer via rsync-protokollen, via et lite shell-script app-sync:

$ app-sync help
Usage: app-sync <command> [program...]

Commands:
  list                  List available applications
  install <program(s)>  Install specified program
  remove <program(s)>   Completely remove program
  update                Update all programs
  help                  This help text

2.1   Bruk av app-sync

Man må først installere app-sync. Det gjøres slik (som root):

# yum -y install uio-app-sync

Deretter kan man bruke app-sync på vanlig måte:

Usage: app-sync <command> [program...]

For å liste opp tilgjengelig programvare for maskinen man kjører fra, bruk app-sync list:

$ app-sync list
+------+---------+--------------------------------------------------------------+
| Inst | Program | Description                                                  |
+------+---------+--------------------------------------------------------------+
|  yes |  matlab | Matlab R2013b                                                |
|  yes |   maple | Maple 17.02                                                  |
|  yes |   intel | Intel(R) C++/Fortran Composer XE 2013 SP1.2                  |
|  yes | texlive | Tex Live 2013                                                |
|   no |   cplex | IBM ILOG CPLEX Optimization Studio 12.5                      |
|   no |    envi | Geospatial imagery analysis and processing application 5.1   |
+------+---------+--------------------------------------------------------------+

I tilfellet over er det fire programmer tilgjengelig via rsync for 64bit Linux: Matlab, Maple, Intel og TeX Live.

For å installere ett eller flere programmer, bruk app-sync install:

# app-sync install matlab

Number of files: 65386
Number of files transferred: 60632
Total file size: 2028367039 bytes
Total transferred file size: 2028365759 bytes
Literal data: 2028365759 bytes
Matched data: 0 bytes
File list size: 1556125
File list generation time: 0.343 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 1362527
Total bytes received: 2032957296

sent 1362527 bytes  received 2032957296 bytes  24363111.65 bytes/sec
total size is 2028367039  speedup is 1.00

Man kan angi flere programmer, f.eks.

# app-sync install matlab maple
[...]

For å fjerne ett eller flere programmer, bruk app-sync remove:

# app-sync remove matlab
Removing symlinks in /local/bin ................ done.
Removing symlink in /local/opt ................. done.
Removing the application ....................... done.

Application "matlab" completely removed.

Det er også en kommando for å oppdatere alle programpakkene fra rsync-serveren: app-sync update. Denne kjører automatisk hver natt, slik at det ikke skal være nødvendig for brukere å kjøre denne for å oppdatere til siste versjon/endringer fra rsync-serveren.

3   Sti for programmer

Sti til binærene legges automatisk inn i PATH ved innlogging. Dette skjer vha. to filer under /etc:

/etc/profile.d/app-sync.sh
For de som bruker bash
/etc/profile.d/app-sync.csh
For de som bruker tcsh

Dersom stien av en eller annen grunn ikke blir satt riktig ved innlogging, kan man kjøre disse filene manuelt. Eksempel for bash-brukere:

source /etc/profile.d/app-sync.sh

4   Automatisk oppdatering av programmer

Programmene (f.eks. Matlab) vil oppdateres daglig, hvis det er noe å oppdatere. RPM-pakken uio-app-sync inneholder en cron-jobb:

/etc/cron.daily/uio-app-sync.cron

Denne sørger for å kjøre app-sync update for å oppdatere programvare.

4.1   Hindre automatisk oppdatering

Dersom man f.eks. kjører store Matlab-jobber som tar lang tid, ønsker man ikke at programvaren oppdateres automatisk. Man kan hindre automatisk oppdatering ved å lage en flaggfil:

# touch /etc/uio/flag/disable.app-sync

Så lenge denne filen finnes vil programvare via rsync aldri oppdateres automatisk, men kan kan fremdeles oppdatere manuelt ved å kjøre app-sync update.

5   Drift av løsningen

Notat

Dette avsnittet beskriver administrasjon av løsningen, og er sannsynligvis ikke interessant for brukere og/eller IT-ansvarlige.

5.1   Beskrivelse

Vi bruker standard rsync-daemon fra Red Hat, som startes av xinetd:

rsync-prod01: /# chkconfig --list rsync
rsync           on

Xinetd-config i /etc/xinetd.d/rsync:

rsync-prod01: /# cat /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
        only_from       = .uio.no
}

Rsync har en konfigurasjonsfil /etc/rsyncd.conf. Denne inneholder følgende for hver pakke (utdrag):

[linux-x86_64-matlab]
        comment = Matlab version R2008b for Linux x86_64
        path = /rsync/linux-x86_64/matlab-R2008b
        read only = yes
        list = yes
        uid = nobody
        gid = nogroup
        transfer logging = no

Navnet på pakken (her: "linux-x86_64-matlab") brukes av app-sync til å finne ut hvilken arkitektur/OS den skal laste ned for.

Selve pakkene ligger under /rsync/<OS>-<arkitektur>:

rsync-prod01: /# find /rsync/ -maxdepth 2
/rsync/
/rsync/lost+found
/rsync/linux-x86_64
/rsync/linux-x86_64/matlab-R2008b
/rsync/linux-x86_64/maple-12.02
/rsync/solaris-sparc
/rsync/solaris-sparc/matlab-R2008b
/rsync/solaris-sparc/maple-12.02
/rsync/PATCHES
/rsync/PATCHES/matlab-docopt.patch
/rsync/PATCHES/matlab-printopt.patch
/rsync/PATCHES/usit-matlab-wrapper.sh
/rsync/PATCHES/usit.m
/rsync/PATCHES/maple-maple.patch
/rsync/PATCHES/maple-xmaple.patch
/rsync/PATCHES/matlab-pathdef.patch
/rsync/PATCHES/matlab-matlabrc.patch
/rsync/PATCHES/laydata
/rsync/PATCHES/maple-mint.patch
/rsync/linux-i386
/rsync/linux-i386/matlab-R2008b
/rsync/linux-i386/maple-12.02

Vi har i tillegg en katalog /rsync/PATCHES som inneholder patcher og andre lokale tilpasninger.

5.2   Legge opp nytt program

Det er relativt enkelt å legge opp nytt program. Her er en oppskrift:

  1. Installer programmet
  2. Gjør evt. tilpasninger til programmet og kopier det ferdige programmet til rsync-prod01.uio.no.
  3. Legg til programmet i /etc/rsyncd.conf på rsync-prod01.uio.no
Av Trond Hasle Amundsen
Publisert 12. des. 2017 16:46 - Sist endret 12. des. 2017 17:14