GVIM aus Quellen kompilieren?


12

Vor kurzem habe ich so installiert vim:

hg clone https://vim.googlecode.com/hg/ vim
cd vim
sudo ./configure --enable-rubyinterp=yes --enable-pythoninterp=yes --enable-gui=gtk2 --prefix=/opt/vim
make 
make install
make install clean

Die Binärdateien meines VIM befinden sich jetzt unter /opt/vim/bin. Hier ist ls -lavon diesem Verzeichnis:

$ ls -la /opt/vim/bin
total 1500
drwxr-xr-x 2 root root    4096 2011-05-25 12:46 .
drwxr-xr-x 4 root root    4096 2011-05-25 12:46 ..
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 ex -> vim
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 rview -> vim
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 rvim -> vim
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 view -> vim
-rwxr-xr-x 1 root root 1504188 2011-05-25 12:46 vim
lrwxrwxrwx 1 root root       3 2011-05-25 12:46 vimdiff -> vim
-rwxr-xr-x 1 root root    2084 2011-05-25 12:46 vimtutor
-rwxr-xr-x 1 root root   13900 2011-05-25 12:46 xxd

Wo ist mein vim.gtk? Ich habe --enable-gui=gtk2in configure angegeben. Sollte das Installationsprogramm nicht sagen, dass ich eine GUI-Version sowie eine Konsolenanwendung möchte?

Ich habe die gtkVersion richtig angegeben:

$ dpkg -l libgtk[0-9]* | grep ^i
ii  libgtk2-perl                          1:1.221-4                                  Perl interface to the 2.x series of the Gimp Toolkit library
ii  libgtk2.0-0                           2.18.3-1ubuntu2.2                          The GTK+ graphical user interface library
ii  libgtk2.0-bin                         2.18.3-1ubuntu2.2                          The programs for the GTK+ graphical user interface library
ii  libgtk2.0-common                      2.18.3-1ubuntu2.2                          Common files for the GTK+ graphical user interface library

UPDATE : Es ist auf src / INSTALL geschrieben

 88 Unix: COMPILING WITH/WITHOUT GUI
 89
 90 NOTE: This is incomplete, look in Makefile for more info.
 91
 92 These configure arguments can be used to select which GUI to use:
 93 --enable-gui=gtk      or: gtk2, motif, athena or auto
 94 --disable-gtk-check
 95 --disable-motif-check
 96 --disable-athena-check
 97
 98 --enable-gui defaults to "auto", so it will automatically look for a GUI (in
 99 the order of GTK, Motif, then Athena).  If one is found, then is uses it and
100 does not proceed to check any of the remaining ones.  Otherwise, it moves on
101 to the next one.

