Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
LFS -> Paketmanager

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Software
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
!r0nY



Anmeldungsdatum: 20.08.2005
Beiträge: 74

BeitragVerfasst am: 29. Mai 2006 17:54   Titel: LFS -> Paketmanager

Hallo,

ich habe schon einmal nach einem paketmanager für mein lfs system gesucht und bin aber nicht fündig geworden, nun habe ich mich dazu entschlosse selbst ein paketmanagement system zu erstellen. bis jetzt sieht es so aus, dass ich die sourcen aus blfs verwende, für diese hab ich mir jeweils ein install script erstellt und jetzt steh ich vor dem problem mit den abhängigkeiten, wie stell ich das an, dass wenn ich programm a installieren will, dieses aber programm b als grundlage vorraussetzt, dass dann auch programm b zuerst installiert wird.
ich hab das so angestellt, dass aus dem script von programm a als erstes das script von programm b aufgerufen wird, nach meiner logik sollte ja dann prog b installiert werden, aber das wird es nicht.

habt ihr vielleicht eine idde wie ich etwas anders machen könnte/sollte????

danke
 
Benutzer-Profile anzeigen Private Nachricht senden

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 30. Mai 2006 8:04   Titel:

Hi, hat's mit pkg_src nicht funktioniert?

So wie du es darstellst, klingt es doch richtig. Es wäre vielleicht vernünftig, zu jedem Quellcode-Paket eine Datei mit einer Liste von Abhängigkeiten zu haben.

Ruby-Code:
Code:
class Package
  def initialize(filename)
    @name = filename.gsub(".tar.bz2", "")
    @depfile = "#{@name}.deps"
    @deps = read_deps
  end

  def read_deps
    deps = Array.new
    fp = File.open(@depfile, "r")
    fp.each_line do |line|
      deps.push(line.gsub(/$\s*/, "")
    end
    return deps
  end

  def install
    @deps.each do |package_filename|
      tmp_dep = Package.new(package_filename)
      tmp_dep.install
    end
   # tar -zxf @filename -C /tmp && cd /tmp/#{@filename.gsub(".tar.gz", "") ...
  end
end

mypackage = Package.new(ruby-1.8.2.tar.bz2)
mypackage.install



Ruby macht wahrscheinlich keinen Sinn, da das ja schon einiges an Paketen voraussetzt, aber ich habe vor kurzem in "The Art of Unix Programming" von einem Packetsystem in Bash-Skript gelesen - ich schicke den Link, sobald ich ihn finde.

Das von Crux schein auch ganz nett zu sein:
http://crux.nu/Main/Handbook2-2#ntoc24

In welcher Sprache schreibst du?
 
Benutzer-Profile anzeigen Private Nachricht senden

!r0nY



Anmeldungsdatum: 20.08.2005
Beiträge: 74

BeitragVerfasst am: 30. Mai 2006 11:00   Titel:

Deutsch Very Happy

also pkg-src hat mich nicht so vom hocker gerissen, ausserdem habe ich meinen eigenen datenpool (aus blfs) und irgendwo reizt es mich doch schon selbst soetwas auf die beine zustellen...

also ich ich habe das mit einem einfachen bash-script gemacht ...nichts weltbewegendes.
inhalt des scripts:

Code:

cd /pfad/
./configure --prefix=/usr
make
make install


fals das programm jedoch ein anderes verraussetzt, dann steht in der ersten zeile der befehl das script des vorrausgesetzten programmes zu starten
bsp.

Code:

sh /pfad/zu/script
cd /pfad
./configure --prefix=/usr
make
make install


und ich glaube da liegt der fehler...
es ist halt nur eine überlegung gewesen, die nach meiner logik eigentlich hätte funktionieren müssen...
was könntest du mir denn für ein tipp geben in welcher sprache ich es schreiben sollte und wie ich das am besten angehen kann???
 
Benutzer-Profile anzeigen Private Nachricht senden

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 30. Mai 2006 11:18   Titel:

Ich weiß nicht so recht. Es ist nahe-liegend es in Shellskript zu schreiben:
- komfortable (im Vergleich zu C)
- Benötigt wenig bereits installierte Software (im Vergleich zu Perl, Python, Ruby, ...)

Wie du es eingerichtet hast, müsste es meiner Ansicht nach auch funktionieren... Vielleicht ein paar Debugging-Meldungen einbauen und weitersehen.

Ich würde es aber nach dem Konzept von oben machen: Eine Datei seperat halten, welche die Abhängigkeiten der jeweiligen Software als Liste beinhaltet. Danach wäre interessant, wie man es hinbekommt, zu notieren, welche Dateien bei einem bestimmten Paket installiert werden:

Das ginge so, aber es ist wirklich stressig: Zunächst wird die Software woanders installiert.
Code:
cd /src/wget-1.10
./configure --prefix=/tmp/pkg/wget-1.10
make
make install
cd /tmp/pkg/wget-1.10
find . -type f /var/pkgdb/wget-1.10.files
find . -type d /var/pkgdb/wget-1.10.dirs
rm -r /tmp/wget-1.10

cd /src/wget-1.10
make clean
configure --prefix=/usr
make
make install


Wenn allerdings die Dateien nur woanders installiert werden, sonst jedoch identisch sind, so kann man sie dann auch einfach manuell kopieren.

Also hier erstmal die Info aus "The Art of Unix Programming":
Zitat:
Case Study: Sorcery Linux

Sorcerer GNU/Linux is a Linux distribution that you install as a small, bootable foothold system just powerful enough to run bash(1) and a couple of download utilities. With this code in place, you can invoke Sorcery, the Sorcerer package system.

Sorcery handles installing, removing, and integrity-checking software packages. When you “cast spells”, Sorcery downloads the source code, compiles it, installs it, and saves a list of files that were installed (along with a build log and checksums for all the files). Installed packages can be “dispelled” or removed. Package listing and integrity checks are also available. More details are available at the Sorcery project site (http://sorcerer.wox.org/).

The Sorcery system is written entirely in shell. Program installation procedures tend to be small, simple programs for which shell is appropriate. In this particular application, the main drawback of shell is neutralized because Sorcery's authors can guarantee that the helper programs they need will be present in the foothold system.


Der Link ist allerdings veraltet, das wird jetzt vom Berlios verwaltet: http://sorcerer.berlios.de/
 
Benutzer-Profile anzeigen Private Nachricht senden

!r0nY



Anmeldungsdatum: 20.08.2005
Beiträge: 74

BeitragVerfasst am: 30. Mai 2006 15:57   Titel:

habe bis jetzt nur vorkenntnisse in der datenverarbeitung mit turbopascal, wie kann ich denn mit der schell datensätze zeilen weise aus einer datei lesen oder in eine datei schreiben (schreiben geht doch glaube ich mit cat > /pfad/datei << "EOF" - bin nicht sicher). wie könnte ich zum beispiel ein script schreiben, das aus einer datei bis zu einer bestimmten stelle liest?

hatte mir das so gedacht, das ich eine datei mit den installations anweisung habe, diese zu beginn eine datei abruft, welche die abhängigkeiten der verschiedenen programme enthält und nach installations prozess werden alle abgehandelten programme in eine weitere datei geschrieben, die dann sozusagen die information enthält welche programme schon installiert sind.

hoffe ihr könnt mein gedanken wirrwar versthen und mir helfen...
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Software Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy