Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 16. Nov 2018 14:29

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: LFS -> Paketmanager
BeitragVerfasst: 29. Mai 2006 17:54 
Offline
Benutzeravatar

Registriert: 20. Aug 2005 13:51
Beiträge: 74
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Mai 2006 8:04 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 05. Mai 2004 7:35
Beiträge: 1238
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?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Mai 2006 11:00 
Offline
Benutzeravatar

Registriert: 20. Aug 2005 13:51
Beiträge: 74
Deutsch :D

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???


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Mai 2006 11:18 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 05. Mai 2004 7:35
Beiträge: 1238
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/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Mai 2006 15:57 
Offline
Benutzeravatar

Registriert: 20. Aug 2005 13:51
Beiträge: 74
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...


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de