Compilar gvim a partir de fontes?


12

Recentemente, eu instalei vimassim:

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

Portanto, os binários do meu VIM agora vivem abaixo /opt/vim/bin. Aqui está ls -laeste diretório:

$ 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

Onde está o meu vim.gtk? Eu especifiquei --enable-gui=gtk2em configure. Não deveria dizer ao instalador que quero uma versão da GUI e um aplicativo de console?

Especifiquei a gtkversão corretamente:

$ 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 : Está escrito em 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.

Então, eu tentei não especificar, --enable-guiesperando encontrar qual mecanismo / kit de ferramentas da GUI usar sozinho ... Ainda o mesmo resultado :(

ATUALIZAÇÃO : Além disso:

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

ATUALIZAÇÃO :

Preciso de tudo isso:

$ 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 a maioria desses pacotes não é necessária. Por exemplo, estruturas para aplicativos móveis, ... renderizadores HTML, etc. O que eu instalei é libgtk2.0-dev... Ainda assim, não consigo compilar gVIM.... Agrhhhhh


Por que você está fazendo "sudo ./configure [...]"? O script configure não deve precisar ser executado como root. Eu posso entender fazendo "sudo make isntall", embora você não precise fazer "make install" e depois "make install clean", pois isso instalaria o Vim duas vezes - basta "make install; make clean".
Heptite 16/01/12

Você não precisa instalar um monte de arquivos dev aleatórios. Se o script configure não conseguir encontrar as bibliotecas necessárias, ele se recusará a produzir um makefile. . Parece que seu problema é consigo configuremesmo. Eu iria verificar config.loge ver como ele lida com a --enable-guiopção, etc.
jpaugh

Respostas:


7

Eu tive um problema semelhante ao instalar o gvim 7.3 no Centos 6.2 (x86_64)

Alguns pacotes de desenvolvimento necessários estavam ausentes. Para instalá-los:

yum groupinstall "Desktop Platform Development"

[Para visualizar todos os grupos disponíveis: yum grouplist]

Então a construção a partir da fonte funcionou

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 descobrir quais arquivos estavam faltando:

./configure | less

e a pesquisa por 'gui' mostrou que faltavam cabeçalhos relacionados ao X11.


4

No ubuntu, eu compilo o vim da seguinte maneira:

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

Neste ponto, cd srce verificação para o suporte X11 e prancheta correto: ./vim --version. Então:

sudo make install

Para o Fedora (usando a área de trabalho do KDE), instalei os seguintes pacotes:

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

E alterei meu comando configure para o seguinte:

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

Depois disso, recebo o seguinte:

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: Esqueci de mencionar que no Fedora eu estava recebendo um erro com a localização do xsubppscript perl, então acabei modificando o Makefile graças a alguns relatórios de erros online.

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

Você pode usar o seguinte comando para encontrar as dependências necessárias para o gvim:

sudo apt-get build-dep vim

Se você não adicionou o repositório de origem ao seu arquivo source.list em / etc / apt /, pode abrir este arquivo, duplicar as entradas internas e alterar "dep" para "dep-src".

Após todas as dependências instaladas, você poderá compilar o vim com o gui.


1

Parece que não há *-develpacotes suficientes instalados. Tente instalar todos os pacotes devel. Eu acho que existe um meta-pacote para instalar a maioria deles. Tente gnome-devel. Desculpe, não tenho o Ubuntu por perto no momento.

Para compilar diferentes variantes do vim (por exemplo, GUI e não GUI), você deve configurá-lo / compilá-lo várias vezes.


Em sistemas tipo Unix, não há razão para criar versões separadas da GUI e não-GUI. Uma compilação "normal" e instalar irá criar um único binário chamado vimpara que todas as outras formas de Vim-- gvim, view, exestão ligadas, etc .--. Vim sabe qual personalidade adotar com base no nome pelo qual foi invocada.
22411 garyjohn

Você está certo, não precisa . Mas a maioria das distribuições possui compilações separadas para variantes da GUI e não da GUI, disponíveis em diferentes pacotes binários. Algo como um minimale uma full featuredversão. O OP parecia querer fazer isso também.
Keith

Estou no KDE, então, na verdade, tenho o K Ubuntu
Nemoden

Dito isso, concordo com Keith que parece que você está perdendo alguns pacotes de desenvolvimento. Existe um comando apt-get que instala dependências de compilação de um destino especificado, mas também não tenho um sistema Ubuntu à mão no momento.
Garyjohn

1
Mesmo assim, você queria a compilação gtk + GUI, portanto precisará de todos os pacotes gtk devel instalados. o gnome-devel é um meta-pacote que os atrai. Pode ser um menor, específico para o gtk. Mas não posso verificar agora.
Keith

1

Também não consegui compilar o vim73 com a opção enable-gui no RHEL6.1 devido à falta de X11 / Intrinsic.h . Seu linux tinha o arquivo de inclusão? Se não, você pode obtê-lo, eu acho, do pacote libxt-dev .


0

Assista a saída ao compilar o vim. Eu não compilei o vim, mas tenho certeza de que haverá alguns avisos / erros sobre os arquivos ausentes necessários para o gvim.


Infelizmente, quando diz a você que está faltando alguma coisa, não informa qual pacote fornece isso ou qual é o nome da biblioteca fornecedora; é por isso que você precisa dar um pouco mais do que isso.
DavidG 5/05
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.