PHPStorm - интегрированная среда разработки от JetBrains для языка программирования PHP. Здесь поддерживаются все возможности IDE от компании JetBrains, плюс можно установить множество плагинов, например, для Laravel или Symfony, которые добавляют подсветку синтаксиса, автодополнение и поиск путей к файлам с учетом особенностей фреймворка.
В этой статье мы рассмотрим как установить PHPStorm в Fedora 41 с помощью Flatpak. А также, поскольку программа выполняется в изолированной среде, то и какие настройки нужны, чтобы IDE имела доступ ко всему необходимому.
Содержание статьи
Как установить PHPStorm в Fedora 41
Традиционным способом установки программ для рабочего стола в Fedora является либо RPM пакет из официальных репозиториев, либо пакет Flatpak. PHPStorm отсутствует в официальных репозиториях, но существует Flatpak пакет, созданный сторонним мейнтейнером.
На момент написания статьи в репозитории доступна версия 2024.3, но если вы хотите использовать более раннюю версию, то можно выбрать нужный коммит в репозитории Flathub, а также запретить обновление до более новой версии, если это необходимо.
1. Добавить репозиторий Flathub
Если репозиторий Flathub еще не добавлен в систему, выполните следующую команду:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
2. Установка пакета
Для установки самой свежей версии PHPStorm выполните команду:
flatpak install com.jetbrains.PhpStorm

3. Выбор версии
Для того чтобы получить предыдущую версию, вам все равно сначала нужно будет установить самую свежую. После установки, чтобы узнать какие версии доступны, необходимо просмотреть историю коммитов репозитория FlatHub для этого пакета с помощью следующей команды:
flatpak remote-info --log flathub com.jetbrains.PhpStorm

Обратите внимание, что каждый коммит не обязательно соответствует другой версии. При этом выводятся все доступные коммиты, более старые увидеть не получится, так как они регулярно удаляются из репозитория для экономии места.
Например, если вы хотите установить версию 2024.1, которая была выпущена с коммитом 429f9b9c8f469cc9044dbdefab6d150e674a4eba7e21143ca5f70edd94a51d20, необходимо обновить пакет до этого коммита следующей командой:
flatpak update com.jetbrains.PhpStorm --commit=429f9b9c8f469cc9044dbdefab6d150e674a4eba7e21143ca5f70edd94a51d20

После такого обновления нужно выполнить следующую команду, чтобы программа не обновлялась до более новой версии при обновлении всех остальных пакетов Flatpak:
flatpak mask com.jetbrains.PhpStorm
4. Первый запуск
Загрузка и установка займет некоторое время, после чего вы сможете запустить программу из главного меню или с помощью команды:
flatpak run com.jetbrains.PhpStorm
После запуска программы, в первом окне можно выбрать Don't Send, чтобы не отправлять данные в JetBrains:

А в следующем нужно либо указать лицензию, либо активировать пробную версию на 30 дней:

После этого программу нужно немного настроить, поскольку она находится в изолированной среде и многое ей будет недоступно.
Настройка PHPStorm в Flatpak
Для настройки разрешений для приложения вам понадобится утилита Flatsel. Для её установки выполните команду:
flatpak install com.github.tchx84.Flatseal
1. Проект JetBrains Flatpak Wrapper
Прежде всего, нужно открыть тестовый проект, который предлагает открыть PHPStorm после установки. Программа спросит открыть его как проект или остаться в легком редакторе. Выберите проект:

А затем выберите саму папку проекта, которую предложит программа. Папка находится в файловой системе Flatpak пакета:

После этого выберите Trust Project, чтобы PHPStorm мог выполнять скрипты в проекте:

2. Ошибка Embedded Browser is Suspended
Эта проблема может препятствовать просмотру превью файлов, а также страница с быстрыми ссылками PHPStorm открываться не будет, поэтому стоит её исправить. Она возникает из-за того, что PHPStorm не может запустить браузер в песочнице из-за ограничений. Подробнее о проблеме можно прочитать тут.

Самое простое решение для Flatpak - отключить песочницу для браузера, поскольку создать профиль AppArmor из Flatpak программы не получится. Для этого фактически необходимо нажать кнопку Enable Browser..., а затем Disable Sandbox.

