linux install utility a lá rpm



  • Wollt fragen ob wer lust hat bei meinem installer (für linux) mit zu machen. vom grundprinzip ähnlich wie rpm:

    anhand von nem source paket und ner datei, die die info zum kompilieren enthält wird das paket erst kompiliert, und dann installiert, wobei die installierten dateien mit einigen informationen bzgl dieses paketes in ner lokal gespeicherten datenbank abgelegt werden. so ist es möglich bequem nachzuschauen, ob man das paket installiert hat, welche version, welche dateien es beinhaltet. und das beste: man kann es wieder schön deinstallieren.

    wer z.b. ein lfs system hat und keine lust hat den rpm zu installieren, wäre mit sowas gut beraten.

    kleines anwendungsbeispiel:
    Paket: apache-1.3.2.tar.gz
    InfoFile: apache-1.3.2.srcinfo enthät dann z.b.:
    paketdateiname, die befehle zum kompileren, versionsnummer etc. man übergibt jetzt dem installer die info datei, der kompiliert und installiert und macht nen datenbank eintrag der ca so aussieht:

    name: apache
    version: 1.3.2
    kommentar: wenn was bwesonderes.
    dateien
    <dateiliste>

    verstanden oder?

    wer lust hat, der kann sich bei mir melden



  • ich überlege gerade einen Automake, Autoconf und configure Ersatz zu schreiben, dass ist ja so was ähnliches.

    Die Dateien sollen ungefäh die Syntax haben

    # demo
    
    [Section Name: check Work: Configure]
    
    >
    if !library(test,1.00)
    {
      echo "library test 1.00 not found ... try to install"
      if !install(test,1.00) # asks before installing!
      {
         echo "please install the test 1.00 library by hand"
         exit
      }
    }
    >
    
    [Section Name: all Work: Compile]
    
    -
    Compile
    File: demo.cc
    Language: C++
    Output: demo
    Library: m
    Standard: ISO C++ 98
    Optimize
    Warnings
    -
    
    -
    Compile
    File: obj.c
    Language: C
    Output: obj.o
    Optimize
    Warnings
    -
    
    [Section Name: clean Work: clean]
    
    -
    Remove
    File: *.o
    -
    
    [Section Name: copy Work: install]
    
    -
    Copy
    File: demo
    To: $BINDIR
    -
    

    Das Programm sammelt bereits Informationen über das System, die Installierten Programme/Librarys etc., so dass das teilweise langwierige configure entfällt, außerdem ist es Platform unabhängig und kann entspr. Compiler benutzen und ist nicht auf einen festgelegt

    Mit - leitet/beendet man Anweisungen, es gibt ein paar Standard Anweisungen, man kann aber auch eigene schreiben, mit einer Script Sprache. Mit > leitet man Anweisungen in einer Script Sprache ein und mit > beendet man diese auch

    [Section Name: <Name> Work: <Descr>]

    teilt das Programm in Sektionen ein

    install

    erledigt alles, was man zum installieren braucht

    install -prefix=/usr/local

    installiert nach /usr/local anstelle in das def. Verzeichniss



  • Hmm, kennst Du Portage, Korbinian? 😉



  • ne warum=



  • Weil Portage genau das kann, was Dein Tool können sollte. 🙂

    @kingruedi: Portage hat auch ein Dependency-System, nur arbeitet es nicht so low-level, wie das, was du im Sinn haben dürftest...



  • ja so in etwa stell ich mir meins auch vor.
    hab aber noch n paar sachen, warum ich wahrscheinlich n xml format nehm:
    kann damit leicht mehree pakete in eine datei hauen
    das listen feature (paketlisten und dependencies) werden dann bisschen leichter (der installer soll mal für ne eigene distri werden)

    bei mir schauts genau gesagt so aus(wahrscheinlich):

    <package>
    <id>apache-1.3.2</id>
    <version>1.3.2</version>
    <buildprocedure>
    <command>./configure --prefix=/usr</command>
    <command>make</command>
    <command>make install</command>
    </buildprocedure>
    <!-- in der datei, die dann in der datenbank gespeichert wird: -->
    <filelist>
    <file>/usr/apache/bin/httpd</file>
    <dir>/usr/apache</dir>
    </filelist>
    </package>

    das ganze is nicht ganz so modular wie deins.



  • @nman
    ja das stimmt. rpm kanns auch. aber ich will ja eben unabhängig von einer distribution bleiben (was ich weder mit rpm noch mit portage kann). es wird auf ein ähnliches rauskommen (das is klar) nur eben, dass du es für jede distri hernehmen kannst und entsprechend dafür kompilieren.



  • Original erstellt von Korbinian:
    ...aber ich will ja eben unabhängig von einer distribution bleiben (was ich weder mit rpm noch mit portage kann).

    Das ist überhaupt kein Problem, ein Freund von mir verwendet Portage (mit kleineren Modifikationen) auf einem "Debian-Frankenstein-Linux"!

    (LunarLinux verwendet auch ein Ports-ähnliches System!)



  • Original erstellt von Korbinian:
    kann damit leicht mehree pakete in eine datei hauen

    Bei Portage nennt man so etwas Meta-EBuilds und Gentoo hat einige davon!



  • Original erstellt von nman:
    ... und Gentoo hat einige davon!

    jo gentoo hat. /me will aber ne eigene distri 😃



  • Original erstellt von Korbinian:
    jo gentoo hat. /me will aber ne eigene distri 😃

    Ich wollte damit nur Deiner "geht bei Portage nicht/ nur schwer"-These etwas entgegensetzen!


Anmelden zum Antworten