Debians Diskussion über »which«

Which way?

Das Shell-Script which ist ein nicht standardisiertes, externes Werkzeug, das eine ausführbare Datei im gegebenen PATH findet. Es gibt verschiedene Varianten von which in Linux und BSD, die sich bei den verfügbaren Optionen unterscheiden. Ich verwende die bei Debian im Paket debianutils enthaltene Version oft, um zu sehen, ob ein Paket auf einer Installation vorhanden ist. Kurz und schmerzlos sah das bis vor kurzem so aus:

$ which apt
/usr/bin/apt

Wer which in den letzten Monaten in Debian Sid genutzt hat, bekam aber zusätzlich eine Warnung zu sehen:

$ which apt
/usr/bin/which: this version of `which' is deprecated; use `command -v' in scripts instead.
/usr/bin/apt

Wie es dazu kam und was daraus wurde, zeigt exemplarisch, wie Debian sich selbst reguliert.

Entzündet hat sich die Diskussion im letzten Jahr an der Option -s, die bei FreeBSD vorhanden ist, bei der Debian-Version jedoch nicht. Entwickler Erik Gustafsson hielt dieses Flag, das die Druckausgabe unterdrückt und den Exit-Status abhängig von der Existenz des abgefragten Programms setzt, für so nützlich, dass er gleich einen Patch mitlieferte.

Nicht POSIX-konform

Damit setzte eine Diskussion über den Wert des nicht POSIX-konformen which und ob es in Debian erweitert werden sollte. Im Verlauf der Diskussion wurde Clint Adams, Co-Maintainer der debianutils auf die Diskussion aufmerksam und befand, eigentlich sollte which aus dem essenziellen Paket debianutils entfernt werden, da mit command -v eine POSIX-konforme Alternative bereits vorhanden sei. Ich muss gestehen, ich habe von command -v nie zuvor gehört, und ich denke, ich bin damit nicht alleine.

Vor einigen Monaten fiel einem Entwickler die oben erwähnte Warnung auf, die mit debianutils 5.0.1 eingeführt worden war und which als deprecated (überholt) bezeichnete. Dies führte zu zahlreichen Anfragen nach einer Rückgängigmachung der Änderung. Einer der Gründe war, dass which als Begriff wesentlich griffiger sei als die Alternativen. Zudem sei es im Muskelgedächtnis vieler Anwender vorhanden. zudem stellte sich heraus, dass eine Reihe von Build-Skripten für Debian-Pakete ebenfalls which verwenden.

Mehr Schaden als Nutzen

Adams Position in der Sache wurde schwächer, obwohl sein Argument, dass es zahlreiche Varianten von which gibt und es somit wenig Sinn ergebe, eine bestimmte Version in einem Paket auszuliefern, das als essenziell gekennzeichnet ist und damit auf jedem Debian-System installiert sein muss, eigentlich stichhaltig ist. Die meisten Entwickler waren nicht gegen die Entfernung von which aus den debianutils, es bestand aber keine Einigkeit, wie das geschehen sollte, ohne größere Disruptionen zu erzeugen.

Das Technische Komitee eingeschaltet

Da zumindest ein Paket (tensorflow) beim Bau an der eingefügten Warnung scheiterte und keine Einigung über das Vorgehen in Sicht war, schaltete Adrian Bunk das Technische Komitee ein, die Sache zu entscheiden. Seine Hauptforderungen waren, dass which weiterhin von einem essenziellen Paket bereitgestellt werden solle und die Warnung zu entfernen sei.

This sort of whichcraft is how Debian has managed to keep hundreds of independent-minded developers working toward a common goal for the better part of three decades.

Jonathan Corbet, Editor at LWN

Mitte Oktober gab das Komitee nun seine Entscheidung bekannt. Einigkeit bestand darin, dass debianutils weiterhin which bereitstellen muss, zumindest so lange, bis es in ein anderes essenzielles Paket überführt wurde. Eine Mehrheit der Komitee-Mitglieder beschloss zudem, die Warnung zu entfernen. Viele Leser mögen dies für verschwendete Zeit über Nichtigkeiten halten, aber dieses Vorgehen ist ein wichtiger Teil der Art und Weise wie Debian sich selbst reguliert. Paket-Maintainer haben bei Debian viel Macht über die von ihnen betreuten Pakete und manchmal schießt jemand über das Ziel hinaus. Dann gibt es Regularien, das wieder einzufangen, mit denen Debian fast 30 Jahre lang gut gefahren ist.

Als Quelle für diesen Artikel diente der Artikel Debian’s which hunt auf LWN, der derzeit noch hinter der Paywall steht.

5 12 votes
Article Rating

Verwandte Themen

5 12 votes
Article Rating
Abonnieren
Benachrichtige mich bei
23 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments