Wie alle Abhängigkeiten eines Paketes bundeln?

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
Meillo
Moderator
Beiträge: 5502
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von Meillo » 17.09.2009 11:39:11

Ich habe ein System (Ubuntu Hardy) das offline ist. Es hat auch kein CD-Laufwerk. Datentransfer ist nur per USB-Stick möglich.

Wenn ich ein neues Programm installieren will, dann lade ich mir das entsprechende deb-Paket runter, übertrage es per USB-Stick und installiere es dann. Das klappt ganz gut solange die Pakete wenige Abhängigkeiten haben.

Jetzt will ich aber ein größeres Programm installieren das etwa 30 Abhängigkeiten hat. Manche von denen sind vielleicht schon erfüllt. Manche werden aber ihrerseits wieder weitere Abhängigkeiten haben. Ich müsste also um die Hundert deb-Pakete von Hand runterladen. Das will ich mir ersparen.

Kennt jemand eine Möglichkeit, dass ich nur das Hauptpaket angebe und mir automatisch ein Archiv gebaut wird das alle Abhängigkeiten (auch die indirekten) enthält? Gibt's vielleicht 'ne Website die sowas anbietet?

Oder kennt jemand eine alternative Arbeitserleichterung?
Use ed(1) once in a while!

severin
Beiträge: 481
Registriert: 26.04.2005 13:30:43

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von severin » 17.09.2009 11:50:20

guckstu http://sidux.com/PNphpBB2-viewtopic-p-36759.html#36759 (wobei man bei debian afaik eher aptitude nimmt als apt-get; aber das sollte sich nichts tun)

Benutzeravatar
Meillo
Moderator
Beiträge: 5502
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von Meillo » 17.09.2009 12:14:11

Danke. Doch leider hilft das nicht so recht weiter.

Zum einen habe ich hier nur Windows-Systeme die einen Internetzugang haben.

Zum anderen habe ich keinen Zugriff auf ein Ubuntu Hardy System um den Befehl abzusetzen. Denn ich will ja die Pakete für Hardy.

Womöglich klappt es gar nicht einfach mit einem anderen System, denn falls dort schon einige der Abhängigkeiten installiert sind, dann tauchen sie wohl gar nicht mehr in der Liste auf. Okay, ich könnte vielleicht 'ne LiveCD auftreiben und hoffen, dass da nicht mehr installiert ist als auf meinem System.


Vielleicht kennt ja doch jemand einen Webservice der das anbietet.

(Ich fühle mich ja so eingeschränkt, ohne Internetzugang am Arbeitssystem und umzingelt von Windows-Rechnern. *heul* )
Use ed(1) once in a while!

Benutzeravatar
chabayo
Beiträge: 924
Registriert: 17.08.2005 07:44:33
Kontaktdaten:

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von chabayo » 17.09.2009 12:57:24

Wie waers wenn du dir die DVD-Distribution herunterlaedst!? - dauert lange aber der Sack ist zu.

Du kannst dir das auch unter Windows scripten, weil du ja dein Linux als Arbeitsrechner auslegst, installier Cygwin auf Windows, und deine 'Environment' erscheint dir gleich vertrauter. Dann wuerde ich mir die Abhaengigkeiten aus dem Paket aus dem Packages-File, also das was du mit apt-get update holst, auslesen und aufschluesseln. Ist mit etwas Uebung eine Sache von 1-2 Stunden, denke ich - mit einer entsprechenden Internetverbindung kann das schon die 1. DVD sein.

mfg
chab

[edit]
*rofl* - erinnert mich an die Zeit als dpkg noch kein apt kannte...
Watt about the non-digital!?

Benutzeravatar
Meillo
Moderator
Beiträge: 5502
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von Meillo » 17.09.2009 13:40:17

chabayo hat geschrieben:Wie waers wenn du dir die DVD-Distribution herunterlaedst!?
Bringt mir ja nichts, denn der Rechner hat kein Laufwerk. Und USB-Sticks auf die DVD-Images passen habe ich nicht.

Was ich suche ist eine Möglichkeit unter Windows unkompliziert an die Deb-Files aller Abhängigkeiten eines Paketes zu kommen.
Du kannst dir das auch unter Windows scripten, weil du ja dein Linux als Arbeitsrechner auslegst, installier Cygwin auf Windows, und deine 'Environment' erscheint dir gleich vertrauter.
Falls man das als eingeschränkter Nutzer ohne C-Compiler überhaupt installieren kann. Aber den Windowsrechner will ich ja nicht groß benutzen, ich will damit nur das Zeug runterladen.
Dann wuerde ich mir die Abhaengigkeiten aus dem Paket aus dem Packages-File, also das was du mit apt-get update holst, auslesen und aufschluesseln. Ist mit etwas Uebung eine Sache von 1-2 Stunden, denke ich [...]
Das könnte so gehen ... aber der Aufwand das zu programmieren ist vermutlich höher als wenn ich alle Abhängigkeiten von Hand runterlade und das für die zwei oder drei Programme die das in den nächsten Monaten betreffen wird. Das lohnt sich also nicht.
Use ed(1) once in a while!

