Siduction Forum
Siduction Forum => Upgrade Warnings => Topic started by: michaaa62 on 2012/01/08, 20:06:34
-
/home/micha# apt-cache policy bash-completion
bash-completion:
Installiert: 1:1.3-1
Kandidat: 1:1.99-1
Versionstabelle:
1:1.99-1 0
500 http://debian.tu-bs.de/debian/ sid/main amd64 Packages
1:1.90-1 0
1 http://debian.tu-bs.de/debian/ experimental/main amd64 Packages
*** 1:1.3-1 0
100 /var/lib/dpkg/status
Die Versionen 1.99-1 and 1.90-1 von bash-completion sind defekt.
Diese zwei Versionen entfernen alle Dateien im Ordner /etc/bash_completion.d ohne den Ordner mit neuem Inhalt zu befüllen!
Auf keinen Fall upgraden auf bash-completion 1.99-1!!!
-
Warum eigentlich nicht? Die Completion funktioniert, so weit ich das beurteilen kann, einwandfrei. Eine paar kleine Anmerkung dazu.
* rm /etc/bash_completion; ln -s /usr/share/bash-completion/bash_completion tat bei mir nicht
* ich hab die completions in /usr/share/bash-completion/completions in /etc/bash_completion.d eingetragen. File für File ;) Diese Arbeit hat mir dankenswerter Weise das folgende Script abgenommen:
for i in $(ls /usr/share/bash-completion/completions/*)
do
ln -s $i
done
als script in /etc/bash_completions.d anlegen, ausführbahr machen und laufen lassen. Freuen.
-
Na klar kannst du das so machen...
Paketmanagement mit apt-get funktioniert aber anders...
-
Und: Was soll mir das jetzt sagen? Wenn das eine perfekte Welt ohne Fehler wäre, dann würde die Distribution, auf die wir aufbauen, nicht unstable heissen und auch keine Fehler enthalten.
Das ist ein gemeldeter Bug und man kann die Completions so verlinken, genau dazu ist dieses Verzeichnis gedacht. Das steht sogar irgendwo in einer Note dazu. Ich zitiere mal devil zu dem Thema, der hat das entdeckt:
[08.01.2012 22:00] <devil> If you want to activate a completion, just symlink it into
[08.01.2012 22:00] <devil> /etc/bash_completion.d/
Eine zweite Frage war, ob die Buben noch alle Sinne beisammen haben. Und das Script trägt halt ganz selektiv erst mal alles ein. Ich kann da erst mal nichts falsches drin sehen, vor allem nichts, was mit dem Paketmanagement zu tun haben könnte.
Dass mir dieser recht minimalistische Ansatz einer komplett leeren /etc/bash_completion.d erst mal nicht sonderlich gut gefällt, ist eine ganz andere Sache.
-
Eine zweite Lösungsmöglichkeit, die der Paketbetreuer bei Debian angeregt hat ist die Veränderung der Einstellungen in der Datei .bashrc, so dass diese auf die neue /usr/share/bash-completion/bash_completion verweist.
Ok, I'll use a symlink. I totally forgot to drop /etc/bash_completion. Sorry
for the noise.
Bash maintainers: the new bash-completion location is
at /usr/share/bash-completion/bash_completion . Please update the files of your
package (bash.bashrc, but there may be others) to reflect the new location. TIA!
Damit schiebt er den schwarzen Peter dem Betreuer von bash zu. Mal sehen wie dieser reagieren wird.
-
Ist halt alles irgendwo eine politische Entscheidung. Im Endeffekt ist jede Lösung, die mehr oder weniger sauber zum Ziel führt, richtig. Ich bin jetzt mal ein wenig schwarz:
GNU nano 2.2.6 Datei: debian/NEWS
bash-completion (1:1.3-2) experimental; urgency=low
From this version, bash-completion uses triggers to decide which completions
to load.
This means that, when you install a package, a trigger will be activated,
which will symlink the relevant completion to /var/lib/bash-completion/.
To help this, completions have also been moved out of /etc/: they're now
under /usr/share/bash-completion/; there you can find other related helpers
and files.
If you want to activate a completion, just symlink it into
/etc/bash_completion.d/.
-- David Paleino <dapal> Wed, 06 Apr 2011 21:47:50 +0200
Im Endeffekt bedeutet das in meinen Augen nichts anderes, als dass die Trigger in den Paketen das eintragen sollten. Wenn der Bestand nicht übernommen wird, ist das erst mal schlecht. Mein kleines schmutziges Script hat jetzt erst mal die Links so gesetzt, wie da beschrieben.
Rein sachlich sehe ich da nichts falsches dran. Der andere Aspekt ist: Will ich für alles und jedes die Completion an haben oder nicht. Da gibt es dann halt 2 Ansätze: Anfangen von komplett leer oder anfangen von komplett voll und dann selektieren. Du kannst mich hauen, aber an der Stelle kenne ich keine befriedigende Antwort. Ich für mich persönlich bevorzuge den Ansatz "alles rein, eventuell selektiv löschen". Mal schauen, wie es entschieden und gefixt wird. Ich find das irgendwie spannend.
-
Recht hast du!
Aber mal ehrlich, nach Teamwork sieht das bei Debian nicht aus: Betreuer A ändert etwas mit Auswirkungen auf andere Pakete und verabschiedet sich nach Upload in den Feierabend ohne Bescheid zu sagen. Am nächsten Vormittag im Gang darauf angesprochen, dass es Probleme gebe, wünscht er Betreuer B viel Glück dabei die Änderungen in sein Paket einzupflegen.
Außen vor bleiben die Nutzer, die erst Nachfragen müssen, was los ist. Denn bei sämtlichen installierten, und noch zu installierenden, Systemen muss eine Änderung, entweder für jeden Benutzer, root und die Profiles in /etc oder als Symlink, eingepflegt werden.
-
Und dieser Zustand ist die Realität, nicht etwa von Monthy Pythons erdacht.
In dem Moment liebe ich arch, da ist der Personenkreis wesentlich kleiner und die Entscheidugen sind konsistenter. Im Endeffekt brauchen wir uns da auch nicht den großen Schädel drum zu machen. Wenn uns was absolut gegen den Strich geht, dann kann man es auf unserer Ebene sehr einfach fixen, wenn wirklich Not am Mann ist.
-
Mit heutigem D-U wird bash-completion 1.99-2 installiert, damit wird /etc/bash_completion auf -> /usr/share/bash-completion/bash_completion gelinkt.
-
Und jetzt wirds witzig. Die Verlinkung in /etc/ ist natürlich wichtig, weil damit die User-Scripte nicht geändert werden müssen, die da im Standard:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
lauten.
Der 2. Punkt ist wesentlich witziger. Durch die Auslagerung der bash_completion.d nach /usr/share/bash-completion/bash_completions müssen imho auch die verlinkungen in /etc/bash_completions.d hergestellt werden. Ich hab das jetzt noch nicht gesondert geprüft, würde aber mal behaupten, dass das so ist. Dann würde es heissen: Willkommen in der wunderbaren Welt der Schwerkraft. :twisted:
-
.... Durch die Auslagerung der bash_completion.d nach /usr/share/bash-completion/bash_completions müssen imho auch die verlinkungen in /etc/bash_completions.d hergestellt werden....
Wenn ich richtig verstehe was Du meinst, wird das miterledigt. Beim D-U wird ein ganzer Schwung Daten in /etc/bash_completions.d gelöscht (bei mir bleiben 13 Einträge stehen). Gleichzeitig wird im Unterordner /usr/share/bash-completion/completions/ ein neuer Satz angelegt, siehe
(http://tempim.de/picture/thumb/24472/bddolcompl.png) (http://tempim.de/picture/24472/bddolcompl.png)
Die Theorie sagt, dass damit alles funktionieren müsste (die Praxis zeigt derzeit noch anderes, ohne editieren der .bashrc keine komplette completion).
-
Ja, schon, ich glaube aber bei aller Liebe nicht, dass das von den debianern so gewünscht ist. In den von mir eingestellten news ist der meines Erachtens richtige Weg aufgezeigt: Die einzelnen completions liegen irgendwo rum und können selektiv über /etc/bash_completion.d gesteuert werden.
Der jetzt wieder gesetzte Link ist imho unnütz und dient nur zur Reduzierung des Supportaufwands. Die Steuerung über /etc/bash_completion.d finde ich hingegen nicht als sinnlos. Das würde ich als Konfiguration an der einzig richtigen Stelle bezeichnen wollen. Vielleicht bin ich aber auch nur zu altmodisch und verbohrt. ;)
-
Ist jetzt schon das letzte Wort von den Paketbetreuern gesprochen, oder darf man "wild" rumfrickeln? Die Frage ist ja nicht welche Vorgehensweise funktioniert - das tun ja beide (Verlinkung und Anpassung der .bashrc). Vielmehr fragt man sich, was denn jetzt die klügere Wahl ist bzgl. zukünftigen Administrieraufwand.
Wie sieht es eigentlich mit der automatischen Generierung der .bashrc aus?
Wird das noch angepasst (sodass wie früher alle (?) completions enthalten sind?) und wenn ja wie? Fragen über Fragen^^
-
tja, ich mach das so:
- die bash_completion habe ich auf hold gesetzt, dank der warnung hier noch rechtzeitig.
- dann habe ich hier die frickellösungen gelesen und erstmal links liegen gelassen, funktioniert ja noch alles dank hold.
- jetzt warte ich mal ob ein neues bash paket im d-u auftaucht
- dann schaun mer ma ob ich das changlog lese oder anderen den vortritt lasse oder oder oder
- dann hebe ich ggf. den hold auf
-
also ich hatte trotz updates keinen ärger. Als die warnung hier auftauchte, griff ich auf agaidas weg zurück und hatte dann ein paar komische meldungen in der konsole .. nach dem neuerlichen DU war alles wieder ok.
-
Wenn du schon bash-completion per DU aktualisiert hast, dann ist es an dir zu wissen, wie viele User du mit Veränderungen versorgen musst. Hast du wie ich ein Single-User-System, dann ist das schnell in ~/.bashrc und /root/.bashrc erledigt: Einfach das Ende der genannten Dateien wie folgt ändern
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /usr/share/bash-completion/bash_completion ] && ! shopt -oq posix; then
. /usr/share/bash-completion/bash_completion
fi
-
Vermutlich werden noch die bash scripte upgedated. Zumindest sagte das der Maintainer von bash_completion beim letzten update.
Ansonsten hat towo die einfachste Vorgehensweise hier gepostet:
http://forum.siduction.org/index.php?topic=1746&start=15
greetz
devil
-
kann dann der alte ordner gelöscht werden?