Jas*_*son 8 java ubuntu intellij-idea linux-mint flatpak
我的系统是 Linux Mint 18.3 Cinnamon 64 位。
我已经使用软件管理器安装了 IntelliJ-IDEA 和 Default-jdk (openjdk-8-jdk)。
在使用文件管理器 (Nemo) 或终端浏览/usr/lib/jvm/java-1.8.0-openjdk-amd64
或/etc/java-8-openjdk
浏览时,我可以看到我认为是 JDK 文件夹的内容。但这并不重要,因为 IntelliJ 无论如何都看不到任何一个文件夹。事实上,在尝试时Select Home Directory for JDK,IntelliJ 似乎只能看到/usr/lib
.
甚至不确定如何从命令行使用 启动 IDEA sudo
,例如测试问题是否与权限相关,因为它显然是通过 flatpak 替代启动的。
看起来这应该很简单。我不确定我做错了什么。
小智 8
我在 Fedora 29 上安装了 Flatpak 的 IntelliJ 遇到了同样的问题。我相信(但如果我错了,请纠正我)Linux Mint 的软件管理器也使用 flatpak。
事实证明,由于 Flatpak 沙箱应用程序的方式,这是“这是一个功能而不是错误”的情况之一。根据http://docs.flatpak.org/en/latest/sandbox-permissions.html 上的文档:
沙盒权限 Flatpak 的主要目标之一是通过将应用程序彼此隔离来提高桌面系统的安全性。这是使用沙箱实现的,这意味着默认情况下,使用 Flatpak 运行的应用程序对主机环境的访问极其有限。这包括:
除了运行时、应用程序和 ~/.var/app/$APPID 之外,无法访问任何主机文件。只有最后一个是可写的。无法访问网络。无法访问任何设备节点(除了 /dev/null 等)。无法访问沙箱外的进程。有限的系统调用。例如,应用程序不能使用非标准网络套接字类型或 ptrace 其他进程。对会话 D-Bus 实例的访问受限 - 应用程序只能在总线上拥有自己的名称。无法访问 X11、系统 D-Bus 或 PulseAudio 等主机服务。大多数应用程序需要访问其中一些资源才能发挥作用。这主要在完成构建阶段完成,可以通过清单文件的完成参数部分进行配置(请参阅清单)。
解决此问题的一种方法是也使用 flatpak 安装 JDK 版本,例如。
flatpak install flathub org.freedesktop.Sdk.Extension.openjdk9 org.freedesktop.Sdk.Extension.openjdk10 org.freedesktop.Sdk.Extension.openjdk11
Run Code Online (Sandbox Code Playgroud)
另一种解决方法是 CrazyCoder 提供的解决方案,即使用他们的 tar.gz 安装 IntelliJ。这完全消除了整个沙箱约束。
As others said - sandboxing is a feature not a bug.
I think @Kevin Dubois' answer should perhaps be preferred where applicable (installing via flatpak the thing you want to share), but there is another solution to this problem if you would like to continue using flatpak
/etc
and /usr
paths in a flatpak:As mentioned at the end of this section of the documentation:
/etc
is mounted at /var/run/host/etc
for the flatpakked software/var
is mounted at /var/run/host/var
for the flatpakked softwareNB: It is generally a good idea to give software as little extra access as possible. That's why it is preferable to use the optional :ro
suffix when granting access to a path to make it accessible in read-only. You will also be partly responsible if some software abuses the access it has to your device.
文件系统权限参考中有一些有用的路径变量,这里有很多关于文件系统权限的附加信息。
Flatseal看起来很整洁。
以下示例用于管理/var/lib/gems
flatpak 应用程序的路径com.jetbrains.IntelliJ-IDEA-Community
。
flatpak info --show-permissions com.jetbrains.IntelliJ-IDEA-Community
Run Code Online (Sandbox Code Playgroud)
sudo flatpak override --filesystem="/var/lib/gems":ro com.jetbrains.IntelliJ-IDEA-Community
Run Code Online (Sandbox Code Playgroud)
sudo flatpak override --nofilesystem="/var/lib/gems" com.jetbrains.IntelliJ-IDEA-Community
Run Code Online (Sandbox Code Playgroud)
sudo flatpak override --reset com.jetbrains.IntelliJ-IDEA-Community
Run Code Online (Sandbox Code Playgroud)
小智 5
@Carolus 对安装目录的提示对我来说非常有效:在我的 Linx Mint 上,jdk 已安装在 /usr/lib/jvm/java-11-openjdk 中。
(通过使用“which java”并将结果与“readlink -e”一起使用来找到)
在 Idea addJdk 对话框中选择 /var/run/host/usr/lib/jvm/java-11-openjdk ,它可以工作!不需要更改 flatpak 权限。