Программа сама сохранит необходимые настройки, после чего её нужно будет перезапустить. Фактически будет добавлена опция ide.browser.jcef.sandbox.enable в файл ~/.var/app/com.jetbrains.PhpStorm/config/JetBrains/PhpStorm2024.3/options/ide.general.xml со значением false:
<entry key="ide.browser.jcef.sandbox.enable" value="false" source="SYSTEM" />
3. Установка SDK
Теперь можно открыть проект JetBrains Flatpak Wrapper, который содержит README файл о Flatpak версии программы. Здесь есть несколько полезных советов:

Во-первых, если вам понадобится поддержка дополнительных языков программирования, их нужно установить с помощью Flatpak, так как системные исполняемые файлы программа видеть не будет. Например, для PHP8.4 и Node 22 нужно выполнить:
flatpak install flathub org.freedesktop.Sdk.Extension.php84
flatpak install flathub org.freedesktop.Sdk.Extension.node22

Затем их необходимо активировать с помощью переменной окружения, которую нужно задать для контейнера приложения:
flatpak override --user com.jetbrains.PhpStorm --env=FLATPAK_ENABLE_SDK_EXT="php84,node22"
То же самое можно сделать добавив соответствующую переменную окружения для программы с помощью Flatseal:

После внесения изменений PHPStorm нужно перезапустить. Это позволит не устанавливать эти языки в основной системе. По умолчанию терминал PHPStorm теперь открывается в контейнере. Вы можете убедиться, что исполняемый файл PHP доступен в терминале PHPStorm, но не доступен в системе.
4. Терминал хост-системы в PHPStorm
Если вы хотите работать с терминалом хост системы в PHPStorm, необходимо использовать функцию flatpak-spawn для запуска процесса bash в хост системе. Но сам исполняемый файл flatpak-spawn имеет несколько проблем, из-за которых терминал хоть и будет работать, но будет показывать ошибки:
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Поэтому лучше использовать утилиту host-spawn, которая использует тот же механизм, но выделяет TTY и корректно обрабатывает переменную окружения $TERM, хотя пока не поставляется в пакете с PHPStorm. Но это не очень большая проблема, так как в PHPStorm есть доступ к домашней папке пользователя и утилиту можно разместить там. Для загрузки выполните:
wget https://github.com/1player/host-spawn/releases/download/v1.6.1/host-spawn-x86_64
После этого переместите файл, например, в ~/.local/bin/:
mkdir ~/.local/bin/
mv host-spawn-x86_64 ~/.local/bin/host-spawn
И сделайте его исполняемым:
chmod ugo+x ~/.local/bin/host-spawn
В PHPStorm откройте Settings -> Tools -> Terminal и пропишите в Shell Path следующую команду (разумеется, username нужно заменить на логин вашего пользователя):
/home/username/.local/bin/host-spawn bash

После этого можете попробовать снова открыть терминал в IDE, и теперь ошибок не будет, а также будут поддерживаться цвета как в обычном терминале. Но это уже нужно делать в обычном проекте, который находится в вашем домашнем каталоге.
5. Доступ к папкам
Как я и писал ранее, PHPStorm в Flatpak имеет доступ только к домашней папке пользователя. Если вы хотите предоставить программе доступ к какой-либо другой папке вне домашней, например /mnt/share, то для этого нужно воспользоваться следующей командой:
flatpak override --user com.jetbrains.PhpStorm --filesystem=/mnt/share
То же самое можно сделать с помощью Flatseal, добавив нужную папку в список Other files в разделе Filesystem:

Удаление PHPStorm
Для того чтобы удалить PHPStorm, установленный с помощью Flatpak, выполните:
flatpak remove com.jetbrains.PhpStorm
По умолчанию команда удалит только пакет программы, а данные останутся. Для того чтобы удалить также и данные добавьте опцию --delete-data:
flatpak remove --delete-data com.jetbrains.PhpStorm
Выводы
Как видите, установка программы с помощью Snap значительно проще, так как там нет никакой изоляции. Flatpak требует гораздо больше настроек, но и даёт больше контроля над программой. Мы не рассмотрели установку из архива, загруженного с официального сайта, или с помощью JetBrains Toolbox, но эта информация и так есть на сайте программы.