Возникла задача плавной миграции с рабочей станции под Windows на Ubuntu. Так как выполнение основных действий при помощи компьютера никто не отменял, то миграцию приходится делать кусками, оставляя доступной привычную среду (Windows 7 x64). Так как я являюсь разработчиком, то первым делом нужно переносить IDE (в моем случае — PhpStorm). Целевой машиной для переноса был выбран виртуальный хост hamster, работающий под Ubuntu, на котором тестриуются наши проекты.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
$ uname -a
Linux hamster 3.13.0-43-generic #72-Ubuntu SMP Mon Dec 8 1
Установка PhpStorm
Заходим на виртуальный хост hamster через SSH, загружаем IDE и распаковываем:
$ wget http://download-cf.jetbrains.com/webide/PhpStorm-8.0.2.tar.gz
$ tar -zxf PhpStorm-8.0.2.tar.gz
$ ls -lh
total 124M
drwxrwxr-x 7 ag ag 4.0K Dec 19 16:56 PhpStorm-139.732
-rw-rw-r-- 1 ag ag 124M Dec 10 16:50 PhpStorm-8.0.2.tar.gz
Установка Java согласно инструкциям от JetBrains:
$ sudo apt-get purge openjdk*
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
Проверяем установку Java, переходим к bin-файлам IDE и запускаем приложение:
$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
$ cd PhpStorm-139.732/bin/
$ ./phpstorm.sh
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=350m; support was removed in 8.0
Exception in thread "main" java.awt.HeadlessException: Unable to detect graphics environment
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at com.intellij.idea.Main.main(Main.java:63)
Ну да, через текстовый терминал графическое приложение не запускается.
Установка Xming и подключение у виртуальному хосту
Устанавливаем Xming на рабочую Windows-машину и запускаем:
>"C:Program Files (x86)XmingXming.exe" :0 -clipboard -multiwindow
На локальной машине у меня стоит PuTTY, поэтому настраиваем сессию для работы с hamster через PuTTY. Основной момент:
Устанавливаем новую сессию через PuTTY и проверяем доступность иксов:
$ echo $DISPLAY
localhost:10.0
Переходим в папку bin развернутого на hamster IDE и запускаем приложение:
$ cd ~/PhpStorm-139.732/bin/
$ ./phpstorm.sh
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=350m; support was removed in 8.0
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
at java.awt.Component.<clinit>(Component.java:593)
at com.intellij.idea.Main.showMessage(Main.java:221)
at com.intellij.idea.Main.showMessage(Main.java:208)
at com.intellij.idea.Main.main(Main.java:81)
Опять неудача, не хватает X11-сервера на hamster'е.
Развертывание X11
Открываем отдельную SSH-сессию для установки и запуска X11.
$ sudo apt-get install xorg
$ sudo startx &
Возвращаемся в X11-сессию и пробуем запустить phpstorm еще раз:
$ ./phpstorm.sh
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=350m; support was removed in 8.0
PuTTY X11 proxy: wrong authorisation protocol attemptedException in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
at java.lang.Class.forName0(Native Method)
...
Я не знаю, что собственно далее нужно донастраивать, но Google выдает рекомендации, которые сводятся к следующим командам (я выполнял в новой X11-сессии, но, возможно, пройдет и в уже установленной):
$ xauth list
hamster/unix:10 MIT-MAGIC-COOKIE-1 668c9a37a292b40b3e243ebad33b5955
$ xauth add hamster/unix:10 MIT-MAGIC-COOKIE-1 668c9a37a292b40b3e243ebad33b5955
Еще раз запускаем PhpStorm из X11-сессии:
$ cd ~/PhpStorm-139.732/bin/
$ ./phpstorm.sh
Как результат имеем запустившийся процесс настройки IDE PhpStorm, выполняемый на удаленном Ubuntu-хосте, но управляемый на локальной Windows-машине:
После окончательного развертывания IDE PhpStorm на удаленном Ubuntu-хосте можем начинать разрабатывать наши проекты не выходя из привычного нам Windows-окружения:
Автор: flancer