Ставим Go
wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz --no-check-certificate sudo tar -C /usr/local -xzf ./go1.6.linux-amd64.tar.gz
Прописываем переменные GOPATH и GOROOT
Я работаю в контейнере openvz, поэтому просто поправил /etc/environment и он стал таким:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/go/bin:" GOROOT=/usr/local/go GOPATH=/root/go
При этом путь GOPATH не может быть относительным типа $HOME/go, а только абсолютным - /home/user/go
Обновляем GCC
Для сборки Webkit понадобится GCC версии не ниже 4.9, однако в Ubuntu 14.04.04 в стандартной поставке GCC 4.8.
При этом, попытки скомпилировать WebKit с GCC 5.3.0 уперлись в ошибку типа:
undefined reference to `llvm::RTDyldMemoryManager::getSymbolAddress(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Пробую ставить gcc 4.9:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-4.9 sudo update-alternatives --remove-all gcc sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20 sudo update-alternatives --config gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20 sudo update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.9 20 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20 sudo update-alternatives --config gcc sudo update-alternatives --config cpp sudo update-alternatives --config g++
Собираем WebGit с GTK
sudo apt-get update && sudo apt-get install git pkg-config cmake clang nano build-essential bison gperf ruby-full libcairo2-dev libicu-dev gettext libjpeg62-dev libxslt1-dev libsqlite3-dev libatspi2.0-dev libwebp-dev libgles2-mesa-dev libgl1-mesa-dev geoclue-2.0 geoclue libgeoclue-dev gobject-introspection
Клонируем репозиторий WebKit
git clone git://git.webkit.org/WebKit.git WebKit
Теперь нужно установить зависимости с помощью скрипта - Tools/gtk/install-dependencies
Однако, в нем некорректно указан пакет libtool-bin
Нужно изменить libtool-bin на libtool.
sudo Tools/gtk/install-dependencies
Дальше скачиваем еще немного необходимых модулей:
Tools/Scripts/update-webkitgtk-libs
Собираем:
Tools/Scripts/build-webkit --gtk --prefix=/usr/local --release
Пробуем скачать и запустить webloop
go get github.com/sourcegraph/webloop/...
Он выругается, что есть какой-то неизвестный тип или отсутствует пакет. Скорее всего нужна правильная версия GTK+. Если установить версию GTK+ старше 3.10, то будут сообщения, указывающие на отсуствие refrence gdk_wayland_display_get_type А если поставить версию 3.10, то тоже не соберется с сообщением об неивестном типе - unknown type name 'GtkPopover' . Поэтому выход такой - Сначала ставим версию GTK+ 3.10, а потом 3.16. Но прежде - нужно пройти dependence hell. Список, которые поставил я выглядит так:
-rw-r--r-- 1 root root 9427862 Jun 2 09:06 adwaita-icon-theme-full_3.16.2.1-2ubuntu1_all.deb -rw-r--r-- 1 root root 943512 Jun 2 09:06 adwaita-icon-theme_3.16.2.1-2ubuntu1_all.deb -rw-r--r-- 1 root root 48712 Jan 19 2015 fontconfig-config_2.11.1-0ubuntu6_all.deb -rw-r--r-- 1 root root 17030 Sep 11 06:16 gcc-5-base_5.2.1-17ubuntu1_amd64.deb -rw-r--r-- 1 root root 17728 May 14 06:20 gir1.2-atk-1.0_2.16.0-2_amd64.deb -rw-r--r-- 1 root root 187352 Jul 24 09:34 gir1.2-gtk-3.0_3.16.6-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 12836 Aug 12 18:24 gir1.2-javascriptcoregtk-3.0_2.4.9-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 20950 Nov 18 2014 gir1.2-pango-1.0_1.36.8-3_amd64.deb -rw-r--r-- 1 root root 26614 Aug 12 18:24 gir1.2-webkit2-3.0_2.4.9-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 1315042 Jul 6 11:41 humanity-icon-theme_0.6.9_all.deb -rw-r--r-- 1 root root 378772 Sep 11 05:18 lib64stdc++6_5.2.1-17ubuntu1_i386.deb -rw-r--r-- 1 root root 57782 May 14 06:20 libatk1.0-0_2.16.0-2_amd64.deb -rw-r--r-- 1 root root 16898 May 14 06:20 libatk1.0-data_2.16.0-2_all.deb -rw-r--r-- 1 root root 79070 May 14 06:20 libatk1.0-dev_2.16.0-2_amd64.deb -rw-r--r-- 1 root root 37258 Jul 30 05:34 libboost-filesystem1.58.0_1.58.0+dfsg-0ubuntu5_amd64.deb -rw-r--r-- 1 root root 9454 Jul 30 05:34 libboost-system1.58.0_1.58.0+dfsg-0ubuntu5_amd64.deb -rw-r--r-- 1 root root 17416 Apr 8 08:12 libcairo-gobject2_1.14.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 54382 Apr 8 08:12 libcairo-script-interpreter2_1.14.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 593992 Apr 8 08:12 libcairo2-dev_1.14.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 558844 Apr 8 08:12 libcairo2_1.14.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 20282 Jun 9 07:13 libcap2-bin_2.24-9_amd64.deb -rw-r--r-- 1 root root 100690 Jun 9 22:51 libcolord2_1.2.11-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 39008 Aug 8 06:11 libelf1_0.163-4ubuntu1_amd64.deb -rw-r--r-- 1 root root 104426 Jun 8 2014 libepoxy-dev_1.2-1_amd64.deb -rw-r--r-- 1 root root 164522 Jun 8 2014 libepoxy0_1.2-1_amd64.deb -rw-r--r-- 1 root root 640896 Jan 19 2015 libfontconfig1-dev_2.11.1-0ubuntu6_amd64.deb -rw-r--r-- 1 root root 126516 Jan 19 2015 libfontconfig1_2.11.1-0ubuntu6_amd64.deb -rw-r--r-- 1 root root 632734 Sep 10 08:13 libfreetype6-dev_2.5.2-2ubuntu3.1_amd64.deb -rw-r--r-- 1 root root 314522 Sep 10 13:03 libfreetype6_2.5.2-2ubuntu3.1_amd64.deb -rw-r--r-- 1 root root 88266 Oct 27 2014 libgirepository-1.0-1_1.42.0-2.2_amd64.deb -rw-r--r-- 1 root root 1106104 Sep 7 07:38 libglib2.0-0_2.45.7-1_amd64.deb -rw-r--r-- 1 root root 39468 Sep 7 07:38 libglib2.0-bin_2.45.7-1_amd64.deb -rw-r--r-- 1 root root 1367218 Sep 7 07:38 libglib2.0-dev_2.45.7-1_amd64.deb -rw-r--r-- 1 root root 729218 Sep 4 13:20 libgstreamer1.0-0_1.5.90-1_amd64.deb -rw-r--r-- 1 root root 2300010 Jul 24 09:34 libgtk-3-0_3.16.6-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 196084 Jul 24 09:34 libgtk-3-common_3.16.6-1ubuntu1_all.deb -rw-r--r-- 1 root root 863430 Jul 24 09:34 libgtk-3-dev_3.16.6-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 178560 Jan 5 2015 libharfbuzz-dev_0.9.37-1_amd64.deb -rw-r--r-- 1 root root 11124 Jan 5 2015 libharfbuzz-gobject0_0.9.37-1_amd64.deb -rw-r--r-- 1 root root 5446 Jan 5 2015 libharfbuzz-icu0_0.9.37-1_amd64.deb -rw-r--r-- 1 root root 131906 Jan 5 2015 libharfbuzz0b_0.9.37-1_amd64.deb -rw-r--r-- 1 root root 7652886 Aug 8 19:18 libicu55_55.1-4_amd64.deb -rw-r--r-- 1 root root 1851120 Aug 12 18:24 libjavascriptcoregtk-3.0-0_2.4.9-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 33452 Aug 12 18:24 libjavascriptcoregtk-3.0-bin_2.4.9-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 21176 Aug 12 18:24 libjavascriptcoregtk-3.0-dev_2.4.9-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 56706 May 23 19:16 libjson-glib-1.0-0_1.0.4-1_amd64.deb -rw-r--r-- 1 root root 5852 May 23 19:16 libjson-glib-1.0-common_1.0.4-1_all.deb -rw-r--r-- 1 root root 136966 Nov 17 2014 liblcms2-2_2.6-3ubuntu2_amd64.deb -rw-r--r-- 1 root root 22578 Sep 3 15:30 libmirclient-dev_0.15.1+15.10.20150903-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 153826 Sep 3 15:30 libmirclient9_0.15.1+15.10.20150903-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 15476 Sep 3 15:30 libmircommon-dev_0.15.1+15.10.20150903-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 62966 Sep 3 15:30 libmircommon5_0.15.1+15.10.20150903-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 94278 Sep 3 15:30 libmirprotobuf1_0.15.1+15.10.20150903-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 151888 Nov 18 2014 libpango-1.0-0_1.36.8-3_amd64.deb -rw-r--r-- 1 root root 287528 Nov 18 2014 libpango1.0-dev_1.36.8-3_amd64.deb -rw-r--r-- 1 root root 20612 Nov 18 2014 libpangocairo-1.0-0_1.36.8-3_amd64.deb -rw-r--r-- 1 root root 33446 Nov 18 2014 libpangoft2-1.0-0_1.36.8-3_amd64.deb -rw-r--r-- 1 root root 15264 Nov 18 2014 libpangoxft-1.0-0_1.36.8-3_amd64.deb -rw-r--r-- 1 root root 58274 Aug 6 07:28 libprotobuf-lite9v5_2.6.1-1.2_amd64.deb -rw-r--r-- 1 root root 31798 Mar 17 09:40 librest-0.7-0_0.7.92-3_amd64.deb -rw-r--r-- 1 root root 91300 Aug 8 13:16 librsvg2-2_2.40.10-1_amd64.deb -rw-r--r-- 1 root root 5038 Aug 8 13:16 librsvg2-common_2.40.10-1_amd64.deb -rw-r--r-- 1 root root 391722 Sep 11 06:30 libstdc++6_5.2.1-17ubuntu1_amd64.deb -rw-r--r-- 1 root root 21978 Jun 13 07:12 libwayland-client0_1.8.1-1_amd64.deb -rw-r--r-- 1 root root 10242 Jun 13 07:12 libwayland-cursor0_1.8.1-1_amd64.deb -rw-r--r-- 1 root root 111378 Jun 13 07:12 libwayland-dev_1.8.1-1_amd64.deb -rw-r--r-- 1 root root 26868 Jun 13 07:12 libwayland-server0_1.8.1-1_amd64.deb -rw-r--r-- 1 root root 15053220 Aug 12 18:24 libwebkit2gtk-3.0-25_2.4.9-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 169216 Aug 12 18:24 libwebkit2gtk-3.0-dev_2.4.9-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 107506 Aug 12 18:24 libwebkitgtk-3.0-common_2.4.9-2ubuntu2_all.deb -rw-r--r-- 1 root root 62644 Aug 12 18:24 libwebkitgtk-common-dev_2.4.9-2ubuntu2_all.deb -rw-r--r-- 1 root root 164654 May 13 07:11 libwebp5_0.4.3-1.3_amd64.deb -rw-r--r-- 1 root root 570876 Aug 4 2014 libx11-6_1.6.2-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 639830 Aug 4 2014 libx11-dev_1.6.2-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 45694 Jul 13 2014 libxft-dev_2.3.2-1_amd64.deb -rw-r--r-- 1 root root 36120 Jul 13 2014 libxft2_2.3.2-1_amd64.deb -rw-r--r-- 1 root root 97170 Jul 20 04:17 libxkbcommon0_0.5.0-1ubuntu2_amd64.deb -rw-r--r-- 1 root root 24504 Apr 8 08:34 libxrender-dev_0.9.8-1build1_amd64.deb -rw-r--r-- 1 root root 18482 Apr 8 08:34 libxrender1_0.9.8-1build1_amd64.deb -rw-r--r-- 1 root root 176418 Sep 10 10:05 ubuntu-mono_14.04+15.10.20150910-0ubuntu1_all.deb
Их все я выкачал вручную и поставил:
dpkg -i ./*.deb
По просьбе трудищихся могу выложить файлик, где собраны зависимости.
Потом скачиваем, компилим и ставим две версии GTK:
wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.10/gtk+-3.10.2.tar.xz tar -xvf gtk+-3.10.2.tar.xz cd gtk+-3.10.2 ./configure make make install wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.16/gtk+-3.16.6.tar.xz tar -xvf gtk+-3.16.6.tar.xz cd gtk+-3.16.6 ./configure make make install
И вот после этого скорее всего удастся скачать и собрать webtool:
go install github.com/sourcegraph/webloop/...
И даже запустить:
static-reverse-proxy -target=http://example.com -http=:13000
Но! при попытке открытия сайтика вылезет: Gtk-WARNING : cannot open display: Тут на помощь придет Xvfb:
apt-get install xvfb xserver-xorg-core x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic
проверяем:
Xvfb :99 -ac
И теперь можем запустить нашу webloop:
xvfb-run --server-args="-screen 0, 1280x1024x24" /root/go/bin/static-reverse-proxy -target=http://www.sitename.ru -http=:13000 -unfinished
И радуемся.
Discussion