YouCompleteMe

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

YouCompleteMe
Ich versuche grade das YCM-Plugin fuer den Vim unter Arch zum laufen zu bringen und ich verzweifle daran! Hat hier jemand Erfahrung damit?


Bisschen Information wäre beim troubleshooten schon hilfreich.


Also wenn ich :PluginUpdate laufen lasse kriege ich einen Fehler “The ycmd server SHUT DOWN (restart with ‘:YcmRestart…gs ycmd_59323_stderr_d1vh0n4q.log’ to check the logs.”

:YcmRestart liefert dann “The ycmd server SHUT DOWN (restart with ‘:Y…8011_stderr_bmw2ulo3.log’ to check the logs. 0,0-1”

vim --version liefert

VIM - Vi IMproved 8.0 (2016 Sep 12, compiled May 13 2018 19:35:54)
Included patches: 1-1838
Compiled by Arch Linux
Huge version without GUI. Features included (+) or not (-):
+acl +farsi +mouse_sgr -tag_any_white
+arabic +file_in_path -mouse_sysmouse +tcl/dyn
+autocmd +find_in_path +mouse_urxvt +termguicolors
-autoservername +float +mouse_xterm +terminal
-balloon_eval +folding +multi_byte +terminfo
+balloon_eval_term -footer +multi_lang +termresponse
-browse +fork() -mzscheme +textobjects
++builtin_terms +gettext +netbeans_intg +timers
+byte_offset -hangul_input +num64 +title
+channel +iconv +packages -toolbar
+cindent +insert_expand +path_extra +user_commands
-clientserver +job +perl/dyn +vertsplit
-clipboard +jumplist +persistent_undo +virtualedit
+cmdline_compl +keymap +postscript +visual
+cmdline_hist +lambda +printer +visualextra
+cmdline_info +langmap +profile +viminfo
+comments +libcall +python/dyn +vreplace
+conceal +linebreak +python3/dyn +wildignore
+cryptv +lispindent +quickfix +wildmenu
+cscope +listcmds +reltime +windows
+cursorbind +localmap +rightleft +writebackup
+cursorshape +lua/dyn +ruby/dyn -X11
+dialog_con +menu +scrollbind -xfontset
+diff +mksession +signs -xim
+digraphs +modify_fname +smartindent -xpm
-dnd +mouse +startuptime -xsmp
-ebcdic -mouseshape +statusline -xterm_clipboard
+emacs_tags +mouse_dec -sun_workshop -xterm_save
+eval +mouse_gpm +syntax
+ex_extra -mouse_jsbterm +tag_binary
+extra_search +mouse_netterm +tag_old_static

system vimrc file: “/etc/vimrc”
user vimrc file: “$HOME/.vimrc”
2nd user vimrc file: “~/.vim/vimrc”
user exrc file: “$HOME/.exrc”
defaults file: “$VIMRUNTIME/defaults.vim”
fall-back for $VIM: “/usr/share/vim”
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -D_FORTIFY_SOURCE=2 -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc -L. -Wl,-O1,–sort-common,–as-needed,-z,relro,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.26/core_perl/CORE -Wl,-O1,–sort-common,–as-needed,-z,relro,-z,now -L/usr/local/lib -Wl,–as-needed -o vim -lm -ltinfo -lelf -lnsl -lacl -lattr -lgpm -ldl -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.26/core_perl/CORE -Wl,-O1,–sort-common,–as-needed,-z,relro,-z,now -fstack-protector-strong -L/usr/local/lib -L/usr/lib/perl5/5.26/core_perl/CORE -lperl -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc -L/usr/lib -ltclstub8.6 -ldl -lz -lpthread -lm

:YcmDebugInfo liefert “E492: Not an editor command: YcmDebugInfo”

:YcmToggleLogs liefert “E492: Not an editor command: YcmToggleLogs”

Und gefolgt bin ich, wie gesagt unter Arch-Linux, der Anleitung von https://github.com/Valloric/YouCompleteMe

Ich blicke da absolut nicht durch :nuts:


Versuch doch mal das AUR-Paket zu installieren, oder lass dich vom PKGBUILD inspirieren.
https://aur.archlinux.org/packages/vim-youcompleteme-git/


Habe natuerlich auch schon versucht mit yaourt das AUR Paket zu installieren, das bringt mich zu folgendem Problem

==>Continue installing ncurses5-compat-libs ? [Y/n]
==> [v]iew package contents [c]heck package with namcap
==> ---------------------------------------------------
==> y

[sudo] password for michael:
loading packages…
resolving dependencies…
looking for conflicting packages…
:: ncurses5-compat-libs and ncurses-full-git are in conflict. Remove ncurses-full-git? [y/N]

n-curses-full-git laesst sich aber natuerlich einfach entfernen, da viele wichtige Pakete davon abhaengen…

error: failed to prepare transaction (could not satisfy dependencies)
:: alsa-utils: removing ncurses-full-git breaks dependency ‘ncurses’
:: bash: removing ncurses-full-git breaks dependency ‘ncurses’
:: gdb: removing ncurses-full-git breaks dependency ‘ncurses’
:: gptfdisk: removing ncurses-full-git breaks dependency ‘libncursesw.so=6-64’
:: guile: removing ncurses-full-git breaks dependency ‘ncurses’
:: guile2.0: removing ncurses-full-git breaks dependency ‘ncurses’
:: lame: removing ncurses-full-git breaks dependency ‘ncurses’
:: less: removing ncurses-full-git breaks dependency ‘ncurses’
:: libcdio: removing ncurses-full-git breaks dependency ‘ncurses’
:: libedit: removing ncurses-full-git breaks dependency ‘ncurses’
:: libxml2: removing ncurses-full-git breaks dependency ‘ncurses’
:: llvm-libs: removing ncurses-full-git breaks dependency ‘ncurses’
:: nano: removing ncurses-full-git breaks dependency ‘ncurses’
:: pinentry: removing ncurses-full-git breaks dependency ‘ncurses’
:: procps-ng: removing ncurses-full-git breaks dependency ‘ncurses’
:: psmisc: removing ncurses-full-git breaks dependency ‘ncurses’
:: readline: removing ncurses-full-git breaks dependency ‘ncurses’
:: readline: removing ncurses-full-git breaks dependency ‘libncursesw.so=6-64’
:: texinfo: removing ncurses-full-git breaks dependency ‘ncurses’
:: vi: removing ncurses-full-git breaks dependency ‘ncurses’
:: xterm: removing ncurses-full-git breaks dependency ‘ncurses’
==> WARNING: Your packages are saved in /tmp/yaourt-tmp-michael
==> Restart building vim-youcompleteme-git ? [y/N]

Wenn ich versuche ncurses5-compat-libs von Hand zu installieren, heisst es irgendwann “error: target not found: lib32-ncurses”

EDIT: Ich habe ncurses5-compat-libs aus dem Build rausgenommen und es geht tatsaechlich. Das liegt daran das ncurses-full-git bereits vorhanden ist und ich daher ncurses5-compat-libs gar nicht brauche oder?

Ich verstehe aber immer noch nicht warum meine Installation von Hand fehlgeschlagen ist, es kann ja nicht an einem fehlenden ncurses Paket gelegen haben da ncurses-full-git ja vorhanden ist. Hat jemand von euch eine Idee???

Danke auf jeden Fall fuer den Hinweis, ohne dich haette ich es jetzt nicht nochmal versucht das Paket direkt ueber AUR zu installieren…


Vielleicht hatte der Ersteller des AUR-Pakets das selbe Problem wie du, aber dann eine Lösung gefunden. Wenn du dir das PKGBUILD ansiehst, siehst du ja, was dort für die Installation getan wird. Ich denke auch dass ncurses nichts damit zu tun hat. Es ist einfach ein (unnötig?) komplexer Installationsprozess.

Das Paket ncurses-full-git enthält die Information, dass es nicht parallel zu ncurses5-compat-libs installiert werden kann, aber anscheinend nicht die Information, dass es die Inhalte des letzteren zur Verfügung stellt. Das ist wohl eine Nachlässigkeit.

Was ich mich noch frage ist, wieso du überhaupt ncurses-full-git verwendest. Aber dafür hast du ja sicher einen anderen Grund.


Danke Ford, das wuerde natuerlich Sinn machen! Ehm ja also zu meinem “Grund”…ich muss zugeben…ich habe einen Installer verwendet schaem, es musste schnell gehen, ich setze das System in den Ferien natuerlich noch mal neu auf, dann von Hand…

Naja also das ncurses-full-git war nach der Installation eben da, worueber entscheide ich denn welches ncurses verwendet wird oder andersherum … was sind die Alternativen?


Also generell spricht ja nichts dagegen, sich die Installation leichter zu machen. Ich habe mit Antergos für ein Standard-Desktopsystem gute Erfahrungen gemacht, weil es ein sauberes Arch Linux abliefert und man einfach weniger Arbeit hat. Wenn ich Arch Linux manuell installiere, schreibe ich ja im Prinzip auch nur Kommandos aus dem Arch Wiki ab mit der ein oder anderen kleinen Abweichung.

Pakete, die mit ‘-git’/‘-svn’ enden sind Entwicklerversionen, welche den allerneuesten Code des Projekts enthalten statt der letzten Veröffentlichung (Release). In den meisten Projekten werden halbwegs stabile Versionen des Codes veröffentlicht, auf die Stabilität des aktuellen Git-Repositories dagegen gibt es keine Gewähr. Ein solches Paket macht also nur in speziellen Szenarios Sinn, z.B. als Abhängigkeit von anderer Software, die ein neueres Feature benötigt (die ist dann zumeist selbst ‘*-git’), oder wenn das Projekt selbst schlicht releasefaul ist, oder wenn man einen ganz frischen Bugfix benötigt. Als Beispiel, ich benutze ‘youtube-dl-git’, weil dort immer wieder Bugfixes zur Behebung von neuen Inkompatibilitäten mit einigen Websites einfließen bzw. meist frisch eingeflossen sind, wenn ich merke, dass mein youtube-dl gerade irgendwo nicht mehr funktioniert.

Ein großer Nachteil von so einem Paket, und auch generell allen AUR-Paketen, ist dass man diese (auch wenn man mit der aktuellen Version zufrieden ist oder sich die Version nicht geändert hat) oft nach einem Systemupdate nachziehen muss, weil sie eben lokal gegen andere Bibliotheken einer bestimmten Version gebaut wurden. Wenn diese Bibliotheken erneuert werden, kann es sein, dass erneutes Bauen nötig wird. Natürlich kann man auch alle AUR-Pakete automatisch aktualisieren lassen, aber das nervt auch (Compilierzeit, User-Interaktion).

Auf einem ‘normalen’ Arch-System ist schlicht das ‘ncurses’ Paket installiert und bei Bedarf noch ‘lib32-ncurses’. wenn du nun dein ncurses-full-git mit diesen beiden Paketen ersetzt, riskierst du damit aber, dass eine andere Software nicht mehr funktioniert, für welche das Paket installiert wurde (bzw. pacman sollte dir diese Abhängigkeit mitteilen).


Okay vielen Dank für die ausführlich Erklärung zu den AUR-Paketen, wieder etwas dazu gelernt :slight_smile:

Antergos kenne ich auch, war davon aber nicht sooo begeistert, Manjaro basiert auch auf Arch und ist meiner Meinung nach die bessere Wahl. Mittlerweile gibts aber auch einen grafischen Installer für das “Originale” Arch, den Zen Installer. Aber auch da wird eben viel vorkonfiguriert, man gibt also Kontrolle ab und Arch ist eben nicht ganz so modular wie es eigentlich wäre, ganz klar ein Nachteil. So das war jetzt aber Offtopic ^^