Compilar gvim de las fuentes?


12

Recientemente, he instalado vimasí:

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

Entonces, los binarios de mi VIM ahora viven debajo /opt/vim/bin. Aquí está ls -lade este directorio:

$ 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

¿Dónde está mi vim.gtk? Especifiqué --enable-gui=gtk2en configurar. ¿No debería decir al instalador que quiero una versión de GUI y una aplicación de consola?

Especifiqué la gtkversión correctamente:

$ 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

ACTUALIZACIÓN : Está escrito en src / INSTALL

 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.

Así que traté de no especificar --enable-guicon la esperanza de que encuentre qué motor / kit de herramientas GUI usar por sí mismo ... Sigue siendo el mismo resultado :(

ACTUALIZACIÓN : Además:

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

ACTUALIZACIÓN :

¿Necesito TODO esto?

$ 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

Parece que la mayoría de estos paquetes no necesito. Ej. Frameworks para aplicaciones móviles, ... renderizadores HTML, etc. El que he instalado es libgtk2.0-dev... Aún así, no puedo compilar gVIM.... Agrhhhhh


¿Por qué haces "sudo ./configure [...]"? El script de configuración no debería necesitar ejecutarse como root. Puedo entender hacer "sudo make isntall", aunque no es necesario que haga "make install" y luego "make install clean", ya que eso instalaría Vim dos veces, solo haga "make install; make clean".
Heptita

No debería necesitar instalar un montón de archivos dev aleatorios. Si el script de configuración no puede encontrar las bibliotecas que necesita, se negará a generar un archivo MAKE. . Parece que su problema es consigo configuremismo. Comprobaría config.logy vería cómo maneja la --enable-guiopción, etc.
jpaugh

Respuestas:


7

Tuve un problema similar al instalar gvim 7.3 en Centos 6.2 (x86_64)

Faltaban algunos paquetes de desarrollo necesarios. Para instalarlos:

yum groupinstall "Desktop Platform Development"

[Para ver todos los grupos disponibles: yum grouplist]

Luego construir desde la fuente simplemente funcionó

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

Para descubrir qué archivos faltaban:

./configure | less

y la búsqueda de 'gui' mostró que faltaban los encabezados relacionados con X11.


4

En ubuntu compilo vim de la siguiente manera:

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

En este punto, cd srcy la verificación de la correcta soporte X11 y el portapapeles: ./vim --version. Luego:

sudo make install

Para Fedora (usando el escritorio KDE) instalé los siguientes paquetes:

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

Y cambié mi comando de configuración a lo siguiente:

./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

Después de eso me sale lo siguiente:

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 ...>

EDITAR: Olvidé mencionar que para Fedora estaba recibiendo un error con la ubicación del xsubppscript perl, así que terminé modificando el Makefile gracias a un informe de error en línea.

--- 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

Puede usar el siguiente comando para encontrar las dependencias necesarias para gvim:

sudo apt-get build-dep vim

Si no ha agregado el repositorio de origen en su archivo source.list en / etc / apt /, puede abrir este archivo, duplicar las entradas dentro y cambiar "dep" a "dep-src".

Después de instalar todas las dependencias, podrá compilar vim con gui.


1

Este parece ser el caso de no tener suficientes *-develpaquetes instalados. Intente instalar todos los paquetes de desarrollo. Creo que hay un metapaquete para instalar la mayoría de ellos. Tratar gnome-devel. Lo siento, no tengo Ubuntu cerca en este momento.

Para compilar diferentes variantes de vim (por ejemplo, GUI y no GUI), debe configurarlo / compilarlo varias veces.


En sistemas similares a Unix, no hay razón para construir versiones GUI y no GUI separadas. Una acumulación "normal" y de instalación creará un único binario denominado vima la cual todas las otras formas de Vim-- gvim, view, exestán vinculados, etc .--. Vim sabe qué personalidad adoptar según el nombre con el que se invocó.
garyjohn

Tienes razón, no tienes que hacerlo. Pero la mayoría de las distribuciones tienen compilaciones separadas para variantes GUI y no GUI, disponibles en diferentes paquetes binarios. Algo así como una minimaly una full featuredversión. El OP parecía querer hacer eso también.
Keith

Estoy en KDE, así que en realidad tengo K Ubuntu
Nemoden

Dicho esto, estoy de acuerdo con Keith en que parece que te faltan algunos paquetes de desarrollo. Hay un comando apt-get que instalará las dependencias de compilación de un objetivo específico, pero tampoco tengo un sistema Ubuntu en este momento.
garyjohn

1
Aun así, quería la compilación de la GUI de gtk +, por lo que necesitará todos los paquetes de desarrollo de gtk instalados. el gnome-devel es un metapaquete que los atraerá. Puede ser uno más pequeño y específico para gtk. Pero no puedo comprobarlo ahora.
Keith

1

Tampoco pude compilar vim73 con la opción enable-gui en RHEL6.1 debido a la falta de X11 / Intrinsic.h . ¿Tu Linux tenía el archivo de inclusión? Si no, podría obtenerlo, supongo, del paquete libxt-dev .


0

Mire la salida cuando esté compilando vim. No he compilado vim yo mismo, pero estoy bastante seguro de que habrá algunas advertencias / errores con respecto a los archivos faltantes necesarios para gvim.


Desafortunadamente, cuando te dice que te estás perdiendo algo, no te dice qué paquete proporciona eso o cuál es el nombre de la biblioteca proveedora, por eso debes dar un poco más que eso.
DavidG
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.