Что делать, если у вас не совсем такой Linux, как у создателя нужной вам софтины, а использовать виртуалку слишком накладно? Использовать Docker! А если это графическое приложение? Ответ такой же — использовать Docker!

В виду того, что на новой работе для обмена почтой используется Microsoft Exchange, я настроил в своём Arch почтовик Evolution. Функционально вроде бы всё есть, но до MS Outlook немного не дотягивает.

Решил поискать, какие ещё программы могут работать с MS Exchange из Linux и наткнулся на неизвестную мне ранее Hiri. Судя по скриншотам, может быть чем-то интересным, но под Arch программа не запустилась. Запуск Hiri с env LIBGL_DEBUG=verbose показал, что ей чем-то не нравятся мои версии библиотек Arch.

Так как мне надо было всего лишь «на посмотреть» и как раз недавно ковырял Docker, решил немного попытать Docker на тему запуска GUI приложений. В итоге, можно считать, у меня всё получилось, хотя есть ещё косяк — Hiri не отображает картинки в письмах. Думаю, не хватает какой-то QT-либы в контейнере.

И так, для начала необходимо создать файл Dockerfile в котором пропишем:

FROM debian

    RUN apt-get update && apt-get install -y sudo wget libxcursor1 libxss1 libasound2 libxcomposite1 libxtst6 libxaw7 libxft2         libxcb-keysyms1         libxcb-image0         libxcb-shm0         libxcb-icccm4         libxcb-sync1         libxcb-xfixes0         libxcb-shape0         libxcb-randr0         libxcb-render-util0         libfontconfig1         libfreetype6         libx11-6         libxext6         libxfixes3         libxi6         libxrender1         libxcb1         libx11-xcb1         libxcb-glx0         xauth         libglu1-mesa         libxkbcommon0         libxcb-xkb1         libxslt1.1         libgstreamer-plugins-base0.10


    # Set timezone
    RUN echo "Asia/Novosibirsk" > /etc/timezone

    # Replace 1000 with your user / group id
    RUN export uid=1000 gid=1000 &&         mkdir -p /home/user &&         echo "user:x:${uid}:${gid}:User,,,:/home/user:/bin/bash" >> /etc/passwd &&         echo "user:x:${uid}:" >> /etc/group &&         echo "user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/user &&         chmod 0440 /etc/sudoers.d/user &&         chown ${uid}:${gid} -R /home/user

    # Install Hiri
    RUN wget https://feedback.hiri.com/downloads/Hiri.tar.gz -O /tmp/Hiri.tar.gz --progress=dot:giga &&         cd /opt/ &&         tar oxf /tmp/Hiri.tar.gz &&         rm -f /tmp/Hiri.tar.gz &&         chmod -R go-w hiri

    USER user
    ENV HOME /home/user
    WORKDIR /home/user
    CMD /opt/hiri/hiri.sh

Необходимо заменить таймзону Asia/Novosibirsk на подходящую. Если этого не сделать, календарь будет показывать время неправильно, несмотря на установку таймзоны в профиле.

Теперь в каталоге с Dockerfile выполняем команду

docker build -t hiri .

Это создаст образ с именем hiri. Теперь создадим из этого образа рабочий контейнер с именем hiri:

docker run -ti -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name=hiri hiri

Контейнер будет создан и сразу запустится Hiri. По выходу из Hiri произвести запуск контейнера можно командой

docker start hiri

Внимание! Для повторного запуска не нужно опять запускать docker run! В этом случае вы получите исходную конфигурацию без персональных настроек.

Чтобы не проделывать самостоятельно работу по созданию контейнера можно сразу скачать и запустить его с docker-hub:

docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name=hiri ktak007/hiri

В целом Hiri показалась симпатичной программой, но для начала использования мне не хватило возможности подключить календари Гугл.
Поделиться с друзьями
-->

Комментарии (8)


  1. Sacra
    03.04.2017 08:24

    Почему не стали использовать версию из AUR?


    1. Ktak-007
      03.04.2017 08:27

      Из AUR не собралось. Не стал разбираться, скачал архив Hiri руками, но и так не заработало. Поэтому Docker.


      1. Sacra
        03.04.2017 12:46

        В ауре пакет помечен старым не просто так, первый же комментарий гласит, что нужно заменить ссылку в pkgbuild'e. Ну а установка и настройка пакета через докер, в вашем конкретном случае, выглядит как один огромный костыль.


  1. edenejkin
    03.04.2017 08:24

    Чего то с этим Hiri не так, попробовал из аура поставить, аварийно завершилась установка. Как установил то?


    1. Ktak-007
      03.04.2017 08:26

      Из AUR и у меня не поставилось. И руками из архива не получилось. Поэтому Docker.


  1. andrzzc
    03.04.2017 08:27

    Если изначальную версию Hiri обновят (новые фишки добавят или баги исправят), как можно обновить свою установленную версию и не потерять свой профиль?


    1. Ktak-007
      03.04.2017 08:30

      Я бы сохранил контейнер в образ (docker commit), сделал новый контейнер из образа (docker run), но с запуском bash и оттуда установил новую версию Hiri. Потом обратно сохранить этот контейнер в образ и создать новый контейнер, но с запуском Hiri.


  1. SilentBob
    03.04.2017 21:39
    +3

    Несколько замечаний:

    1. "… получите исходную конфигурацию...": Нехорошо хранить данные приложения в том же контейнере. Надо их вынести либо в отдельный контейнер (--volumes-from), либо оставить на хосте и подключать через --volume=/host_path:/cont_path.

    2. «Replace 1000 with your user / group id»: Это будет сделано во время строительства образа и «docker run… ktak007/hiri» будет работать далеко не у всех. Лучше использовать docker run… --user="$(id -u):$(id -g)"