maribu
Hallo zusammen!
Wenn ich im Terminal die TAB-Taste drücke (beispielsweise mit vorhergehendem "yaourt -S per") wird der Befehl nicht mehr ergänzt (z. B. zu zu "yaourt -S perl"), sondern ich bekomme folgende Fehlermeldung:
"_arch_compgen: Kommando nicht gefunden."
An einem anderen Computer mit Arch läuft bash-completion einwandfrei und auch der Befehl _arch_compgen existiert prinzipiell, wird aber anscheinend nicht durch eine gleichnamige Anwendung bereit gestellt. Mit locate "_arch_compgen" bekomme ich trotz aktueller Datenbank keiner Treffer.
Hat jemand eine Idee auf welche Weise der Befehl bereitgestellt wird und was bei mir schief laufen könnte?
Danke für eure Mühe,
Marian
maribu
Hallo zusammen!
Das gleiche Problem habe ich jetzt auch auf einem zweiten Rechner. Ich erinnere mich daran, dass ich heute ein Software-Update durchgeführt habe und unter anderem yaourt aktualisiert habe. Ebenfalls habe ich festgestellt, dass bash-complition im Allgemeinen funktioniert, anscheinend funktioniert es nur mit yaourt nicht mehr.
Ich probiere jetzt mal ein downgrade von yaourt (sofern ich ein alte PKGBUILD finde oder es entsprechend anpassen kann).
Gruß,
Marian
maribu
Ok, das löst das Problem nicht. Ebenfalls upgedatet wurde pacman. Morgen gehe ich dem mal nach.
Mal aus reinem Interesse? Bin ich der einzige, der das Problem hat? Vielleicht habe ich ja auch nur zwei mal an zwei Rechnern den selben Fehler gemacht :-(
Gruß,
Marian
maribu
Hallo zusammen!
Also ein downgrade von pacman hat bei mir das Problem gelöst. Beim durchschauen der Pakete der Version 4.0.3 und 4.0.2 habe ich festgestellt, dass die Datei
/etc/bash_completion.d/pacman
vorschoben wurde nach:
/usr/share/bash-completion/completions/pacman
Ohne die Prüfsummen der beiden Dateien verglichen zu haben behaupte ich mal, dass dort nichts verändert wurde. Der Unterschied scheint wohl der zu sein, dass Funktionen unter /etc/bash_completion.d/ frei zur Verfügung stehen (ich kann die Funktionen von der Shell aus aufrufen), während das unter /usr/share/.... nicht mehr der Fall ist.
Mir kam die Idee, dass Funktionen in /usr/share/bash-completion/complitions/ auf andere Funktionen die ebenfalls dort definiert sind zugreifen können. Wenn das so wäre, hätte das verschieben von /etc/bash_completion.d/yaourt in der /usr/.... Ordner das Problem gelöst. Leider hat sich das als falsch herausgestellt.
Da die Funktionen wie "_arch_compgen" die in den Vervollständigungsregeln von pacman definiert sind keine Funktionalität haben, wenn man sie direkt in der Konsole eintippt, macht es durchaus Sinn diese Funktionen nicht öffentlich zugänglich zu machen. Dies wird wahrscheinlich der Grund sein, warum man die Regeln von /etc/... nach /usr/... verschoben hat. Jetzt bleibt natürlich die Frage, wie man die Vervollständigung von yaourt wieder herstellt. Mir fallen dazu spontan drei Möglichkeiten ein:
a) Die Datei /usr/..../pacman nach /etc/bash_completion.d/pacman zu linken und so wieder für yaourt verfügbar zu machen. (Was ich allerdings für eine blöde Idee halte)
b) Die für yaourt relevanten Funktionen aus pacman in yaourt reinkopieren (Was ich ebenfalls nicht für ideal halte)
c) In den Vervollständigungsregeln von yaourt mit irgendwelchem Bash-Kung-Fu erklären, dass die Funktionen wie _arch_compgen in den pacman-Regeln zu finden sind. (Was meine Lieblingsidee ist)
Also, wer hat starkes Bash-Kung-Fu und erklärt mir, wie ich c) implementiere bevor ich selbst bei Google eine Lösung gefunden habe?
Gruß,
Marian
maribu
Zack! Ihr ward zu langsam ;-)
Also durch Einfügen des Befehls
source /usr/share/bash-completion/completions/pacman
in die Datei /etc/bash_completion.d/yaourt wird das Problem gelöst.
Ich teile meine Lösung mal dem Betreuer von yaourt mit.
Gruß,
Marian