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, 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-prod02.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
+-----+-------------+------------------------------------------------------------+
| Ins | Program     | Description                                                |
+-----+-------------+------------------------------------------------------------+
| yes | matlab      | MATLAB & Simulink R2023a                                   |
| yes | texlive     | TeX Live 2023                                              |
|  -  | cplex       | IBM ILOG CPLEX Optimization Studio 12.5                    |
+-----+-------------+------------------------------------------------------------+

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

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 texlive
[...]

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.

Av Trond Hasle Amundsen
Publisert 2. apr. 2024 17:10