Also habe ich versucht, nicht anzugeben, in der --enable-guiHoffnung , dass es findet, welche GUI-Engine / welches Toolkit alleine verwendet werden soll ... Immer noch das gleiche Ergebnis :(

UPDATE : Außerdem:

/opt/vim/bin$ ./vim -g
E25: GUI cannot be used: Not enabled at compile time

UPDATE :

Brauche ich das alles:

$ sudo aptitude search gtk | grep dev
p   gnunet-gtk-dev                  - secure, trust-based peer-to-peer framework
v   gtkgl-dev                       -                                           
p   gtkparasite                     - GTK+ debugging and development tool       
p   libaiksaurusgtk-1.2-dev         - graphical interface to the Aiksaurus toolk
v   libaiksaurusgtk-dev             -                                           
p   libcanberra-gtk-dev             - a simple abstract interface for playing ev
p   libchamplain-gtk-0.4-dev        - A Gtk+ widget to display maps (development
p   libclutter-gtk-0.10-dev         - Open GL based interactive canvas library G
p   libdbusmenu-gtk-dev             - Menus over DBus shared library for GTK    
p   libempathy-gtk-dev              - High-level library and user-interface for 
v   libequeue-gtk2-ocaml-dev        -                                           
p   libexif-gtk-dev                 - Library providing GTK+ widgets to display/
p   libgalago-gtk-dev               - libraries and header files for developing 
p   libgdu-gtk-dev                  - GTK+ standard dialog library for libgdu - 
p   libggadget-gtk-1.0-dev          - Google Gadgets GTK+ development files     
p   libggz-gtk-dev                  - GGZ Gaming Zone: core client embedding lib
p   libghc6-gtk-dev                 - A GUI library for Haskell (Gtk2Hs) -- GTK+
p   libghc6-gtkglext-dev            - A GUI library for Haskell (Gtk2Hs) -- gtkg
p   libghc6-gtksourceview2-dev      - A GUI library for Haskell (Gtk2Hs) -- GtkS
p   libghc6-soegtk-dev              - A GUI library for Haskell (Gtk2Hs) -- soeg
p   libglrr-gtk-dev                 - Development library of Grift (gtk)        
p   libgpod-nogtk-dev               - development files for libgpod (version wit
p   libgtk-directfb-2.0-dev         - Development files for the GTK+ library - D
p   libgtk-vnc-1.0-dev              - A VNC viewer widget for GTK+ (development
i   libgtk2.0-dev                   - Development files for the GTK+ library
p   libgtkada2-dev                  - Development files for libgtkada2
p   libgtkdatabox-0.9.0-1-dev       - A Gtk+ library to display large amounts of
v   libgtkdatabox-dev               -
p   libgtkextra-x11-2.0-dev         - A useful set of widgets for GTK+ (developm
p   libgtkgl2.0-dev                 - OpenGL area for GTK (development files)
p   libgtkglext1-dev                - OpenGL Extension to GTK+ (development file
p   libgtkglextmm-x11-1.2-dev       - C++ bindings for GtkGLExt (Development fil
p   libgtkhex0-dev                  - GNOME Hex editor for files (development he
p   libgtkhtml-editor-dev           - HTML rendering/editing library - editor wi
p   libgtkhtml2-dev                 - HTML rendering/editing library - developme
p   libgtkhtml3.14-dev              - HTML rendering/editing library - developme
p   libgtkhtml3.8-dev               - HTML rendering/editing library - developme
p   libgtkimageview-dev             - image viewer widget for GTK+ (development
p   libgtkmathview-dev              - rendering engine for MathML documents
p   libgtkmm-2.4-dev                - C++ wrappers for GTK+ 2.4 (development fil
p   libgtkmm-utils-dev              - utility functions, classes and widgets wri
p   libgtksourceview-dev            - development files for the GTK+ syntax high
p   libgtksourceview2.0-dev         - development files for the GTK+ syntax high
p   libgtksourceviewmm-1.0-dev      - C++ binding of GtkSourceView - development
p   libgtksourceviewmm-2.0-dev      - C++ binding of GtkSourceView - development
p   libgtkspell-dev                 - Development files for GtkSpell
p   libindicate-gtk-dev             - GNOME panel indicator applet - shared libr
p   libjana-gtk-dev                 - A set of GTK+ widgets to visualise libjana
p   liblablgtk2-gl-ocaml-dev        - OCaml bindings to GtkGL
p   liblablgtk2-gnome-ocaml-dev     - OCaml bindings to GNOME
p   liblablgtk2-ocaml-dev           - OCaml bindings to Gtk+ version 2
p   liblablgtkmathview-ocaml-dev    - OCaml bindings for libgtkmathview, a GTK w
p   liblablgtksourceview-ocaml-dev  - OCaml bindings for libgtksourceview, a sou
v   libnotify-dev-gtk2.10           -
p   libocamlnet-gtk2-ocaml-dev      - OCaml application-level Internet libraries
p   libpolkit-gtk-1-dev             - PolicyKit GTK+ API - development files
v   libsylpheed-claws-gtk2-dev      -
p   libtinymailui-gtk-dev           - Framework for mobile applications with e-m
p   libtinymailui-gtkhtml-dev       - Framework for mobile applications with e-m
p   libtracker-gtk-dev              - GTK+ widgets for apps that use tracker - d
v   libunicapgtk-dev                -
p   libunicapgtk2-dev               - graphical widgets for unicap - development
p   libwxgtk2.6-dev                 - wxWidgets Cross-platform C++ GUI toolkit (
p   libwxgtk2.8-dev                 - wxWidgets Cross-platform C++ GUI toolkit (
p   libzbargtk-dev                  - scanning and decoding bar codes (GTK+ bind
p   python-galago-gtk-dev           - Galago presence library (Python interface)
p   python-gtk2-dev                 - GTK+ bindings: devel files
p   telepathy-devel-gtk             - Telepathy Development packages for GTK

Sieht aus wie die meisten dieser Pakete, die ich nicht brauche. ZB Frameworks für mobile Apps, ... HTML-Renderer usw. Das, was ich installiert habe, ist libgtk2.0-dev... Trotzdem kann ich nicht kompilieren gVIM... Agrhhhhh


Warum machst du "sudo ./configure [...]"? Das Konfigurationsskript sollte nicht als root ausgeführt werden müssen. Ich kann verstehen, dass "sudo make isntall" ausgeführt wird, obwohl Sie nicht "make install" und dann "make install clean" ausführen müssen, da dies Vim zweimal installieren würde - machen Sie einfach "make install; make clean".
Heptite

Sie sollten keine zufälligen Entwicklungsdateien installieren müssen. Wenn das Konfigurationsskript die benötigten Bibliotheken nicht finden kann, wird die Ausgabe eines Makefiles abgelehnt. . Scheint, als ob Ihr Problem bei sich configureselbst liegt. Ich würde überprüfen config.logund sehen, wie es mit der --enable-guiOption usw.
umgeht

Antworten:


7

Ich hatte ein ähnliches Problem bei der Installation von gvim 7.3 auf Centos 6.2 (x86_64).

Einige erforderliche Entwicklungspakete fehlten. So installieren Sie sie:

yum groupinstall "Desktop Platform Development"

[So zeigen Sie alle verfügbaren Gruppen an: yum grouplist]

Dann hat das Bauen aus der Quelle einfach funktioniert

wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
bunzip2 vim-7.3.tar.bz2
tar xf vim-7.3.tar
cd vim73

./configure --prefix=/home/me/vim73
make
make install

So entdecken Sie, welche Dateien fehlten:

./configure | less

und die Suche nach 'gui' zeigte, dass X11-bezogene Header fehlten.


4

In Ubuntu kompiliere ich vim folgendermaßen:

sudo apt-get build-dep vim
sudo apt-get build-dep libx11-dev libxtst-dev

make distclean

./configure --with-compiledby="David Gamba <davidgamba@gambaeng.com>" \
--with-features=huge \
--enable-gui=auto \
--with-x \
--enable-rubyinterp \
--with-ruby-command=/usr/bin/ruby \
--enable-perlinterp \
--enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config \
--enable-fontset \
--enable-cscope \
--enable-gtk2-check \
--enable-gnome-check

make

cd srcÜberprüfen Sie an dieser Stelle, ob X11 und die Zwischenablage korrekt unterstützt werden : ./vim --version. Dann:

sudo make install

Für Fedora (über den KDE-Desktop) habe ich folgende Pakete installiert:

yum install gcc libX11-devel libXtst-devel ncurses-devel perl-ExtUtils-Embed ruby ruby-devel python-devel gtk2-devel libXt-devel

Und habe meinen Konfigurationsbefehl wie folgt geändert:

./configure --with-compiledby="David Gamba <davidgamba@gambaeng.com>" \
--with-features=huge \
--enable-gui=auto \
--with-x \
--enable-rubyinterp \
--with-ruby-command=/usr/bin/ruby \
--enable-perlinterp \
--enable-pythoninterp --with-python-config-dir=/usr/lib64/python2.7/config \
--enable-fontset \
--enable-cscope \
--enable-gtk2-check \
--enable-gnome-check \
--enable-fail-if-missing

Danach bekomme ich folgendes:

gvim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May  4 2014 19:43:27)
Included patches: 1-274
Compiled by David Gamba <davidgamba ...>

BEARBEITEN: Ich habe vergessen zu erwähnen, dass ich für Fedora einen Fehler mit dem Speicherort des xsubppPerl-Skripts erhalten habe, sodass ich das Makefile dank eines Online-Fehlerberichts geändert habe.

--- a/src/Makefile      Fri May 02 15:46:14 2014 +0200
+++ b/src/Makefile      Sun May 04 19:56:20 2014 -0600
@@ -2465,7 +2465,7 @@

 auto/if_perl.c: if_perl.xs
        $(PERL) -e 'unless ( $$] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$$_ $$_\n" }}' > $@
-       $(PERL) $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \
+       $(PERL) /usr/bin/xsubpp -prototypes -typemap \
            $(PERLLIB)/ExtUtils/typemap if_perl.xs >> $@

  auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in

2

Mit dem folgenden Befehl können Sie die erforderlichen Abhängigkeiten für gvim ermitteln:

sudo apt-get build-dep vim

Wenn Sie in Ihrer Datei source.list in / etc / apt / kein Quell-Repository hinzugefügt haben, können Sie diese Datei öffnen, die darin enthaltenen Einträge duplizieren und "dep" in "dep-src" ändern.

Nachdem alle Abhängigkeiten installiert wurden, können Sie vim mit gui kompilieren.


1

Dies scheint der Fall zu sein, wenn nicht genügend *-develPakete installiert sind. Versuchen Sie, alle Entwicklungspakete zu installieren. Ich denke, es gibt ein Metapaket für die Installation der meisten von ihnen. Versuchen Sie es gnome-devel. Entschuldigung, ich habe momentan kein Ubuntu in der Nähe.

Um verschiedene Varianten von vim (z. B. GUI und Nicht-GUI) zu kompilieren, müssen Sie es mehrmals konfigurieren / kompilieren.


Auf Unix-ähnlichen Systemen gibt es keinen Grund, separate GUI- und Nicht-GUI-Versionen zu erstellen. Ein „normaler“ Build und installieren eine einzige binäre erstellen benannt , vimzu dem alle anderen Formen der Vim-- gvim, view, exusw .-- verbunden sind. Vim weiß anhand des Namens, unter dem sie aufgerufen wurde, welche Persönlichkeit sie annehmen soll.
Garyjohn

Du hast Recht, die Sie nicht haben zu. Die meisten Distributionen haben jedoch separate Builds für GUI- und Nicht-GUI-Varianten, die in verschiedenen Binärpaketen verfügbar sind. So etwas wie eine minimalund eine full featuredVersion. Das OP schien das auch wollen zu wollen.
Keith

Ich bin auf KDE, also habe ich tatsächlich K Ubuntu
Nemoden

Trotzdem stimme ich Keith zu, dass Ihnen anscheinend einige Entwicklungspakete fehlen. Es gibt einen apt-get-Befehl, der Build-Abhängigkeiten eines bestimmten Ziels installiert, aber ich habe im Moment auch kein Ubuntu-System zur Hand.
Garyjohn

1
Trotzdem wollten Sie den gtk + GUI-Build, sodass alle gtk-Entwicklungspakete installiert sein müssen. Die Gnome-Entwicklung ist ein Meta-Paket, das sie in ihren Bann zieht. Es könnte sich um ein kleineres, gtk-spezifisches Paket handeln. Aber ich kann jetzt nicht nachsehen.
Keith

1

Ich konnte auch vim73 mit der Option enable-gui auf RHEL6.1 nicht erstellen, da X11 / Intrinsic.h fehlte . Hatte Ihr Linux die Include-Datei? Wenn nicht, könnten Sie es aus dem libxt-dev- Paket bekommen.


0

Beobachten Sie die Ausgabe, wenn Sie vim kompilieren. Ich habe vim selbst nicht kompiliert, aber ich bin mir ziemlich sicher, dass es einige Warnungen / Fehler bezüglich fehlender Dateien geben wird, die für gvim benötigt werden.


Wenn Ihnen mitgeteilt wird, dass Sie etwas vermissen, wird Ihnen leider nicht mitgeteilt, welches Paket dies bereitstellt oder wie die bereitgestellte Bibliothek heißt. Deshalb müssen Sie etwas mehr angeben.
DavidG
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.