-
-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bei Installation eines Bundles die automatische Auswahl einer inkompatible Version verhindern #325
Comments
Diese Auflösung macht Composer, das ist leider nicht möglich. |
Ist dies ein Fehler im Composer? Denn er ist doch genau dafür da, die Abhängigkeiten zu checken und wenn in einer Erweiterung steht "erst ab Contao 4.5", wieso nimmt er sie denn dann trotzdem bei 4.4? |
Nein, das ist kein Fehler. "Eine kompatible Version" heisst, er müsste jede Version in Kombination mit allen anderen Paketen die du bereits hast prüfen. Also er müsste die Abhängigkeitsauflösung die so lange dauert und wegen RAM-Issues in die Cloud ausgelagert wurde für jede einzelne Version des Pakets durchführen. Es geht ja hier nicht nur um Contao sondern immer um alle Abhängigkeiten und deren Abhängigkeiten und wiederum deren Abhängigkeiten. Schlussendlich brauchst du ein installierbares Set an Paketen. |
Die Hintergründe und technischen Probleme kenne ich nicht. Ich gebe aber zu bedenken, dass der Befehl "neueste Version" gefühlt nicht richtig sein kann. Er müsste "neueste kompatible Version" lauten. Das wurde ja bereits im ER2 verhindert, dass man eine Erweiterung, die erst ab C3.5 freigegeben war in C3.4 installieren konnte, bzw. man zumindestens einen Hinweis bekam. D.h. jetzt also, dass, wenn ich ein Paket installiere, ich zuerst manuell bei Packagist nachsehen muss, ob die für meine Contao Version freigegeben ist. Und hier geht es um C4.5, C4.7 ist laut Releaseplan aber auch bereits in der Entwicklung. Und wenn dann noch C5 und C6 kommt? Irgendwie hatte ich mir das einfacher vorgestellt, und zwar, dass ich mit "Nach Paketen suchen" kompatible Bundles zu meiner Contao Version angezeigt bekomme. Und wenn ich jetzt Contao aktualisiere, muss ich meine Pakete checken, welche ich in der Version heruntergesetzt habe und ob ich sie jetzt wieder hochsetzen muss/kann? |
Korrekt. Du bist verantwortlich zu schauen, welche Pakete überhaupt in Frage kommen könnten, weil es kann niemand im Voraus wissen, ob das was du gerne hättest schlussendlich zu einer installierbaren Kombination führt. Nur weil die neue Version zu Contao kompatibel ist, heisst ja nicht, dass sie dann in Kombination mit anderen Erweiterungen läuft. |
Aber könnte man dies nicht zumindestens automatisiert prüfen, ob in der composer.json der Erweiterung die Contao Version übereinstimmt? Mit Computern müsste man doch sone Aufgabe übernehmen können, oder? |
Theoretisch, ja. Wie gesagt übernimmt diese Aufgabe aber Composer, und Composer weiss nichts von einer Contao Version. Dazu müssten wir die entsprechenden Funktionen von Composer komplett nachbauen, was wohl nicht ganz einfach wird … |
metamodels/core z.B. wird bei den Paketen im Manager als "inkompatibel" angezeigt. Bei den Paketdetails sieht man Ist dies der Grund, warum es als inkompatibel angezeigt wird? Wenn ja, dann wäre es natürlich gut, wenn dies auch funktionieren würde, wenn die Version zu groß ist, nicht nur, wenn Contao zu klein ist. |
Mmh, metamodels/filter_perimetersearch wird nicht als inkompatibel angezeigt und hat auch |
Ihr wisst doch bestimmt, wer diese Entscheidung trifft und warum, oder?
|
Jetzt wechselst du aber das Thema… Das Paket ist inkompatibel, diese Entscheidung trifft das Entwicklerteam. |
Ich denke, dass dies alles hier zu dem Thread-Title passt: "Bei Installation eines Bundles die automatische Auswahl einer inkompatible Version verhindern" Thumbs Up Emoji von @leofeyer verstehe ich nicht. Das Entwicklerteam entscheidet also, dass z.B. metamodels/filter_perimetersearch kompatibel ist, obwohl Wie gesagt, ich kenne die teschnichen Hintergründe und Verbindungen nicht, aber es geht darum, dass der Manager "eine inkompatible Version verhindern" soll, wie im Thread-Title angefragt. Teilweise zeigt er es ja auch schon an mit dem Text, den ich oben zitiert hatte. |
Sorry, mit Entwicklerteam meinte ich natürlich das Team von MetaModels. https://packagist.org/packages/metamodels/filter_perimetersearch#dev-feature/contao4 ist als kompatibel mit Contao 4 definiert, daher erscheint es. Genauso bei allen anderen. Der Manager kann nur sicherstellen dass es für das Paket eine Version für Contao 4 / den Manager gibt, nicht ob diese Version auch mit allen deinen Abhängigkeiten kompatibel ist. Dafür sorgt dann Composer bei der Installation. |
Wenn man von dem Manager aus über "Paketdetails" nach metamodels/filter_perimetersearch geht landet man erstmal hier https://packagist.org/packages/metamodels/filter_perimetersearch. Dort sieht man dann
Muss man sich dann dort in der Liste noch eine Version suchen, die für Contao 4.4 geeignet ist?
Also Version 4 wird gecheckt? 4.5 nicht mehr? Wenn ja, dann wäre es schön, wenn ihr dies irgendwie hinbekommt, dass auch auf die zweite Ziffer von Contao gecheckt wird. Ich habe jetzt mal den "Testlauf" für
nicht besonders hilfreich. Dort könnte ein Hinweis darauf enthalten sein, dass man die Pakete bei packagist.org auf Kompatibilität prüfen muss. Zumal der Hinweis immer noch erscheint, nachdem man den Button "Änderungen prüfen" geklickt hat. Daraufhin erscheint auch erst der Button "Testlauf". Spätestens jetzt wäre ein Hinweis im Hilfetext von Vorteil um darauf hinzuweisen, das der Testlauf durchgeführt werden sollte um die Kompatibilität sicherzustellen. |
Composer möchte immer die aktuellste Version einer Erweiterung installieren. Bei bugbuster/contao-be_user_online-bundle ist das die 2.x - diese ist aber erst ab Contao 4.5.x kompatibel. Also nicht mit Contao 4.4.x - somit kann die Version 2.x nicht mit Contao 4.4.x installiert werden. In der Paketverwaltung unter Contao 3.5.x wurde das jedoch geprüft und es stand die für die entsprechende Contao kompatible Version automatisch zur Installation bereit. Genau diese Funktion gibt es aktuell beim Manager auch. Denn wenn ich versuche bugbuster/contao-be_user_online-bundle auf Contao 4.4.x zu installieren, dann ist die neuste Version durchgestrichen und zeigt mir schon, dass ich diese Version nicht installieren kann: Das einzigste, was der Manager jetzt nicht macht, ist eine Versionsauswahl anzuzeigen. Ich muss mir eine geeignete Version über Packagist oder Github selbst raussuchen und entsprechend eingeben. Das ist natürlich eine kleine Hürde für alle die, die mit den Versionsstrings nicht so richtig was anfangen können. Schöner wäre es natürlich, wenn ich über das Zahnrad mir eine kompatible Version aussuchen könnte, ohne dass ich den Versionsstring manuell eingeben muss. In meinem Test konnte ich feststellen, dass Composer versucht in der aktuellsten Major-Version von bugbuster/contao-be_user_online-bundle, also der 2.x, eine Version zu finden, die mit Contao 4.4.x kompatibel ist. Aber natürlich findet er im Bereich der Version 2 keine. Eine andere Major prüft er nicht, z.B. die 1.x. Was die Erweiterung metamodels/filter_perimetersearch so ist diese in keiner Version mit Contao 4 kompatibel. Auch das wird im Manager angezeigt:
nur, wenn die aktuellste stabile Version von metamodels/filter_perimetersearch nicht mit der installierten Contao-Version kompatibel ist.
Es wird nur gescheckt, ob die aktuellste Version einer Erweiterung mit der installierten Contao-Version kompatibel ist. Also wenn du 4.5 installiert hast und die aktuellste stabile Version von metamodels/filter_perimetersearch, also die 2.0.2, Contao 4.5 unterstützt, dann kannst du sie auch installieren. |
Dieses durchgestrichende "neuste Version" habe ich aber auch erst beim drittem mal hinsehen erkannt. |
Ok, sieht so aus, als würden wir uns nähern. Wenn ich bei den Paketen nach Davon ist bei mir nur eine nicht mit "neueste Version durchgestrichen" gemarkt und zwar terminal42/contao-easy_themes https://packagist.org/packages/terminal42/contao-easy_themes (evtl. hatte ich die irgendwann schonmal manuell auf
ma3xl3/contao-easy-favicon z.B. ist "neueste Version durchgestrichen" obwohl
https://packagist.org/packages/ma3xl3/contao-easy-favicon#dev-master Warum wird die nun nicht in Version 2.0.1 angeboten? Die anderen habe ich nicht überprüft. |
In der Suche sind alle durchgestrichen und grau, welche du noch nicht installiert hast 😉 |
Eine Doku zum richtigen Umgang bei der Auswahl von Paketen wäre nicht schlecht. Evtl. helfen aber auch schon verbesserte Hilfetexte. |
Was ich auch festgestellt habe: Wenn ich einmal einen festen Versionszweig einstellen musste, z.B. 1.x, dann bleibe ich auf alle Erweigkeit auf dieser Version hängen, auch wenn es inzwischen schon V 2.x gibt. Was dann dazu führt, dass die Installation anderer Erweiterung fehlschlägt, weil Composer die Abhängigkeiten nicht mehr gelöst bekommt, da diese eine Erweiterung ihn ggf. zwingt eine Abhängigkeit zu einer älteren Version zu erhalten, die aber gar nicht nötig wäre. Ich bin hier auch für Lösung, die Kompatibilitäten im Contao-Manager berücksichtigt. Wenn es doch zu jedem Paket eine Beschreibung der Mindestanfordungen gibt, dann könnte der Contao-Manager die doch auch abrufen und auswerten bevor und dann dem Composer die Anweisung erteilt das Paket in einer bestimmten Version zu installieren. Ebenso sollte die Funktion "Pakete aktualisieren" auch schauen, ob es eine neue Major-Version gibt und diese ggf. zur Installation vormerken. |
Der Manager kann nicht entscheiden welche Version installiert werden soll, diese Entscheidung trägt der Nutzer. Eine neue Major-Version ist (per Definition) inkompatibel zum bestehenden, also z.B. nicht kompatibel zur bestehenden Datenbank und benötigt ein manuelles Update. Das kann der Manager niemals übernehmen. |
@aschempp Und wie soll dann der normale Contao Nutzer mitbekommen, dass es jetzt Version 2 einer Erweiterung gibt? Ich rede jetzt nicht vom professionellem Admin, sondern vom ganz normalen Anwender, der z.B. die Vereinshomepage mit Contao betreibt? Auch wenn der Manager eine neue Major-Version nicht automatisch zur Installation freigibt, so sollte er aber zumindest mitteilen, dass es sie gibt. Denn irgendwann kommt eine Erweiterung an den Punkt, wo ein Versionswechsel ansteht. Und dann werden Sicherheitslücken und Fehler auch nur noch in der neuen Version behoben. Oder noch "schlimmer" ist der Effekt bei Versionsnummer <1. Siehe dazu auch: https://community.contao.org/de/showthread.php?72441-CM-Composer-Hinweise&p=485887&viewfull=1#post485887 |
Mehrere Gedanken dazu:
Natürlich wäre es schön wenn der Manager sowas könnte. Aber aktuell haben wir diese Informationen nicht, und ich wüsste nicht woher wir sie bekommen. Auch nicht wie diese dem Benutzer angezeigt werden sollen. Insbesondere so dass er nicht einfach ein Major-Update und damit seine Installation kaputt macht. Ein Auswahl der Paketversion wie bei Contao 3.5 wäre ein logischer Schritt. Aber wie genau dies in den Manager integriert werden soll ist noch nicht klar. |
Eine Möglichkeit ist sich bei Github zu registrieren und entsprechende Erweiterungen zu "watchen". Neuerdings ist es möglich sich auch nur über Releases informieren zu lassen. Alternative wäre ein Dienst wie Libraries.io. |
Ich finde es auch verwirrend, dass die Installation eines Paketes fehlschlägt weil Composer eine „zu neue“ Version automatisch wählt. Siehe auch https://community.contao.org/de/showthread.php?80657
Für Neuinstallationen eines Paketes könnte der Manager standardmäßig die Version Das wäre aus meiner Sicht für die Nutzer die beste Lösung, aber vermutlich technisch nicht so leicht umzusetzen. |
Hört sich nach etwas an, was Composer tun sollte, denn dann wäre das Problem für alle Paket-Installationen gelöst? 😉 |
Denke auch. Auf der cli will ich ja bei |
Ich bin gerade wieder auf diesen Effekt gestoßen. Der CM zeigt mir bei einer Erweiterung an, dass es eine neuere Version 1.7 gibt. Ich habe bei mir ^1.6 eingestellt. OK, wenn es jetzt 1.7, dann passe ich mal meine Version an. Könnte man dem VM beibringen, dass er bei der Anzeige "neue Version verfügbar" berücksichtigt, ob diese Version auch zum installierten Contao passt? |
Das würde nicht wirklich was bringen weil vielleicht passt nicht nur Contao nicht sondern eben etwas in den anderen abhängigen Paketen. Genau das ist die Aufgabe, die Composer übernimmt. Er findet die bestmöglichste Lösung für alle definierten Abhängigkeiten und deren Abhängigkeiten (und deren, und deren...). In Contao 4.13 ohne Extensions sind das aktuell ungefähr 90.000 Regeln, die zu berücksichtigen sind :) Die kann man nicht live berechnen. |
Und was, wenn die 1.7.0 nicht kompatibel mit der installierten Contao-Version ist? Zeigen wir eine tiefer an? Und was wenn die nicht? Und was wenn die nächste nicht? .... |
As already explained, the Contao requirement is not the only requirement. |
Ja, es ist nicht die einzige Abhängigkeit, aber die größte. Und wenn der CM schon anzeigt, dass es eine neue Version einer Erweiterung gibt, dann sollte er zumindest die einfachste Bedingung prüfen, nämlich ob die mindest-Contao-Version installiert ist. |
Die Anzeige basiert auf deiner Eingabe und der verfügbaren Version. Wenn du möchtest dass die 1.7 nicht vorgeschlagen wird (weil du weisst dass sie zu deinen Abhängigkeiten nicht passt), kannst du in der Versionsbedingung z.B. |
Alle meine (RockSolid Themes) Pakete sind nun davon betroffen und lassen sich in Contao 4.9 ohne Versionsangabe nicht mehr installieren 😕 Ich werde mir mal den Lösungsvorschlag aus #325 (comment) ansehen und eventuell bei Composer vorschlagen. |
|
|
Ich denke wir werden dieses Problem mit Contao 5 in Zukunft sehr oft haben. |
Einzige Alternative aus meiner Sicht wäre im Manager die Auswahl einer Version zu erlauben (oder zu erzwingen), dann ist der/die Anwender:in selber dafür verantwortlich. Hätte den Vorteil dass man auch eine bestehende Version "per Auswahl" hochziehen kann. |
Ich glaube dank der jüngsten Optimierungen in Composer selbst, sollte ein |
leider verwenden wir |
Composer 2.5 wurde veröffentlicht, deswegen habe ich mir das nochmal genauer angeschaut. Folgende Feststellungen:
Ich sehe folgende Optionen:
Dann würde mir noch eine weitere Möglichkeit einfallen, die ggf. für uns sogar der Königsweg darstellen könnte, da er am wenigsten Einfluss auf die aktuelle Logik hat:
Das würde das Problem potenziell für die meisten User lösen. |
Ich denke nicht dass wir realistisch von Ich sehe Option 4 als idealer, allerdings ist Output-Parsing nicht besonders schön. Eine weitere Option die mir einfällt:
WDYT @Toflar ? |
Unabhängig von den Varianten 4 und 5 und dem Zeitraum der Umsetzung, finde ich die reine Anzeige der kompatiblen Versionen einer Erweiterung zur bestehen Contao Installation als besonders Hilfreich. (Siehe Paketverwaltung von Nicky). Die Liste der Versionen müsste halt als "voraussichtlich kompatibel" zu der Installation gekennzeichnet werden und es muss auch nicht jedes mögliche Szenario berücksichtigt werden. Ganz nüchtern betrachtet sehe ich dadurch folgende Vorteile:
Ich werde in den nächsten Tag mal einen entsprechenden Entwurf bereitstellen, David hat sich dem Thema bereits angenommen. |
Das ist ja genau das was |
Für mich reichen hier die Composer Fehlermeldungen ... Für meine Kunden aber ganz sicher nicht. Bitte nicht arg böse sein, ob des folgenden Vergleichs. Und viel wichtiger: Ich denke, wenn mann man ein GUI wie den Contao Manager anbietet, damit Contao auch Leute installieren können, die consolen Fehler per se nicht lesen können/wollen, dann darf man sich nicht wundern, wenn eben diese User des GUIs an inkompatiblen Plugins scheitern. Deshalb denke ich, es wäre sehr sinnvoll, am Composer vorbei, einen Vorabcheck im Contao Manager zu integrieren. |
@Metis77 feel free to create a PR ;) |
Klar, wenn ich das könnte ;) |
@Metis77 in diesem ticket geht es aber (denke ich) um etwas anderes, und zwar dass bei der installation einer Erweiterung automatisch die neueste Version die mit dem System kompatibel ist installiert wird (aktuell kann es vorkommen dass Composer versucht eine zu neue version zu installieren). Unabhängig davon fände ich es sehr schlecht für die Usability wenn man inkompatible Erweiterungen gar nicht finden würde, das ist für die User ja deutlich verwirrender wenn es die Erweiterung auf extensions.contao.org gibt aber im Manager nicht. Für dein erwähntes Problem fände ich als Lösung einen Button für „Kompatibilität prüfen“ einen besseren Weg. Aber wie gesagt das gehört nicht in dieses Ticket finde ich. |
ja genau.
Ja, das sehe ich auch so. |
Unter Contao 3 mit dem alten ER gab es doch die Checkbox "Auch nicht kompatible Erweiterungen anzeigen" ... oder so ähnlich |
Composer wie auch der Manager nehmen ohne Versionsangabe einfach die neueste Version und versuchen die zu installieren.
Beispiel: Habe ich ein Contao 4.4 und suche nach bugbuster/contao-be_user_online-bundle wird als neuste Version die 2.0.0 versucht zu installieren, obwohl die erst ab Contao 4.5 freiegegeben ist.
Könnte der Manager das irgendwie abfangen und eine kompatible Version selbst wählen, oder wenigstens drauf Hinweisen, "aktuelleste Version von ... nicht kompatible mit der installieren Contao Version, bitte ein kompatible Versionsangabe eingeben" oder so ähnlich?
Der Manager weiß ja welche Contao Version installiert ist.
The text was updated successfully, but these errors were encountered: