Скомпилировать гвим из источников?


12

Недавно я установил 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

Итак, двоичные файлы моего VIM теперь живут под /opt/vim/bin. Вот ls -laэтого режиссера:

$ 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

Где мой vim.gtk? Я указал --enable-gui=gtk2в настройках. Разве это не говорит установщику, что я хочу версию с графическим интерфейсом, а также консольное приложение?

Я gtkправильно указал версию:

$ 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

ОБНОВЛЕНИЕ : написано на 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.

Поэтому я старался не указывать, --enable-guiнадеясь, что он найдет какой графический движок / инструментарий использовать сам по себе ... Результат тот же :(

ОБНОВЛЕНИЕ : Кроме того:

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

ОБНОВЛЕНИЕ :

Нужно ли мне все это:

$ 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

Похоже, большинство из этих пакетов мне не нужны. Например, фреймворки для мобильных приложений, ... средства рендеринга HTML и т. Д. Я установил один из них libgtk2.0-dev... Тем не менее, я не могу скомпилировать gVIM.... Agrhhhhh


Почему вы делаете "sudo ./configure [...]"? Скрипт конфигурации не должен запускаться от имени пользователя root. Я могу понять, что делать «sudo make isntall», хотя вам не нужно делать «make install», а затем «make install clean», как это будет дважды устанавливать Vim - просто выполните «make install; make clean».
Гептит

Вам не нужно устанавливать кучу случайных файлов разработчиков. Если скрипт configure не может найти нужные ему библиотеки, он откажется выводить make-файл. , Похоже, ваша проблема configureсама с собой. Я бы проверил config.logи посмотрел, как он обрабатывает --enable-guiопцию и т. Д.
jpaugh

Ответы:


7

У меня была похожая проблема при установке gvim 7.3 на Centos 6.2 (x86_64)

Некоторые необходимые пакеты devel отсутствовали. Чтобы установить их:

yum groupinstall "Desktop Platform Development"

[Для просмотра всех доступных групп: yum grouplist]

Тогда здание из источника просто работало

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

Чтобы узнать, какие файлы отсутствовали:

./configure | less

поиск «gui» показал, что заголовки, связанные с X11, отсутствуют.


4

В Ubuntu я собираю VIM следующим образом:

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и проверить правильность поддержки X11 и буфер обмена: ./vim --version. Потом:

sudo make install

Для Fedora (используя рабочий стол KDE) я установил следующие пакеты:

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

И изменил мою команду настройки следующим образом:

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

После этого я получаю следующее:

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

РЕДАКТИРОВАТЬ: забыл упомянуть, что для Fedora я получил ошибку с расположением xsubppсценария Perl, поэтому я в конечном итоге изменил Makefile благодаря некоторому онлайн-сообщению об ошибке.

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

Вы можете использовать следующую команду, чтобы найти необходимые зависимости для gvim:

sudo apt-get build-dep vim

Если вы не добавили репозиторий исходного кода в свой файл source.list в / etc / apt /, вы можете открыть этот файл, продублировать записи внутри и изменить «dep» на «dep-src».

После того, как все зависимости установлены, вы сможете скомпилировать vim с помощью gui.


1

Это похоже на случай нехватки *-develустановленных пакетов. Попробуйте установить все пакеты devel. Я думаю, что есть метапакет для установки большинства из них. Попробуй gnome-devel. Извините, у меня сейчас нет Ubuntu.

Чтобы скомпилировать различные варианты vim (например, GUI и не-GUI), вы должны настраивать / компилировать его несколько раз.


В Unix-подобных системах нет причин для создания отдельных версий GUI и не-GUI. «Нормальный» сборка и установка будет создать единый исполняемый файл с именем , vimк которому все другие формы Vim-- gvim, view, exи т.д. .-- связаны между собой . Vim знает, какую личность принять, основываясь на имени, под которым она была вызвана.
Гариджон

Ты прав, тебе не нужно . Но большинство дистрибутивов имеют отдельные сборки для вариантов GUI и не-GUI, доступные в разных бинарных пакетах. Что-то вроде minimalи full featuredверсии. ОП, похоже, тоже хотел это сделать.
Кит

Я на KDE, так что я на самом деле имею K Ubuntu
Немоден

Тем не менее, я согласен с Китом, что, похоже, вам не хватает некоторых пакетов разработки. Есть команда apt-get, которая установит зависимости сборки указанной цели, но у меня пока нет под рукой системы Ubuntu.
Гариджон

1
Тем не менее, вы хотели сборку gtk + GUI, поэтому вам понадобятся все установленные пакеты gtk devel. gnome-devel - это метапакет, который извлечет их из них. Они могут быть меньшего размера, специфичного для gtk. Но я не могу проверить прямо сейчас.
Кит

1

Я также не смог собрать vim73 с опцией enable-gui на RHEL6.1 из-за отсутствия X11 / Intrinsic.h . У вашего linux был включаемый файл? Если нет, то вы можете получить его из пакета libxt-dev .


0

Смотрите вывод, когда вы компилируете vim. Я сам не скомпилировал vim, но уверен, что появятся некоторые предупреждения / ошибки, касающиеся отсутствующих файлов, необходимых для gvim.


К сожалению, когда он сообщает вам, что вы что-то упустили, он не сообщает вам, какой пакет предоставляет это или как называется библиотека, предоставляющая библиотеку, поэтому вам нужно дать немного больше.
DavidG
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.