Ports download von einem anderen PC

Marco

Well-Known Member
Hallo

Ich suche eine Möglichkeit, wie ich Ports mittels eines anderen Rechner (auf dem allerdings kein FBSD, sondern Linux läuft) downloaden kann. Bei diesem "anderen" Rechner handelt es sich um mein Notebook, mit dem hin und wieder in den Genuß einer DSL-Anbindung komme. Zuhause habe ich leider nur eine analoge Modem-Connection. Daher möchte ich die nötigen Ports mit meinem Notebook laden und dann später auf meinen FreeBSD Rechner kopieren.

Dazu müsste ich allerdings erstmal wissen, welche Ports benötigt werden und wo ich sie downloaden kann. Das bezieht natürlich auch die Abhängigkeiten mit ein!
Ein ähnliches Thema wurde hier glaube ich schon einmal diskutiert, jedoch konnte ich das Thema nicht finden. Die Lösung sah damals so aus, dass (wie auch immer) alle benötigten Files (bzw. die zugehörigen Download-URLs) in eine Datei geschrieben wurden. Ab der Stelle könnte ich mir ja einfach ein Script schreiben, welches mir alles Dateien nacheinander herunterlädt. Aber wie bekomme ich die URLs in die Datei? Cvsup z.B. bietet meines Wissens keine solche Möglichkeit an.

Hoffe ihr könnt mir weiterhelfen!

Gruß, Marco
 
Da sollte man zwei Dinge unterscheiden:

1.) Den Portstree (das sind im wesentlichen die Makefiles)
2.) Die Distfiles (das stehen die Quellcodes der Programme drinn)

zu 1.) ftp://ftp5.de.freebsd.org/pub/FreeBSD/ports/ports/ kannste hier per FTP runterladen (oder ein anderer Spiegel).
zu 2.) Da fällt mir eigentlich nur ein die Dinger per Hand runterzuladen und unter /usr/ports/distfiles abzulegen. Schau Die die Makefiles der jeweiligen Ports an, da siehst Du wo die Sourcen stehen, und wie sie heissen.
 
Ich schätze du brauchst ein bsd-make, fetch, und cvsup, damit du den ports-tree mit cvsup downloaden kannst. Nimm dazu die configs aus deinem bsd, aber nimm natürlich ein anderes ports verzeichnis als /usr/ports.

Danach solltest du einfach mit
# bsd-make fetch
noch die sourcen für die ports die du haben willst ziehen.

Natürlich weiß ich nicht ob es für dein Linux ein bsd-make gibt. Vielleicht musst du das aus deinen bsd sourcen holen und versuchen unter Linux zu bauen.
 
Danke für die Hilfe.

@d-ra: Ich meinte natürlich die Distfiles. Sorry für die nicht ganz eindeutige Ausdrucksweise. Aber alles Files manuell zu laden, wäre eine rießen Arbeit. Eben gerade wegen der vielen Abhängigkeiten wollte ich eine Automatisierung.

@[LoN]Kamikaze: Ein bsd-make unter Linux würde mir ja genügen. Den Tree kann ich ja als Snapshot vom FTP laden. Werde mal sehn, was sich da tun lässt.
 
Den Quelltext findest du unter
/usr/src/usr.bin/make/
Du brauchst natürlich auch die Skripte unter
/usr/share/mk
 
Hi,

eventuell hilft dir folgendes weiter.

In '/usr/ports/Mk/bsd.ports.mk' findest du folgenden Abschnitt:
Code:
# fetch         - Retrieves ${DISTFILES} (and ${PATCHFILES} if defined)
# fetch-list    - Show list of files that would be retrieved by fetch.
# fetch-recursive
#               - Retrieves ${DISTFILES} (and ${PATCHFILES} if defined),
#                 for port and dependencies into ${DISTDIR} as necessary.
# fetch-recursive-list
#               - Show list of files that would be retrieved by
#                 fetch-recursive.
# fetch-required-list
#               - Show list of files that would be retrieved by
#                 fetch-required.
# fetch-required
#               - Retrieves ${DISTFILES} (and ${PATCHFILES} if defined),
#                 for port and dependencies that are not already installed
#                 into ${DISTDIR}.
#

du brauchst nur in das entsprechende PORTSDIR und dort folgende befehle:
Code:
 make fetch-recursive-list bzw.
 make fetch-required-list
