Compiler gvim à partir de sources?


12

Récemment, j'ai installé vimcomme ça:

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

Donc, les binaires de mon VIM vivent maintenant sous /opt/vim/bin. Voici ls -lade ce dir:

$ 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

Où est ma vim.gtk? J'ai spécifié --enable-gui=gtk2dans configure. Cela ne devrait-il pas dire que l'installateur Je veux une version GUI ainsi qu'une application console?

J'ai spécifié la gtkversion correctement:

$ 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

MISE À JOUR : Il est écrit sur 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.

J'ai donc essayé de ne pas spécifier en --enable-guiespérant qu'il trouverait le moteur / boîte à outils GUI à utiliser seul ... Toujours le même résultat :(

MISE À JOUR : En outre:

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

MISE À JOUR :

Ai-je besoin de TOUT cela:

$ 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

On dirait que la plupart des packages dont je n'ai pas besoin. Par exemple: Frameworks pour applications mobiles, ... moteurs de rendu HTML, etc. Celui que j'ai installé est libgtk2.0-dev... Je ne peux toujours pas compiler gVIM.... Agrhhhhh


Pourquoi faites-vous "sudo ./configure [...]"? Le script de configuration ne doit pas nécessairement être exécuté en tant que root. Je peux comprendre faire "sudo make isntall", bien que vous n'ayez pas besoin de faire "make install" puis "make install clean" car cela installerait Vim deux fois - faites simplement "make install; make clean".
Heptite

Vous ne devriez pas avoir besoin d'installer un tas de fichiers de développement aléatoires. Si le script configure ne trouve pas les bibliothèques dont il a besoin, il refusera de sortir un makefile. . On dirait que votre problème est avec configurelui-même. Je vérifierais config.loget verrais comment il gère l' --enable-guioption, etc.
jpaugh

Réponses:


7

J'ai rencontré un problème similaire lors de l'installation de gvim 7.3 sur Centos 6.2 (x86_64)

Certains packages de développement requis étaient manquants. Pour les installer:

yum groupinstall "Desktop Platform Development"

[Pour afficher tous les groupes disponibles: yum grouplist]

La construction à partir de la source a juste fonctionné

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

Pour découvrir quels fichiers manquaient:

./configure | less

et la recherche de «gui» a montré que les en-têtes liés à X11 manquaient.


4

Dans ubuntu, je compile vim de la manière suivante:

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

À ce stade, cd srcet vérifier le bon support X11 et presse - papiers: ./vim --version. Puis:

sudo make install

Pour Fedora (en utilisant le bureau KDE), j'ai installé les packages suivants:

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

Et changé ma commande configure comme suit:

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

Après cela, j'obtiens ce qui suit:

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

EDIT: J'ai oublié de mentionner que pour Fedora, j'obtenais une erreur avec l'emplacement du xsubppscript perl, j'ai donc fini par modifier le Makefile grâce à un rapport de bogue en ligne.

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

Vous pouvez utiliser la commande suivante pour rechercher les dépendances nécessaires pour gvim:

sudo apt-get build-dep vim

Si vous n'avez pas ajouté de référentiel source dans votre fichier source.list dans / etc / apt /, vous pouvez ouvrir ce fichier, dupliquer les entrées à l'intérieur et changer "dep" en "dep-src".

Une fois toutes les dépendances installées, vous pourrez compiler vim avec gui.


1

Cela ressemble au cas de ne pas avoir suffisamment de *-develpackages installés. Essayez d'installer tous les packages devel. Je pense qu'il existe un méta-package pour installer la plupart d'entre eux. Essayez gnome-devel. Désolé, je n'ai pas Ubuntu à proximité pour le moment.

Pour compiler différentes variantes de vim (par exemple GUI et non GUI), vous devez le configurer / compiler plusieurs fois.


Sur les systèmes de type Unix, il n'y a aucune raison de créer des versions GUI et non GUI distinctes. Une construction « normale » et installation créera un seul binaire nommé vimà laquelle toutes les autres formes de Vim-- gvim, view, ex, etc .-- sont liés. Vim sait quelle personnalité adopter en fonction du nom par lequel elle a été invoquée.
garyjohn

Vous avez raison, vous n'êtes pas obligé . Mais la plupart des distributions ont des versions distinctes pour les variantes GUI et non GUI, disponibles dans différents packages binaires. Quelque chose comme une minimalet une full featuredversion. Le PO semblait aussi vouloir le faire.
Keith

Je suis sur KDE, donc j'ai en fait K Ubuntu
Nemoden

Cela dit, je suis d'accord avec Keith qu'il semble que vous manquez des packages de développement. Il existe une commande apt-get qui installera les dépendances de construction d'une cible spécifiée, mais je n'ai pas de système Ubuntu à portée de main pour le moment non plus.
garyjohn

1
Même ainsi, vous vouliez la construction gtk + GUI, vous aurez donc besoin de tous les packages de développement gtk installés. le gnome-devel est un méta-paquet qui en tirera. Leur pourrait être un plus petit, spécifique à gtk. Mais je ne peux pas vérifier pour le moment.
Keith

1

J'ai également échoué à créer vim73 avec l'option enable-gui sur RHEL6.1 en raison du manque de X11 / Intrinsic.h . Votre Linux avait-il le fichier include? Sinon, vous pouvez l'obtenir à partir, je suppose, du paquet libxt-dev .


0

Regardez la sortie lorsque vous compilez vim. Je n'ai pas compilé vim moi-même, mais je suis sûr qu'il y aura des avertissements / erreurs concernant les fichiers manquants nécessaires à gvim.


Malheureusement, quand il vous dit que vous manquez quelque chose, il ne vous dit pas quel package fournit cela ou quel est le nom de la bibliothèque fournissant, c'est pourquoi vous devez donner un peu plus que cela.
DavidG
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.