print logo

Programvare fra STORE

Forfatter: Trond Hasle Amundsen
Kontakt: unix-drift@usit.uio.no
Dato: 2011-10-06
Box

Notat

STORE brukes ikke på RHEL6, så dette dokumentet gjelder kun RHEL4 og RHEL5.

1   Introduksjon

På UiO bruker vi STORE til dist av programvare for Linux- og UNIX-maskiner. STORE er et system laget for å håndtere tredjepartsprogramvare under UNIX/Linux. Under finner du forskjellige seksjoner i vår dokumentasjon av STORE.

Fra april 2009 er de store programpakkene Matlab og maple tatt ut av store og lagt inn i et eget opplegg med rsync

Pekere til annen dokumentasjon av STORE

STORE er et system laget for å håndtere tredjepartsprogramvare under UNIX/Linux. STORE gjør dette ved å gi både brukere og administratorer et rammeverk som:

  • gir en klar oversikt over hvert enkelt program,
  • er transparent for brukere,
  • tillater håndtering av flere versjoner av ett program,
  • tar vare på informasjon om lokale modifikasjoner,
  • forenkler samarbeid og deling av programmer mellom brukergrupper med ulike bruksmønstre,
  • forenkler standardisert installasjon av programmer på ulike arkitekturer og operativsystemer, og
  • lar administratorer velge finmasket hvilke programmer som skal være tilgjengelig på hver maskin, slik at enkle programmer kan legges til og fjernes ved behov.

For å implementere disse egenskapene, er STORE et sett programmer og scripts som håndhever et sentralt konsept for organisering av programvareinstallasjon. Dette konseptet innebærer:

  • Alle filer som hører til en applikasjon holdes sammen i ett enkelt katalogtre.
  • For hver samling av maskiner i organisasjonen med ett STORE-miljø finnes det kun én master-katalog for hver applikasjon.
  • En applikasjon trenger ofte flere arkitekturavhengige filer, samt flere som er uavhengige av arkitektur. I STORE, består et program av en eller flere versjoner av arkitekturavhengige filer og kun ett sett med arkitekturuavhengige filer.
  • STORE implementer en trestruktur av noder, for å bøte på evt. tregt nettverk. En applikasjonspakke som oppdateres på master-noden, propageres automatisk til slave-noder, og propageres igjen til ende-noder som har en av slave-nodene som master.
  • Et virtuelt katalogtre med symbolske linker vever sammen alle pakkene og lager et "normalt" tre for brukerne, og sikrer dermed enkel bruk av programmene.

STORE på UiO har gjennomgått et sett med endringer for å gjøre det best mulig tilpasset lokale forhold, samt for å gjøre overgangen fra gammelt system med rdist/M4 så problemfri som mulig. Blant disse endringene er navnet på katalogtreet med symlinker som brukerne ser. Normalt heter dette /store, men på UiO holder vi på navnet /local, som skal være en symlink til /<fak>/<maskinnavn>/local som tidligere.

2   Nyinstallert maskin inn i STORE

Advarsel

Dette er ment å være en kokebok for hvordan du setter opp en nyinstallert UNIX-maskin med STORE. Det forventes at man har normal UNIX-kunnskap om brukere, NFS-montering og normal fornuft.

Denne oppskriften beskriver en generell metode for å STOREifisere maskinen. Dersom du installerer Linux med kickstart trenger du ikke bruke dette dokumentet.

Logg så langt som mulig ut av maskinen, men la den kjøre som vanlig; dvs logg ut og bare gjør ting fra tekst-konsoll. Følgende skal gjøres som root:

2.1   Steg 1: Montere opp STORE-master

Monter opp storeulv:/uio/storeulv/store på maskinen

Lag monteringspunktet:

maskin.uio.no# mkdir -p /uio/storeulv/store

Og monter NFS-disken:

maskin.uio.no# mount storeulv:/uio/storeulv/store /uio/storeulv/store

2.2   Steg 2: Sørg for at bruker og gruppe store er kjent

Sørg for at brukeren og gruppe store er kjent, brukeren må ha gyldig shell (bash). Det bør holde å legge følgende linje inn i /etc/passwd:

+@uio-system

