Re: pkg_add schlägt fehl / release 4.7 packages entfernt?!

From: Patrick Hess <patrick_hess(at)t-online.de>
Date: Tue, 21 Oct 2003 21:04:19 +0200

Gude,

Volker schrieb:
> pkg_add -r shujit führt bei mir zu einer Fehlermeldung:
>
> Error: FTP Unable to get
> ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-4.7-release
>/Latest/shujit.tgz: File unavailable (e.g., file not found, no
> access)

Tja, offensichtlich ist die Zeit für 4.7-Release schon "abgelaufen".
Auf dem FTP-Server ist nicht unbegrenzt Platz, Packages ziehen
davon aber schon eine ganze Menge. Da nun schon 4.9-Release vor der
Tür steht, hat man sich wohl entschieden, die 4.7er-Packages von
der Platte zu putzen, um den Platz für die neuen 4.9er-Packages zu
haben.

> Woher bekomme ich das Package jetzt (interessiert mich einfach,
> auch wenn man das Ganze kompilieren könnte!).

Wenn es nicht auf der 4.7-Release-CD drauf ist: Keine Ahnung :-(

> 1) Offensichtlich ermittelt pkg_add, welches FreeBSD-Version
> läuft und such dann das entsprechende package (das in o.a. Fall
> nicht existiert). Kann ich pkg_add irgendwie klarmachen, dass er
> bspw. dann die 4.8er-Version nehmen soll, wenn ich mit -r
> arbeite?

Ich *glaube*, pkg_add ermittelt die Version aus `uname -r`. Und
dieses kann man schlecht überreden, was anderes auszugeben :o)
Alternativ könntest du das 4.8er-Package mittels wget herunterladen
und dieses dann mit pkg_add installieren.

> 2) Ist es möglich, pkg_add anzuweisen, nicht die letzte Version
> eines Packages, sondern eine bestimmte Version zu nehmen?
> Offensichtlich lässt man ja normalerweise bei pkg_add -r package
> bei package den Versionsnummernanhang weg. Kann ich alternativ
> trotzdem bspw. shujit-0.7.12.tgz angeben, wenn ich genau diese
> Version will?

Nein, das geht nicht. Die Packages, die du auf dem FTP-Server für
ein bestimmtes FreeBSD-Release findest, wurden alle zu einem
bestimmten Tag aus dem Ports-Tree erstellt.

Hierzu wird einige Tage, bevor das neue Release erscheint, ein
Ports-Freeze durchgeführt. Das heißt, daß in dieser Zeit nichts am
Ports-Tree geändert wird. In dieser Zeit werden dann mittels "make
package" die jeweiligen Packages für das Release erstellt, welche
dann auf den Release-CDs oder eben auf dem FTP-Server zu finden
sind. Nur so kann man sicher stellen, daß ein Package auch wirklich
mit dem entsprechenden Release sauber zusammenarbeiten wird.

Einem Release ist also immer eine bestimmte Version eines Packages
zugeordnet. Wenn du eine andere Version willst, solltest du diese
selbst aus dem Ports-Tree erstellen. Wenn du das mit "make package"
machst, hast du dann auch gleich ein Binär-Package daraus erstellt.

Alternativ kannst du natürlich auch ein Package versuchen, daß für
4.8-Release erstellt wurde (s.o.). Denke aber daran, daß sich die
Umgebung zwischen 4.7 und 4.8 so verändert haben kann, daß das
4.8er-Package auf 4.7 vielleicht nicht wie gewünscht funktioniert.

> 3) Verstehe ich das richtig, dass ich auch Installationen, die
> NICHT mit "pkg_add", sondern mit Hilfe der "ports collection &
> make" etc. installiert wurde, später wieder mit pkg_delete
> entfernen kann, wenn ich bereits ein make clean gemacht habe, was
> offenkundig ein späteres make deinstall ausschliesst?

Richtig. Ein "make" im Ports-Tree registriert die installierte
Anwendung im Package-System, welches sich unter /var/db/pkg
befindet. Von dort holt ein pkg_delete die benötigten Informationen
zum Deinstallieren. Dieses Verzeichnis wird von einem "make clean"
nicht angefaßt.

> Wenn ja, muss ich nach jeder Port-Installation (mittels make ..)
> pkgdb -F anwenden, damit die DB aktualisiert wird?

Nein, der Schalter -F dient nur zur Fehlerbehebung. Normalerweise
sollte ein "make install" innerhalb des Ports-Systems die jeweilige
Anwendung fehlerfrei beim Package-System registrieren können.

> Was hat es mit dieser Distfiles Directory auf sich?

Dieses Verzeichnis findest du unter /usr/ports/distfiles. Hierin
sind die Source-TGZs der Programme abgelegt, die du mittels des
Ports-Systems installiert hast. make lädt diese Sourcen zwar
automatisch herunter, bevor es einen Port kompiliert, löscht sie
danach aber nicht automatisch.

> Ich dachte
> bisher, dass ein make clean alles, was zum Builden eines Ports
> notwendig war, wieder entfernt!?

Nein, das räumt nur das work-Verzeichnis des jeweiligen Ports auf.
Die heruntergeladenen Sourcen unter /usr/ports/distfiles bleiben
aber erhalten, man möchte sie ja vielleicht später noch einmal
verwenden.

-- 
Gruß,
Patrick Hess
To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 21 Oct 2003 - 21:05:00 CEST

search this site