wenn du den output etwas aufbereitest hast du eine fertige fetchlist.

ps:
ich habe in 'etc/make.conf' folgendes definiert
Code:
MASTER_SITE_BACKUP=ftp://MEININTERNER.FTP.SERVER/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE=${MASTER_SITE_BACKUP}
DISTDIR?=/data/distfiles
PACKAGES?=/data/packages-$OS-$VERSION
WRKDIR=/data/PORTBUILD/${PORTNAME}-${PORTVERSION}
- MASTER_SITE_BACKUP: mein interner ftp der alle distfiles hält
- MASTER_SITE_OVERRIDE: alle schauen zuerst hier nach bevor sie etwas downloaden
- DISTDIR: (nein liegt bei mir nicht unter /usr/ports/distfiles )
- PACKAGES: ich baue auf einer Maschine 5.3, 5.4 ... stable/current ports
- WRKDIR: hält den portstree sauber, ein rm -r ${WRKDIR} ist schneller als ein make clean, wenn du was suchst was nicht installiert wird musst du nur hier nachsehen (interresante scripts u.a. das nicht mitinstalliert wird)

die Verzichnisse DISTDIR und PACKAGES musst du allerdings von hand anlegen!

socke
 
Er braucht aber immer noch das BSD-make. Und ich weiß nicht ob er das unter Linux so einfach kompilieren kann.
 
Warum installierst du auf dem Notebbok nicht eine Minimalinstallation von FreeBSD, dann kannst du dir die distfiles einfach mittels make fetch-recursive (oder so) holen. Ansonsten kann man auch über den Linux-Umweg gehen, aber das ist so umständlich, daß ich's nicht mal erklären will.
 
@ socke: Make fetch-recursive-list klingt sehr gut! Werde ich mir demnächst gleich mal anschauen.

@ 0815Chaot: Würde ich sehr gerne, nur leider wird weder meine Gigabit Netzwerkkarte moch die WLAN Karte unterstützt. Hoffe das sich dies mit der neuen 6er Version geändert hat. Darüber habe ich mir aber noch nicht informiert. Werde ich aber morgen machen u auch erstmal das Image der 6er laden.
 
Das BSD-Port System auch nur ansatzweisse unter Linux zum laufen zu bringen, hatte ich eigentlich nicht vor... Außer jemand kann mir versichern, dass dann nach vielen Stunden Arbeit auch wirklich alles funktioniert :)
 
Kannst du unter bsd mit gmake testen - funktioniert nicht.

Um ehrlich zu sein, halte ich es aber für recht wahrscheinlich, dass du das bsd-make unter linux compilieren kannst. Ich denke auch das der Aufwand gering wäre.
 
Mein Problem hat sich jetzt von alleine gelöst... FBSD 6 unterstützt jetzt meine Netzwerkkarte. Das freut mich wirklich sehr :) Da kann ich mir jetzt einfach eine Installation aufs Notebook packen, den Portstree und die Distfiles dann später auf den Rechner Zuhause schieben.

Das passt jetzt zwar nicht zur Thematik und wenn nötig eröffne ich einfach einen neuen Thread: Ist es möglich meine 5.3er Installation mittels der 6er Bootonly-CD uptograden?? Mein Problem ist nämlich, dass ich weder online upgraden kann, noch habe ich genügent Zeit, mein System als 6er Version komplett neu aufzusetzen. Mit der Zeit hat sich doch einiges an Serverdiensten angesammelt, und diese neu zu konfigurieren verbraucht wieder ein Haufen Zeit... Na egal, genug mit der Heulerei! Ist solch ein Upgrade irgendie möglich oder nicht? Mir ist solch eine Variante nicht bekannt, aber fragen schadet ja nicht!
 
sysinstall hat eine Option "Upgrade", womit du ein Binärupdate machen kannst. Trotzdem würde ich dir eher eine Neuinstallation empfehlen. Dann ziehst du dir die Konfigurationsdateien für jeden Serverdienst aus deinem Backup einzeln zurück und testest aus, ob er mit der alten Konfiguration läuft.
 
Musste gerade festellen, dass es sich bei der Bootonly-CD tatsächlich nur um eine Boot-CD handelt :( Eine Installation ist damit nicht möglich. Nun muss ich mir noch die Installations-CDs laden. Wozu ich allerdings wieder erst Ende der Woche komme. Naja immer mit der Ruhe...
 
Zurück
Oben