På Linux blir dette nå gjort automatisk hvis du har fulgt oppskriften for konfigurasjon.

2.3   Steg 3: Kjør init-store

Kjør følgende script som root:

maskin.uio.no# /uio/storeulv/store/.usit-etc/ver-cvs/etc/config/init-store
Adding 'store' to /etc/group... ok
Checking if user/group store exists... Yes
Checking if storeulv is mounted... Yes
Finding STORE target... 386linuxlibc63
Finding which perl to use... /tmp/perl
Finding version string for perl... 5.8.0
Finding version string for perl-internal... 20040112
Checking if /local exists... Yes
Setting user/group ownership on /local/.... ok
Linking up bash and perl... ok
Creating config file for store... ok
Changing ownership of a few things... ok
Making temporary symlink /store -> /local... ok
Doing 1st linkup (Note: This may take several minutes)...

Hvis maskinen hadde rdist i et tidligere liv, gi beskjed til unix-drift om at vi skal ta den ut av rdist. Hvis ikke vil rdist ødelegge for STORE og du må gjøre dette på nytt!

2.4   Steg 4: Reboot

Ta en reboot av maskinen.

Nå er maskinen ferdig USITifisert og STOREifisert, men den har kun fått et minimum av programvare. Dette er programvare som i hovedsak brukes av USIT til drift og vedlikehold av maskiner.

3   Installasjon, fjerning og manipulasjon av programmer

3.1   Brukerprogrammer i STORE

Dette er en liste over utvalgte brukerprogrammer i STORE. Tjenerprogrammer er ikke tatt med her, og vi lister kun opp de mest brukte og/eller viktigste programmene.

Den observante leser vil oppdage at Linux har mest tilgjengelig programvare, med Solaris som nummer to. Dette skyldes en bevisst prioritering. Linux er i særdeleshet den plattformen som er mest benyttet som arbeidsstasjon. Vi har svært få arbeidsstasjoner som kjører Solaris, men endel brukerprogramvare legges også opp for Solaris ettersom Sun-maskiner ofte er fellesmaskiner som mange brukere kan logge inn på. Utenom Linux og Solaris er det relativt vilkårlig hvilke plattformer vi legger opp programmer for. Kort fortalt vil vi ikke bruke mye energi for å få et brukerprogram til å virke på en plattform som ikke er i utstrakt bruk som arbeidsstasjoner.

Dersom det er programvare som du mener mangler, som du savner eller som du trenger i arbeidet/studiene, ta kontakt med unix-drift@usit.uio.no.

3.1.1   Vitenskapelig programvare

Alle programmene i listen under er med i gruppen @usit-vit-prog (se Gruppering av programmer). Merk at enkelte av disse programmene tar mye plass på /local. Forsikre deg derfor at det er nok plass tilgjengelig før du legger inn alle sammen.

Navn STORE-navn Beskrivelse
S-Plus splus Program for datamodellering og statistisk analyse. For mer informasjon, se S-Plus hjemmeside
R R

R, også kjent som "GNU S", er et programmeringsspråk og -miljø for statistiske beregninger og grafikk. R implementerer programmeringsspråket S, utviklet ved Bell Laboratories av John Chambers m.fl. Det inneholder et vidt spekter av statistiske og grafiske teknikker, bl.a. lineær og ikke-lineær modellering, statistiske tester, time series-analyse og klassifisering.

For mer informasjon, se R hjemmeside

Tutorial: R tutorial

R-extra Extra moduler til R.
Calc calc Calc er en interaktiv terminalkalkulator med et enkelt grensesnitt som kan ta store tall, men som også kan brukes til kompliserte og/eller store beregninger.
Gnuplot gnuplot

Terminalbasert program for plotting av data.

For mer informasjon, se Gnuplot hjemmeside

3.1.2   Web- og e-postklienter

Navn STORE-navn Beskrivelse
Firefox firefox

Nettleser for X-Windows.

For mer informasjon, se Mozilla hjemmeside

Seamonkey seamonkey

Nettleser for X-Windows.

For mer informasjon, se Mozilla hjemmeside

Opera opera

Nettleser for X-Windows.

For mer informasjon, se Opera hjemmeside

Thunderbird thunderbird

