9

我的系统是 Linux Mint 18.3 Cinnamon 64 位。

我已经使用软件管理器安装了 IntelliJ-IDEA 和 Default-jdk (openjdk-8-jdk)。

/usr/lib/jvm/java-1.8.0-openjdk-amd64当使用文件管理器(Nemo)或/etc/java-8-openjdk终端浏览时,我可以看到我认为是 JDK 文件夹。但这没关系,因为 IntelliJ 无论如何都看不到任何一个文件夹。事实上,当尝试 . 时Select Home Directory for JDK,IntelliJ 似乎只能看到 . 下的 14 个子文件夹(数百个)/usr/lib

甚至不确定如何从命令行使用 启动 IDEA sudo,例如测试问题是否与权限相关,因为它显然是通过 flatpak 替代启动的。

看起来这应该很简单。我不确定我做错了什么。

4

5 回答 5

10

正如其他人所说 - 沙盒是一项功能,而不是错误。

我认为@Kevin Dubois 的回答可能在适用的情况下应该是首选(通过 flatpak 安装您想要共享的东西),但是如果您想继续使用 flatpak ,还有另一个解决方案可以解决这个问题

如何在 flatpak中查找/etc和路径:/usr

如文档本节末尾所述:

  • /etc安装在/var/run/host/etcflatpakked 软件上
  • /usr安装在/var/run/host/usrflatpakked 软件上

如果您需要查找或管理其他路径:

注意:一般来说,给软件尽可能少的额外访问权限是个好主意。这就是为什么在授予对路径的访问权限以使其以只读方式访问时最好使用可选 后缀的原因。如果某些软件滥用其对您设备的访问权限,您也将承担部分责任。:ro

文件系统权限参考中有一些有用的路径变量,还有很多关于文件系统权限的附加信息

图形用户界面选项:

Flatseal看起来很整洁。

CLI 选项:

下面的示例用于管理/var/lib/gemsflatpak 应用程序的路径com.jetbrains.IntelliJ-IDEA-Community

检查当前权限:

flatpak info --show-permissions com.jetbrains.IntelliJ-IDEA-Community

要授予访问权限:

sudo flatpak override --filesystem="/var/lib/gems":ro com.jetbrains.IntelliJ-IDEA-Community

禁止访问:

sudo flatpak override --nofilesystem="/var/lib/gems" com.jetbrains.IntelliJ-IDEA-Community

要将权限重置为初始状态:

sudo flatpak override --reset com.jetbrains.IntelliJ-IDEA-Community
于 2020-01-09T15:01:40.307 回答
9

我在 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

另一种解决方法是 CrazyCoder 提供的解决方案,即使用他们的 tar.gz 安装 IntelliJ。这完全消除了整个沙盒约束。

于 2019-05-03T07:59:36.127 回答
8

您可以尝试从此处安装 IntelliJ IDEA ,看看它是否效果更好。.tar.gz可以使用./idea.sh. Tools请注意,您还可以使用>创建启动器脚本Create Command-line Launcher。这应该适用于任何版本。

于 2019-02-03T07:33:35.947 回答
4

@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 权限。

于 2020-11-27T20:11:31.737 回答
1

防止使用 flatpak 覆盖权限

将 jvm 文件夹移动到主目录中的新文件夹

Flatpak 有特定的黑名单目录,而 home 被列入白名单。

mkdir ~/ForceHome

sudo mv /usr/lib/jvm ~/ForceHome

在 /usr/lib/jvm 中创建符号链接

如果任何文件仍然指向那里,那么您可以使用可以访问该文件夹的程序指向 /usr/lib/jvm。

sudo ln -s ~/ForceHome/jvm /usr/lib/jvm

Intellij中选择sdk时选择/ForceHome/jvm/jdk_version

将 jdk_version 替换为您下载的 openjdk 版本

于 2020-12-09T23:07:03.013 回答