pkg_add tarballs speichern

ilb

Well-Known Member
Hi,
ich würd gern die tarballs speichern beim installieren. Mir würde es sogar schon reichen nur alle Archive zu bekommen, die für die Installation dann benötigt werden. Hab hier naemlich ein Laptop mit dem ich kein Internet habe. Weiß da jemand ne Lösung? Unter NetBSD gibts da ja die -K Option hab ich gelesen.. Für OpenBSD find ich sowas net :(
 
Hmm, verstehe ich Dich richtig: Du möchtest an einem Rechner mit Internetanschluss die Pakete herunterladen und dann auf dein Laptop (das keinen Inet-Anschluss hat) aufspielen?

Falls ja, kannste zum einen auf dieser Seite die richtige Rechner-Architektur auswählen und dann die Pakete herunterladen.

Oder aber, Du suchst Dir 'nen Mirror in Deutschland, gehst dort ins entsprechende Verzeichnis (z. B. i386) und lädtst Dir dort die Pakete runter.

Dann auf Deinem Laptop in ein eigenes Verzeichnis, das Du auch in Deine .profile eintragen kannst. Und dann kannst Du die Pakete mit pkg_add installieren.
 
ja hast mich richtig verstanden. Aber genau das will ich net. Weil wenn ich alle runterlade is das ja riesig und son schnelles inet hab ich hier nicht. Und wenn ich eins runterlade muss ich ja alle Abhaengigkeiten aufschreiben und die dann runterladen. Und das is Affenarbeit :D
Such da halt ne bequemere Lösung
 
Hi,
ich würd gern die tarballs speichern beim installieren. Mir würde es sogar schon reichen nur alle Archive zu bekommen, die für die Installation dann benötigt werden. Hab hier naemlich ein Laptop mit dem ich kein Internet habe. Weiß da jemand ne Lösung? Unter NetBSD gibts da ja die -K Option hab ich gelesen.. Für OpenBSD find ich sowas net :(

Also, ich bin ja kein OpenBSD-User aber auch dort sollte diese Aufgabe nicht in eine Affenarbeit ausarten, es sei denn man geht von einem falschen Denkansatz aus....

Ich würde es so machen:
Als erstes richtest Du Dir irgendwo (ich mach sowas meist in qemu) ein System ein, wie Du es final auf Deinem Laptop haben willst. Meistens ist aber der Desktop doch schon so eingerichtet wie man sein Laptop haben will, dann kann man sich das QEmu-Geraffel sparen...
Dort sollte der Paketmanager eine Option bieten, mit der alle installierten PKGs aufgelistet werden können (FreeBSD: "pkg_info" / Fedora: "rpm -qa"). Meistens (unter FreeBSD) braucht man dann an diese Namen nur noch eine entsprechende Endung ran hängen (von mir aus, im Extremfall, auch Jockerzeichen) und schon hat man eine Liste von zu saugenden Dateinamen.

Dem FTP-Programm unter FreeBSD und NetBSD (sowie NcFTP unter Solaris und Linux) kann man per Pipe die gewünschten Kommandos schön reinpfeifen.
Vielleicht erstellt man sich auch erstmal eine Liste aller Pakete, die auf dem FTP-Server liegen und filtert diese per Script mit der Liste der installierten Pakete, so das nur die gewünschten Dateinamen des FTP-Servers übrig bleiben. Das geht alles per Script wunderbar und sollte nur ein paar Minuten dauern.

Gruß
Yoda
 
Zuletzt bearbeitet:
hm is auch n netter ansatz. aber ich will ja nur bestimmte packete und nich alle vom desktop. der laptop is fuern ganz anderen zweck gedacht. Son scheiss. Gibts da echt nix einfacheres? Das is mir alles auch noch zu viel Arbeit. Will einfach nur einen Befehl. fuer NetBSD gibts wohl auch n Tool das heisst pkg_tarup. Das speichert auch die tarballs. Gibts da irgendwie was in der art fuer OpenBSD? Kann doch fast net sein ;D
 
Hm, aber erstens hät ich das ganze noch heute gern fertig gelöst und zweitens bin ich Schüler hab also net ma eben ~40 Euro für das Projekt über. Auch wenns natürlich ne nette Unterstützung ist.
 
Zuletzt bearbeitet:
Es gibt in der Tat die sehr einfach Möglichkeit sich das CD-Set des aktuellen OpenBSD-Release zu kaufen, damit hat man sowohl die Lösung für Dein Problem, als auch das Projekt unterstützt.

https://https.openbsd.org/cgi-bin/order.eu

Das ist zwar der ideel beste Ansatz, löst aber die Probleme des Threadstellers nicht, denn beim CD-Set ist nur 'ne Auswahl der verfügbaren Pakete dabei, aber längst nicht alle.

@ Threadsteller

Vergiss es! Mit Gequengel a la "Ich will aber nur einen Befehl" kommste nicht weiter. Fast alle Betriebssysteme sind heute darauf ausgelegt, dass eine funktionierende Internetleitung vorhanden ist. Wer die nicht hat, muss ein wenig Grips, Arbeit und im Zweifelsfall auch Geld investieren.

Ich hab' ein ähnliches Problem mit dem Rechner meiner Eltern. Die haben nur eine 56k-Modemleitung und wollen für neumodischen Schnickschnack wie DSL kein Geld ausgeben. Die Lösung: Debian installieren. Ja, das ist Linux und kein *BSD aber so what?! Man kann sich die entsprechenden DVDs entweder für kleines Geld bestellen oder saugt sie sich selbst. Und dann kann man sich bequem alles von der Scheibe installieren.
 
Wow - 9 antworten, fast alle meckern am Poster rum, aber kennen die lösung nicht OO

Also, sofern du vorhast auf dem einen PC die gleichen pakete zu installieren wie auf dem anderen, und du "Nur" die installierten pakete einfach ein 2. mal einsetzen möchtest, musst du vorm installiern mit pkg_add einfach die Variable " PKG_CACHE" setzen und den Pfad dort angeben wo die Pakete gespeichert werden müssen - mach ich z.B. so um nicht für mehrere Maschinen die gleichen Pakete mehrmals runterladen zu müssen.

siehe auch:
http://www.openbsd.org/cgi-bin/man.cgi?query=pkg_add&sektion=1&manpath=OpenBSD+4.4

PKG_CACHE If set, any package retrieved from a distant location will
be copied to that directory as well.
 
Wow - 9 antworten, fast alle meckern am Poster rum, aber kennen die lösung nicht OO

Das ist voellig normal, hier sogar mehr als auf den Mailinglisten. Und Du kennst Die korrekte Antwort offenbar auch nicht ;-)

(Und ob mein Antwort wirklich korrekt ist, wird sich zeigen)

Und vor allem hat niemand mal einen Blick auf die passenden Manpages geworfen (zugegeben: da ist auch nicht alles zu finden, siehe SUBDIRLIST weiter unten).

Also, sofern du vorhast auf dem einen PC die gleichen pakete zu installieren wie auf dem anderen, und du "Nur" die installierten pakete einfach ein 2. mal einsetzen möchtest, musst du vorm installiern mit pkg_add einfach die Variable " PKG_CACHE" setzen und den Pfad dort angeben wo die Pakete gespeichert werden müssen - mach ich z.B. so um nicht für mehrere Maschinen die gleichen Pakete mehrmals runterladen zu müssen.

Das will der OP aber so nicht, wenn ich ihn richtig verstanden habe. Ausserdem funktioniert das natuerlich nur, wenn auf dem PC mit der flotten Leitung noch nichts installiert ist; Packages, die schon aktuell installiert sind, werden natuerlich nicht noch einmal heruntergeladen und landen daher auch nicht in $PKG_CACHE. Und ausserdem kann es ja sein, dass man auf dem PC einen Port im Flavor foo, auf dem Laptop aber im Flavor bar haben moechte, was dann auch zu beliebiig unterschiedlichen Dependencies fuehren kann.

Die bittere Wahrheit steht in bsd.port.mk(5) und (zur Angabe der gewuenschten Flavors und Subpackages) packages-specs(7), und ein entscheidender Teil ist offenbar gar nicht in den Manpages dokumentiert.

Als erstes braucht man den zum installierten System passenenden Portstree (bitte nicht -current und -release miteinander verwursten). Dann braucht man eine Liste der passenden Ports. Letztere schreibt man Zeilenweise in eine Datei, und zwar in der in packages-specs(7) unter DEPENDENCIES angegeben Form (directory,[-multi],[flavor...]). Wenn man also z.B. unbedingt ghostscript im a4-Flavor und von gpsd die Subpackages -motif und -php haben moechte, schreibt man folgendes z.B. nach /var/tmp/my-favorite-shit:

Code:
misc/gpsd,-motif
misc/gpsd,-php
print/ghostscript/gnu,a4

Weiter im DruidenwissenL bsd.port.mk(5). Dort werden die Targets full-{build,run,all}-depends beschrieben. Fuer das, was der OP moechte, braucht man full-run-depends (er will's ja nicht bauen, sondern nur installieren). Dieses Target kann man probeweise auch mal in einzelnen Ports anwerfen (gerne auch mit FLAVOR und SUBPACKAGE gesetzt). Beispiele:

Code:
$ cd /usr/ports/print/ghostscript/gnu && make full-run-depends
jpeg-6bp4
libiconv-1.12
ghostscript-fonts-8.11p0
ijs-0.35
png-1.2.33

Code:
$ cd /usr/ports/print/ghostscript/gnu && FLAVOR=gtk make full-run-depends
hicolor-icon-theme-0.10p4
jpeg-6bp4
tiff-3.8.2p2
glitz-0.5.6p1
jasper-1.900.1p0
libiconv-1.12
gettext-0.17p0
ghostscript-fonts-8.11p0
pcre-7.8
glib2-2.18.4p0
atk-1.24.0
ijs-0.35
png-1.2.33
cairo-1.8.6p1
pango-1.22.3
gtk+2-2.14.7

Jetzt kommt noch der dritte Teil des Druidenwissens, der in keiner Manpage zu finden ist: SUBDIRLIST. Vage HInweise dazu gibt's in diversen Files unter /usr/ports/infrastructure.

Wenn man diverse Targets des Ports Master Makefiles (/usr/ports/Makefile) anwirft, dann roemern die normalerweise ueber alle Ports, die per SUBDIR verdrahtet sind. Ist ganz nett, dauert furchtbar lange, will man nicht. Man kann aber auch die Variable SUBDIRLIST auf eine Datei setzen, die eine Liste von Unterverzeichnissen nebst Angabe von Subpackages und Flavors innerhalb des Portstress enthaelt. Das waere z.B. die Datei /var/tmp/my-favorite-shit im Beispiel oben. Die angegebenen Targets werden dann nur auf den angegebenen Ports ausgefuehrt.

Zusammen kann man jetzt also

Code:
$ cd /usr/ports && SUBDIRLIST=/var/tmp/my-favorite-shit make full-run-depends

aufrufen und bekommt eine Liste aller benoetigten Packagenamen:

Code:
===> misc/gpsd,-motif
libiconv-1.12
openmotif-2.3.0p0
gpsd-2.38p0
===> misc/gpsd,-php
jpeg-6bp4
t1lib-5.1.0p1
libiconv-1.12
gettext-0.17p0
libxml-2.6.32p2
php5-core-5.2.8p0
png-1.2.33
php5-gd-5.2.8
===> print/ghostscript/gnu,a4
jpeg-6bp4
libiconv-1.12
ghostscript-fonts-8.11p0
ijs-0.35
png-1.2.33

Da geht man jetzt noch mit sed(1) und sort(1) drueber, um Duplikate und das "===>?" Geschwafel zu entsorgen und ".tgz" hinten anzuhaengen, und fertig ist die Wurst.
 
Geil dankeschöön :)
Also das mit dem PKG_CACHE wär auch noch ok gewesen. Dann hät ich das halt inner VM gemacht und n bisschen mehr Zeit investiert =) Aber die Lösung von kili ist die beste :) Vielen vielen Dank.
PS: Debian wollt ich auch schon installieren. Ging nicht^^ Der Laptop is uralt und irgendwie hat der immer gemeckert. Und an der CD lags net ;) Die war in Ordnung.

Also danke. Werd das jetz mal machen
 
Zurück
Oben