E-postklient for X-Windows.

For mer informasjon, se Mozilla hjemmeside

3.1.3   Editorer og tekstbehandling

Navn STORE-navn Beskrivelse
Emacs emacs Selveste editoren for UNIX.
LaTeX @usit-tex Tekstbasert program for tekstbehandling. Gammelt, modent og ekstremt bra.

3.1.4   Grafikk- og bildebehandling

Navn STORE-navn Beskrivelse
The Gimp @usit-gimp

Kraftig bildebehandlingsprogram.

For mer informasjon, se Gimp hjemmeside

3.2   Gruppering av programmer

Grupper i STORE er gruppering av programvarepakker. Dette er en USIT-oppfinnelse og er ikke med i "standard" STORE. Grupper fungerer på den måten at et script usit-forcelocalcopy lager filer:

/local/store/localhost/.<pakkenavn>

alt etter hva som er definert i den aktuelle gruppen. Scriptet store.nightly vil så sørge for at disse pakkene blir slavet inn på maskinen og linket opp.

I USITs opplegg for STORE finnes en magisk fil:

/etc/usit/sw-localcopy

Hvis filen ikke finnes fra før, kan den opprettes. Denne filen kan inneholde enten

  • Navn på enkeltpakker som "firefox" og "j2re", eller
  • Navn på grupper

En gruppe i denne sammenhengen er et sett med pakker som USIT har funnet ut hører hjemme i den aktuelle gruppen. Følgende grupper er aktuelle å nevne:

Navn Beskrivelse
usit-desktop Programmer og programfiler som det er naturlig å ha på en arbeidsstasjon med X-Windows. ANBEFALES!
usit-tools Ymse verktøy og programmer for den som vil ha mer enn det som finnes i usit-desktop. ANBEFALES!
usit-tex TeX og relaterte programmer som LaTeX. Dette er UiOs offisielle TeX-dist. Anbefales dersom du bruker LaTeX eller TeX.
usit-develop Programmer som trengs til programmering, som python, autoconf og bison.
usit-emacs GNU Emacs og endel ekstra elisp-filer. Merk: Gruppen usit-desktop inneholder denne, så du trenger ikke begge.
usit-mplayer MPlayer med diverse codecs
usit-gimp The Gimp pluss tilleggspakker og programmer
usit-vit-prog Vitenskapelig programvare

Hvis du ønsker å se spesifikt hvilke pakker som finnes i en bestemt gruppe, kan du se i filen som definerer gruppen, eksempel for "usit-emacs":

bruker@maskin ~ $ cat /local/share/usit-forcelocalcopy/groups/usit-emacs
# $Id: usit-emacs,v 1.4 2003/11/26 18:24:15 trondham Exp $
# Packages we recommend for emacs:
emacs
css-mode.el
gnus.el
html-helper-mode.el
table.el
auctex.el
matlab.el
maplev.el
python-mode.el
php-mode.el
usit-emacs-default.el

Her er et eksempel på en fil sw-localcopy med både enkeltpakker og grupper:

@usit-desktop
@usit-tools
j2sdk
R
R-extra

3.3   Legge inn nytt program eller programgruppe

Oppdatering av programvare på maskinen basert på /etc/usit/sw-localcopy er enkelt. Legg først inn programmets STORE-navn i filen /etc/usit/sw-localcopy (eksempel for splus):

matlab

For grupper av programmer er det tilsvarende, men med en alfakrøll foran navnet. Eksempel for gruppen "usit-games":

@usit-games

Kjør så følgende script for å oppdatere maskinens lokale STORE-tre:

maskin.uio.no# storeapp
info(0): Application <program> slaved down OK.
info(0): Application <program> linked up OK.
[...]

Dette scriptet vil kun legge opp nye ting som er lagt inn i /etc/usit/sw-localcopy.

Tips

Hvis du kun skal legge inn ett enkelt program (dvs. ikke en gruppe), kan du gjøre hele operasjonen med storeapp -a <program>, f.eks. slik:

maskin.uio.no# storeapp -a calc
info(0): Application calc slaved down OK.
info(0): Application calc linked up OK.
info(0): Adding calc to /etc/usit/sw-localcopy

