Script zur erstellung einer Softwaredatenbank für Quellcode

tuxlover

tuxlover

Der den Tux knuddelt
hallo liebe leute,

ich bin nun schon ne ganze weile dabei rpm-pakete zu basteln und software wenn nötig auch mal aus dem sourcecode heraus zu installieren.

das blöde ist ja, dass es dafür so etwas wie eine datenbank ja nicht gibt. lässt sich so etwas vielleicht trotzdem irgendwie mit hilfe eines shellscripts bewerkstelligen?

ich habe unter /usr/src/software/new alle pakete die neu heruntergeladen worden.

Unter /usr/src/software/install alle jene Quelltextet die berreits erfolgreich ins system eingespielt worden sind.

und unter /usr/src/software/error diejenigen Quelltexte bei denen probleme auftraten oder wo abhängigkeiten noch nicht gelöst sind.

ich hatte daran gedacht, dass ich mir ein script schreibe welches ausliest welche dateien in welchem verzeichnis gelandet sind und mir diese mit datum und größe in eine datenbank schreibt. hat hierzu jemand eine idee.

viel schöner und eleganter wäre es natürlich wenn jemand ein script hat mit dem man ausserdem eine datenbank erstellen kann, die die entsprechenden daten und ihre pfade speichert.

bin auf diesem gebiet leider noch etwas unerfahren. ich danke euch schonmal im vorraus für eure kreativen ideen

tuxlover
 
Du kannst doch mit RPM abfragen was gerade installiert ist, welche Dateien die Pakete installiert haben usw. Wozu dann noch ein Skript? 'man rpm'.
 
Hallo

Wenn du dein Paketsystem (aus was für Gründen auch immer) nicht benutzen willst, dann bleiben für solch relativ kleine Datenbanken immernoch Flatfiles.

Mit find und echo lässt sich sowas natürlich auch coden (Das Rad neu erfinden) ;).
Besser und schneller geht sowas aber mit Perl.
Da gibt es das geniale Modul DB_File.
Das nutze ich selbst für kleine Datenverwaltungen (Counter, Notizen usw.).
Der Vorteil: Es brauch keinen gigantische Datenbankserver und ist sehr schnell und effizient.

Kleines unvollständiges Beispiel:
Code:
#!/usr/bin/perl
use DB_File;
my $file=dbfile;
tie %dbhash, 'DB_File', $file or die "DB Fehler in $file\n";
....
for (@myfiles) {
    $dbhash{$_} = (-s $_);
}
untie %dbhash;
Das Array @myfiles kannst du mit dem Modul File:Find füttern.
Mehrere Infos kannst du pragmatisch mit einem Trennzeichen deiner Wahl einfügen.
Eleganterweise würde man dazu aber Data::Dumper verwenden. :)

Da das hier aber kein Perlkurs werden soll, gehe ich darauf nicht weiter ein.

Das ist sehr atomar, und bevor irgend ein Datenbankserver angeworfen ist, ist das schon fertig.

Gruß Wolfgang
 
@theton danke ich weiß wie man mit rpm umgeht. es ging mir hier speziell um pakete die nur in Sourcecode vorliegen.

@wolfgang hast du ein beispiel wie man das ganze mit find und echo coden könnte?

danke für eure antworten

gruß tuxlover
 
@wolfgang hast du ein beispiel wie man das ganze mit find und echo coden könnte?
Wo ist das Problem?
Du durchsuchst deine Verzeichnisse und erstellst für jedes eine Textdatei, in die du für jede gefundene Datei deine bnötigten Infos mit festem Trennzeichen (mittels echo) ausgibst.
Beim Auslesen, gehst du andersrum mit grep in die jeweilige Datei.
Um an die Daten der Dateien ranzukommen, gibt es z.B stat oder du nutzt gleich printf von find, dann geht das ganz fix.
Code:
#Muster zum selberbasteln
find /verz1 -type f -printf "%f\t%s\t%t\n" >verz1_db
Gibt: Filename<TAB>Größe (in Byte)<TAB> die Zeit der letzten Änderung, im ctime Format<NL>
aus.
Um darin zu suchen, einfach mit grep nach was du auch suchst reingehen.
Um zu editieren mit sed Zeilen löschen/ändern usw. .

Gruß Wolfgang
 
jo gut das macht das was ich haben wollte. danke für eure tipps.
 
Zurück
Oben