severin
Beiträge: 481
Registriert: 26.04.2005 13:30:43

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von severin » 17.09.2009 14:01:43

Meillo hat geschrieben:Zum anderen habe ich keinen Zugriff auf ein Ubuntu Hardy System um den Befehl abzusetzen. Denn ich will ja die Pakete für Hardy.

Womöglich klappt es gar nicht einfach mit einem anderen System, denn falls dort schon einige der Abhängigkeiten installiert sind, dann tauchen sie wohl gar nicht mehr in der Liste auf. Okay, ich könnte vielleicht 'ne LiveCD auftreiben und hoffen, dass da nicht mehr installiert ist als auf meinem System.
Da hast Du mich falsch verstanden. Was der Befehl macht ist, so zu tun, als ob er die Pakete (incl. aller Abhängigkeiten) runterladen will, aber stattdessen druckt er die URL's aus. Mit diesen URL's kannst Du dann auf jedem beliebigen online Betriebssystem (auch ner Linux-LiveCD auf Deinem Windows-Rechner) jedes beliebige Programm füttern, das reihenweise Dateien runterladen kann (z. B. wget, wie es in meinem Link gemacht wird). Aber es gibt sicher auch für Windows Programme, die massenweise Links abarbeiten können - im schlimmsten Fall öffnest Du das getdebs.sh im Firefox und ziehst die Pakete via DownThemAll.

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von Spasswolf » 17.09.2009 14:05:51

Funktioniert das nicht nur, wenn das Offline System eine aktuelle Paketliste hat, also zumindest irgendwann mal online war, und "apt-get update" mit einer richtigen sources.list ausgeführt wurde?

Benutzeravatar
Meillo
Moderator
Beiträge: 5502
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von Meillo » 17.09.2009 14:28:16

severin hat geschrieben:Da hast Du mich falsch verstanden.
Ja. Aber jetzt habe ich's kappiert: Ich muss den Befehl auf meinem Offline-System ausführen.

Hab schon die Ausgabe angeschaut: Das sieht ziemlich gut aus. Getestet habe ich's noch nicht, aber ich gehe davon aus, dass es funktioniert.

Allerbesten Dank.


EDIT: quote gefixed
Zuletzt geändert von Meillo am 17.09.2009 18:40:49, insgesamt 2-mal geändert.
Use ed(1) once in a while!

severin
Beiträge: 481
Registriert: 26.04.2005 13:30:43

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von severin » 17.09.2009 18:18:28

@Spasswolf: auch die mirror-Informationen kann man rüberkopieren. Ich weiß nur nicht genau, wo die liegen, aber wahrscheinlich auch irgendwo in /var/cache/apt.


EDIT:
Ich habe mich vertan: in /var/lib/apt/lists/ - vgl. http://www.lugs.ch/lib/doc/apt-offline.phtml

Benutzeravatar
Meillo
Moderator
Beiträge: 5502
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von Meillo » 17.09.2009 21:16:03

Habe mir die Kommandozeile zu einem kleinen Script gebaut. Vielleicht hat ja jemand mal Verwendung dafür.

Code: Alles auswählen

#!/bin/sh
#
# prints a script that downloads a package
# and all its dependencies using wget
#
# based on: http://sidux.com/PNphpBB2-viewtopic-p-36759.html#36759
# see also: http://debianforum.de/forum/viewtopic.php?f=12&t=114076

if [ $# -eq 0 ] ; then
        echo "usage: deburls.sh <package> [...]"
        exit 1
fi

apt-get --print-uris --yes install "$@" \
| grep "^'http:" \
| awk '{
  if (NR==1) { print "#!/bin/sh" }
  print "wget -c " $1 " -O " $2
}'
Use ed(1) once in a while!

Benutzeravatar
ThorstenS
Beiträge: 2836
Registriert: 24.04.2004 15:33:31

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von ThorstenS » 21.09.2009 08:52:28

Schönes Script, aber ein Verbesserungsvorschlag
Anstelle von

Code: Alles auswählen

apt-get --print-uris --yes install "$@" 
würde ich folgendes schreiben:

Code: Alles auswählen

apt-get --reinstall --print-uris --yes install "$@" 
Das ermöglicht auch das Herunterladen von bereits installierten Paketen, ohne die eigentliche Funktion zu verändern.

Benutzeravatar
Meillo
Moderator
Beiträge: 5502
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie alle Abhängigkeiten eines Paketes bundeln?

Beitrag von Meillo » 21.09.2009 09:37:24

ThorstenS hat geschrieben:Das ermöglicht auch das Herunterladen von bereits installierten Paketen, ohne die eigentliche Funktion zu verändern.
Das war in meinem Fall nicht gewünscht. Aber jemand anderes der mal über diesen Thread stolpert will es vielleicht so. Deshalb danke für die Ergänzung.
Use ed(1) once in a while!

Antworten