Hver natt, og ved boot, kjører scriptet store.nightly, som i tillegg til å legge opp ny programvare fra /etc/usit/sw-localcopy også sjekker hver eneste fil på /local for å se om den hører med i en STORE-pakke.

3.4   Fjerne programmer

Et program kan fjernes på følgende måte:

maskin.uio.no# storeapp -r <program>
info(0): Application <program> linked down OK.
info(0): Application <program> removed. Total of 53 files deleted.
info(0): <program> removed from /etc/usit/sw-localcopy.

Eventuelt kan du fjerne programmet fra /etc/usit/sw-localcopy og kjøre storeapp -d.

Tips

Hvis du er usikker på hva storeapp -d vil fjerne av programmer, kjør storeapp -s først.

3.5   Liste over tilgjengelige programmer

Bruk programmet storeapp for å se hvilke programmer som er tilgjengelig.

Opsjonen -q all lister opp alle pakker i store, uavhengig av hvilke(n) arkitektur(er) de eksisterer for:

maskin.uio.no# storeapp -q all
Name                              Description
-------------------------------------------------------------------------------
180                               Look up phone numbers
a2ps                              text->postscript conversion
acroread                          Acrobat PDF Reader
alex                              Acrobat PDF Reader
alien                             Convert sw packages
apache2                           The Apache2 HTTP Server
apache-ant                        Java-based build tool
Apache-DBI.pm                     Persistent conn. and auth supp
[osv...]

Opsjonen -q available lister opp alle pakker som er tilgjengelig for din maskins arkitektur:

maskin.uio.no# storeapp -q available
Name                              Version                       Arch
-------------------------------------------------------------------------------
180                               1                             allarchs
a2ps                              4.13b                         amd64linux
acroread                          7.0.1                         amd64linux
alien                             8.38                          allarchs
apache-ant                        1.5.3-1                       allarchs
Apache-DBI.pm                     0.93                          allarchs
Apache-Session.pm                 1.54                          allarchs
apache-ssl                        apache_1.3.33_mod_ssl_2.8.22  amd64linux
AppConfig.pm                      1.56                          allarchs
[osv...]

Se for øvrig manualsiden til storeapp, med man storeapp.

3.5.1   Avansert bruk av STORE

Notat

Dette avsnittet er for de som ofte gjør endringer i STORE-oppsettet på maskiner. Disse operasjonene som beskrives her er mer kompliserte, men tar som oftest kortere tid å utføre, forutsatt at man kan det.

De fleste avanserte operasjoner i STORE krever at man utfører dem som bruker "store". Det vil derfor stort sett være nødvendig å gjøre su - store før de fleste av disse operasjonene. Dette skyldes at (nesten) alle filer fra STORE er eid av bruker "store".

3.5.2   Manuell installasjon et spesifikt program

Dette er rimelig enkelt, og kan i prinsippet gjøres på flere måter, men den enkleste oppskriften er:

  1. Su til bruker "store" og endre katalog til maskinens lokale STORE-tre:

    maskin.uio.no# su - store
    -bash-2.05b$ cd ../<maskinnavn>
    
  2. Lag en katalog med programnavnet og endre aktiv katalog, eksempel for Mozilla:

    -bash-2.05b$ mkdir .mozilla
    -bash-2.05b$ cd .mozilla
    
  3. For å hente ned programmet (Mozilla), kjør slaveapp:

    -bash-2.05b$ slaveapp
    (Error) Cannot open uwfile '/local/store/Adm/uw/uio.no'
    Which slavestore [maskinnavn] ? <trykk enter>
    Which application [.mozilla] ? <trykk enter>
    (Trace) <mozilla@maskinnavn> Running for application
    (Trace) <mozilla@maskinnavn> New-style-metrics findmaster
    (Trace) (findmaster) <mozilla@maskinnavn> Will mostly try '' first
    (Trace) (findmaster) <mozilla@maskinnavn> Considering storeulv
    (Trace) Using slave storeulv as master
    (Trace) <.mozilla@storeulv v1.6> slaving to maskinnavn...
    (Info) <.mozilla@maskinnavn v1.6> creating /local/store/maskinnavn/.mozilla/ver-1.6
    (Trace) <.mozilla@storeulv v1.6> slaving to maskinnavn...
    (Trace) <.mozilla@maskinnavn v1.6> slave OK.
    (Info) <mozilla@maskinnavn v1.6> updated from storeulv
    
  4. Nå er programmet hentet ned, men det er ikke linket opp. For å linke det opp, dvs. lage linker fra /local inn mot det, kjør linkup:

    -bash-2.05b$ linkup
    (Error) Cannot open uwfile '/local/store/Adm/uw/uio.no'
    Which server [tux] ? <trykk enter>
    Which application [.mozilla] ? <trykk enter>
    (Trace) <.mozilla@tux v1.6> linking into tux
    (Trace) <.mozilla@tux v1.6> Finding files for tux
    (Trace) done (584 files / 1 seconds). Now checking each ...
    (Info) Missing links:
    [...osv...]
    

