Her er en ide jeg har ruget på nogen tid.
Idéen er et program, der gør det samme som vores guides:
Kort sagt:
- så sætter man flueben ud for det på det man vil have, og
- så fjerner et flueben ud for det man ikke vil have
Dengang opdagede jeg desværre ikke tilstedeværelsen af libept, som er ret tæt på at være en apt-get, apt-cache, og apt-file for programmører = det er meget nemmere, så der skulle være mere garanti for succes, når jeg begynder at gå avanceret.
---
Det jeg går efter først er at skrabe så meget funktionalitet sammen først,
og så lave programmet smartere og mere avanceret og elegant senere.
Måden jeg gør det på er følgende
Uteknisk forklaring
Jeg opsamler oplysninger om brugerens valg, og konstruerer et script i RAM.
Bagefter producerer jeg nogle sikkerhedsoplysninger, og så gemmer jeg scriptet i en midlertidlig fil.
Derefter starter jeg et nyt program, der efter ændringer af rettigheder, og kørsel af nogle sikkerhedschek kører scriptet
Teknikbasker forklaringen
- GUI programmet (Program A), helst et Qt, eller GTK+ giver brugeren de valgmuligheder det nu engang har.
- Når brugeren har lavet sine valg og vælger at forsætte, så vil programmet brygge
et bash script sammen i RAM, der er beregnet på at køre uden at stille dumme spørgsmål. - program A beregner nu en md5sum, en SHA1 sum, og en SHA256 hash sum af scriptet i RAM
- program A gemmer scriptet i /tmp i en midlertidlig fil
- program A starter i en ny tråd et ny program, B, og venter på at program B bliver færdigt.
Program B gør følgende:- ændrer filrettighederne af filen til: -r-------- (0400), og skifter ejer og gruppe af scriptet til root
- cheker om md5 sum af indholdet af filen passer med den md5sum sum, som program A leverede til program B:
Hvis det ikke er tilfældet er indholdet af filen ændret, og filen slettes fra /tmp, og programmet afslutter - cheker om sha1 sum af indholdet af filen passer med den sha1 sum, som program A leverede til program B:
Hvis det ikke er tilfældet er indholdet af filen ændret, og filen slettes fra /tmp, og programmet afslutter - checker om sha256 sum af indholdet af filen passer med den sha256 sum, som program A leverede til program B:
Hvis det ikke er tilfældet er indholdet af filen ændret, og filen slettes fra /tmp, og programmet afslutter - program B er er nu sikker på at indholdet af filen ikke er blevet ændret siden det kom fra program A, og det kan nu køres
- scriptet gøres kørbart, til et program: user execute bit sættets på filen
- program B starter scriptet og venter på at det er færdigt for ikke at få en zombie process
- Når scriptet er færdig sættes write bit på scriptet
- ... og filen slettes
Jeg vil gerne starte med script metoden, fordi der er 2 fordele med den.
- Det er efter KISS princippet (KISS=Keep It Simple, Stupid)
- Administratorer af mange computere med samme Ubuntu opsætning kan rulle et batch script ud til hver computer,
som så foretager sin opdatering - Programmet kan udvides til at understøtte opsætning af servere, hvor den kan producere et script der bare skal
køres med sudo foran.
Meget senere kan jeg gøre programmet elegant, og avanceret (man behøves ikke at bruge et script engang
ude i fremtiden), men script metoden beholdes stadigvæk.
Andre idéer er at en guide er et plugin.
Det tænkes at guiden er en simpel tekstfil der beskriver, hvordan en guide skal se ud i GUIen, og
hvad den så skal reagere.
At en guide er en tekstfil betyder at en guide kan indlæses.
Jeg bemærker dog lige at det guide tekstfiler ligger meget lang ude i fremtiden, da jeg jeg skal lave
en fortolker(engelsk: interpreter), som således bruger et programmeringssprog, der er specielt
godt egnet til at lave visuelle guides.
Navn?
Er der nogen der har et forslag til et godt navn til programmet?
Husk at "Ubuntu" ikke kan bruges på grund af at Canonical har det ord som et registreret varemærke.
Husk også at det potentielt er anvendeligt for andet end Ubuntu, og at programmets resultat er anvendeligt på både desktops og servere. hint: tænk bredt i anvendelse
Eksempel:
myGuide: my er micro tegn i SI systemet, og betyder også "mig/min".
^-- hvad synes du om det navn
Hvad synes du om programmet?
/Lars
Edit1:
Pakkerne der bruger libept er synaptic, goplay, debtags, libept-dev, aptitude
Edit 20120602 15:21:
emne felt rettet
Edit 20120602 15:26
typo i emnefeltet retter