Re: Abhängigkeiten von Paketen

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 26 Jul 2013 10:58:35 +0200 (CEST)

Peter Ross wrote:
> ich bin immer mal wieder erstaunt über "Kleinigkeiten" bei pkgng und frage
> mich, ob ich es mit Bugs oder Features zu tun habe.
>
> Ich habe auf einem Rechner php-5.4.16 gebaut als apache-2.2.24 installiert
> war.
>
> Danach habe ich mittels "pkg create" Pakete gebaut.
>
> Inzwischen wurde Apache zu 2.2.25 erneuert, mehr oder minder Bugfixes
> soweit ich weiß.
>
> Also wurde in dem Package-Verzeichnis apache-2.2.25 erzeugt und die alte
> Version entfernt.
>
> Ich kann aber nicht mehr php-5.4.16 installieren (pkg add), da es
> apache-2.2.24 haben will und darum abbricht.
>
> Kein Drama, ich habe also php-5.4.16 mit installiertem apache-2.2.25
> neugebaut und nun geht es.
>
> Trotzdem, sollte nicht "pkg add" schlau genug sein, um auch mit
> apache-2.2.25 zurecht zu kommen, selbst wenn das Paket mit 2.2.24 igebaut
> wurde?

Die klassischen pkg_*-Tools verhalten sich genauso: Wenn in
einem Package eine Dependency auf foo-1.2.3 registriert ist,
dann möchte pkg_add auch genau diese Version vorfinden, und
nicht foo-1.2.2 oder foo-1.2.4. Es wird zumindest eine
Warnung ausgegeben, evtl. muss man ihn mit -f dazu zwingen,
die Installation durchzuführen (wenn man weiß, dass es keine
Probleme verursachen wird).

Das strikte Prüfen der Version der Dependency hat einen guten
Grund. Es ist ja durchaus möglich, dass sich in der neuen
Version (hier: Apache) die ABI verändert hat. Es genügt ja
schon eine Kleinigkeit, z.B. dass in einer include-Datei der
Typ einer Variablen geändert wurde (z.B. von int zu long,
oder ein Array wurde vergrößert), und schon "brechen" Pakete,
die das verwendet haben.

Natürlich würde ich in diesem speziellen Fall (Minor-Revision
bei Apache) davon ausgehen, dass die ABI beibehalten wurde.
Die Apache-Developer sind ja keine Anfänger. Aber pkgng bzw.
die pkg_*-Tools können das ja nicht wissen, und ich finde es
nachvollziehbar, dass sie lieber auf Nummer Sicher gehen.

Theoretisch wäre es denkbar, dass die Port-Maintainer bei
Updates irgendein "flag" hinterlegen, das angibt, ob es sich
für andere Ports, die davon abhängen, um ein kompatibles
Update handelt oder nicht. Dieses Flag könnte dann von den
pkg_*-Tools bzw. pkgng ausgewertet werden, um zu entscheiden,
ob die Version einer Dependency passt oder nicht. Aber dies
wäre für die Port-Maintainer ein erheblicher Mehraufwand,
da es in vielen Fällen schwierig ist, diese Kompatibilität
mit der erforderlichen Verlässlichkeit festzustellen. Das
ist vermutlich nicht praktikabel.

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG,  Marktplatz 29, 85567 Grafing
Handelsregister:  Amtsgericht Muenchen, HRA 74606, Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsreg.: Amtsgericht München,
HRB 125758, Geschäftsführer:  Maik Bachmann,  Olaf Erb,  Ralf Gebhart
FreeBSD-Dienstleistungen/-Produkte + mehr: http://www.secnetix.de/bsd
"C is quirky, flawed, and an enormous success."
        -- Dennis M. Ritchie.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 26 Jul 2013 - 10:58:47 CEST

search this site