Da skal programmet være klart til bruk på din lokale maskin.

3.5.3   Hvordan installere en spesifikk versjon av et program

Dette er ikke trivielt, og krever endel manuell innsats. Det man i prinsippet gjør er å lage en egen registration-fil som overstyrer USITs valg for hvilke versjoner som har release-status og andre statusnivåer. Her er et eksempel for pakken "postgresql".

For eksemplets skyld antar vi at pakken allerede er installert på maskinen.

  1. Finn navnet på maskinens lokale STORE-tre. Det gjøres slik:

    maskin.uio.no# storeapp -q linktree
    localhost
    

    Det er enten "localhost" eller maskinens navn, avhengig av når maskinen var installert. Default nå er "localhost".

  2. Su til bruker "store" og endre katalog til maskinens kopi av pakken postgresql:

    maskin.uio.no# su - store
    -bash-2.05b$ cd ../localhost/.postgresql
    
  3. Lag en kopi av filen registration og kall den registration.local:

    -bash-2.05b$ cp registration registration.local
    
  4. Editer denne filen, og gjør endringer i linjen som beskriver "Release levels". I dette eksemplet vil vi ha versjon 7.4.7 istedenfor 7.3.5, som er standard.

    Før:

    Full name . ... ... : PostgreSQL
    Primary Version ... : 7.3.5
    Release Levels  ... : 7.3.4/old 7.3.5/release 7.3.7/beta 7.3.7-debug/prealpha \
                          7.4.5/prealpha 7.4.5-debug/prealpha 7.4.7/prealpha \
                          8.0.1/prealpha 7.3.5/release
    Program Type .. ... : misc - Other programs
    License Type .. ... : gpl - FSF or similar copyright
    [osv...]
    

    Etter:

    Release Levels  ... : 7.4.7/override
    

    Det er kun linjen som beskriver "Release Levels" som trenger å endres på, og det er kun denne linjen som må eksistere i registration.local. Alle andre linjer kan slettes slik eksemplet viser, men det er ikke nødvendig.

  5. For å oppdatere programmet, kjør storeapp -u <program>.

3.5.4   Hvordan finne ut hvilke versjoner som er tilgjengelig

Før du kan bestemme deg for en spesifikk versjon du vil ha, må du vite hva du har å velge mellom. Også her er registration-filen til hjelp. Eksempel for Mozilla:

maskin.uio.no# grep Versions /local/store/storeulv/.mozilla/registration
Versions .. ... ... : 1.3.1 1.4 1.4.1 1.5 1.6

I eksemplet er det fem versjoner å velge mellom.

3.5.5   Avhengigheter

Hver programpakke i STORE har en registration-fil, hvor det også er mulig å spesifisere hvilke andre STORE-pakker pakken er avhengig av.

Avhengigheter håndteres kun av scriptet store.nightly, og hva som gjøres er veldig enkelt: Gitt en situasjon der man vil legge opp en pakke A, som er avhengig av pakkene B og C:

  • Dersom både B og C er installert fra før, blir A installert av store.nightly.
  • Dersom enten B eller C eller begge mangler, blir A ikke installert.

Forsiktig!

Hvis man installerer uten bruk av store.nightly blir avhengighetene ikke tatt hensyn til.

Publisert 5. okt. 2011 21:48 - Sist endret 6. okt. 2011 15:02