Arbeid etter kompileringen

  1. Make install

    Når du har kompilert ferdig programpakken i skyggetreet, gjenstår det bare å installere pakken. Dette består som oftest i å skrive: $ make install Dersom du har konfigurert makefilene riktig, eller kjørt configure med korrekte argumenter, vil binærfiler, bibliotek, manualer, etc. bli installert under /store/bin, /store/lib, /store/man, osv.

  2. Postinst

    Disse filene må nå flyttes over til versjonstreet, og symbolske lenker fra linktreet til versjonstreet må opprettes. Kommandoen postinst gjør dette for deg. $ postinst Architecture suffix [hp700ux9] ? Server [tklab1] ? Application [sharutils] ? Version [4.2] ? Linktree [tklab1] ? Som ved shadow-kommandoen, blir du også her konfrontert med en del spørsmål. Og som ved shadow-kommandoen, vil default-verdiene som regel være korrekte.

    Hva postinst-kommandoen egentlig gjør, er at den søker gjennom hele linktreet og finner de filene som ikke er sumbolske linker, og som er yngre en 10 minutter gammel. Når den finner en slik fil,

    /store/<filsti>,
    vil den flytte denne til sin respektive plass i versjonstreet,
    /store/store/tklab1/<applikasjon>/ver-<versjon>/<filsti>.
    En symbolsk lenke blir så opprettet fra linktreet til denne filen.

    Postinst sjekker også (ved å benytte kommandoen file), hvilken type fil den holder på å flytte. Dersom filen er arkitekturavhengig, vil en arkitetkursuffiks bli lagt til ved installeringen. Dersom filen ikke er arkitekturavhengig, vil ingen slik suffiks bli lagt til. Ved installeringen av sharutils vil f.eks. følgende to symbolske lenker bli opprettet.

    /store/bin/shar -> /store/store/tklab1/sharutils/ver-4.2/bin/shar@hp700ux9 /store/info/sharutils.info -> /store/store/tklab1/sharutils/ver-4.2/info/sharutils.info Ved enekelte anledninger ønsker du kanskje å installere filer som er eldre enn 10 minutter fra linktreet. Dette kan du gjøre ved å gi argumentet ``-t <minutter>'' til postinst. Du spesifiserer da en maksimalalder på filene du ønsker å installere, gitt i minutter. Dette er særlig nyttig for programpakker som benytter tar for å installere filene sine i linktreet (f.eks. emacs). Modifikasjonsdatoen til de installerte filene blir da uendret, og filene kan bli flere år gamle.

  3. Spesielle konfigureringer

    Dersom programpakken inneholder emacs-info-sider, inneholder konfigurasjonskode som skal tas med i emacs, har programmer som skal legges inn i diverse mailcap-filer, eller behøver at spesielle environment-variabler er satt, så må dette konfigureres på en spesiell måte. Se på siden ``Spesielle konfigureringer'' for nærmere informasjon.

  4. Register

    Når du har gjort deg ferdig med installeringen, må du registrere applikasjonen slik at de interne programmene i store vet hva du har installert, og kan installere det på andre maskiner i løpet av neste natt. Dette gjøres ved å kjøre kommandien register: $ register What store [tklab1] ? What application [sharutils] ? (Info) (register) <sharutils@tklab1> Updating registration. (Warning) (register) <sharutils@tklab1> YOU MUST RUN chkapp MANUALLY. Full name . ... ... [] ? Shar utilities Available versions are: 4.2 - choose primary: Primary Version ... [4.2] ? Program Type .. ... (? for list) [] ? arc License Type .. ... (? for list) [] ? gpl Release level for version 4.2 [release] ? Signature . ... ... [] ? eSk Short Description . (max 30 chars) [] ? ==>Shell archiving utilities <== XXX - fix sourcecode count (TODO) Online Help ... ... [none] ? Importance ... ... [5] ? Source ... ... ... [] ? ftp://prep.ai.mit.edu/pub/gnu/sharutils-${version}.tar.gz Nightly Command ... [] ? Not Links . ... ... [] ? Dependencies .. ... [] ? Current description is: : Do you want to edit the description [N] ? y Enter text to be appended (terminate with '.') Husk å fikse emacs-info-sidene. . Som vi ser, blir en del default-verdier presentert også her. Hva de forskjellige feltene skal inneholde er forsåvidt ganske selvinnlysende. Noen ord er allikevel på sin plass her:

    Full name, Short Description og Description
    Bør være skrevet på engelsk. Det er planer om å lage et web-grensesnitt mot store, og teksten her vil sansynligvis bli engelsk. Dersom noe tekst er skrevet på norsk, og noe på engelsk vil ting se lite pent ut. Konsistens må man kunne forlange.

    Short description blir forresten brukt til bl.a. generering av rapporter. Description blir benyttet til bl.a. generering av news-meldinger. Et eksempel på en slik description kan være:

    Shar makes so-called shell archives out of many files, preparing them for transmission by electronic mail services. Unshar helps unpacking shell archives after reception.
    Release level
    Forteller hvilken type utgivelse en gitt versjon av en applikasjon er (eks. beta eller stable). Dette, sammen med profileringen til et gitt linktre, bestemmer hvilken versjon av appliaksjonen som skal installeres i linktreet. Følgende profileringer gjelder for installasjonen (rekkefølgen av release levels forteller hvordan hver profilering prioriterer utgivelsene):

    Newer: override alpha beta gamma release stable dated old obsolete prealpha
    Normal: override stable release gamma dated beta old alpha obsolete prealpha

    For tklabben benyttes newer, og for resten av installasjonen benyttes normal. Prioriteten av release levels ovenfor bestemmer hvilken versjon som skal installeres av en gitt applikasjon.

    Eks: Vi har versjon 1.4 av en applikasjon installert i store, og denne versjonen er satt til relase level, ``release''. Vi installerer nå versjon 2.001 av samme applikasjon, og setter release level til ``beta''. Dette vil føre til at versjon 2.001 vil bli installert på tklaben, mens versjon 1.4 blir installert andre steder.

    Importance
    Forteller hvor viktig applikasjonen er. Jo høyere tall, jo viktigere er applikasjonen. Perl-internal har f.eks. importance 9 fordi hele store baserer seg på dette filsettet.

    Foreløpig blir ikke dette feltet meget benyttet. Et unntak er noen lokale patcher til perl-internal som gjør at dersom det skjer en konflikt i navnerommet (eks. to filer som heter /store/etc/config), så vil kun det viktigeste filsettet få filen installert.

    Source
    Inneholder informasjon om hvor kildekoden kan bli funnet. Dette feltet benyttes bl.a. for å kunne fortelle administratorene når en ny versjon av programpakken kommer. Store kan også konfigureres slik at denne nye pakken automatisk blir hentet.

    På grunn av at dette feltet skal benyttes internt av store, må feltet ha en gitt syntaks. Adresser kan enten spesifiseres på URL-form som vist ovenfor (ved å benytte en av protokollene HTTP eller FTP), eller de kan spesifiseres på følgende måte:

    prep.ai.mit.edu:/pub/gnu/sharutils-${version}.tar.gz
    som også spesifiserer at FTP skal benyttes. Der det er mulig bør en FTP-adresse benyttes fremfor HTTP -- dette fordi FTP i motsetning til HTTP alltid kan gi en liste over innholder i en katalog. Det stedet i adressen som inneholder versjonsnummeret til pakken, må også spesifiseres som vist i eksempelet.

    Nightly command
    Spesifiserer en kommando som blir kjørt hver natt (fra skriptet cclient), og hver gang en linkup blir gjort på applikasjonen. Dette er nyttig for programmer som f.eks. ønsker å generere konfig-filer, indekser, etc. på grunnlag av hva som ellers er installert i linktreet.

    Envirnoment-variabelen $TOPDIR blir også satt slik at man kan benytte den i eventuelle skripter som blir startet. Denne variabelen forteller hva filstien til rota i linktreet er (typisk /store). For å starte et perlskript i linktreet hver natt, kan man derfor spesifisere f.eks.:

    perl $TOPDIR/etc/make-emacs-dir.pl
    Flere kommandoer kan dessuten spesifiseres ved å skille dem med ; (semikolon).

    Not Links
    Forteller om filer som ikke er symbolske lenker, men som allikevel hører med til applikasjonen. Dette kan f.eks. være indeks-filer generert av en nightly command, og spesifiseres som et perl regular expression med filnavn relativt til linktre-rota. Applikasjonen perl-internal genererer f.eks. news-meldinger under /store/news, og har derfor følgende notlinks regexp:
    news/.*
    Dette forhindrer at filene under /store/news blir slettet av cclient, eller kopiert opp i et eller annet versjonstre av postinst. Flere notlinks regexp kan gis ved å separere dem med mellomrom (space).

    Dependencies
    Gir en liste (separert med mellomrom) av applikasjoner som den gitte applikasjonen er avhengig av. Exmh er f.eks. avhengig av MH, Tcl og Tk. Dette fordi exmh består av kode skrevet i Tcl/Tk, og det benytter seg av funksjonalitet som MH tilbyr. Dersom en eller flere av disse applikasjonene mangler, vil ikke exmh bli installert.

    Det er selvfølgelig bare mulig å spesifisere applikasjoner som faktisk ligger i store i dependency-listen. Det vil ellers være vanskelig for store-programmene å vite om den aktuelle applikasjonen faktisk eksisterer på systemet.

    Det er ikke mulig å spesifisere versjonsnummer for appliksjonene, og applikasjonsnavnene må samsvare nøyaktig med navnet som applikasjonen har i store. Navnene er også case-sensitive, slik at ``Tcl'' ikke er det samme som ``tcl''. Exmh har f.eks. følgende dependency-liste:

    mh tcl tk

  5. Chkapp

    Etter at register er kjørt, må chkapp kjøres for å oppdatere listen over hvilke versjoner av applikasjonen som eksisterer, samt hvilke arkitekturen hver versjon har støtte for. $ chkapp Which master [tklab1] ? Which application [sharutils] ? Chkapp må dessuten kjøres når der gjøres manuelle forandringer i versjonstreet (f.eks. når filer blir lagt til eller forandret). Kommandoen oppdaterer nemlig en fil summary.<versjon> som forteller om størrelse, modifikasjonstid, etc. til hver fil i filsettet. Denne filen brukes som en slags cache for de skriptene som kjøres hver natt, og som skal bestemme om evt. nye filer må kopieres rundt om på systemet.

eSk