Linux Mint 18.3 Cinnamon 64-bit
我已经使用软件管理器安装了IntelliJ-IDEA和Default-jdk(openjdk-8-jdk)。
当使用文件管理器(Nemo)或终端浏览时,我可以看到我认为是/usr/lib/jvm/java-1.8.0-openjdk-amd64
或/etc/java-8-openjdk
下的JDK文件夹。但这并不重要,因为IntelliJ无论如何都看不到这两个文件夹。事实上,当尝试为JDK选择主目录时,IntelliJ似乎只能看到/usr/lib
下的14个子文件夹(数百个子文件夹中的14个子文件夹)。
甚至不知道如何使用sudo
从命令行启动IDEA,例如测试该问题是否与权限相关,因为它显然是通过flatpak间接启动的。
看起来应该很简单。我不知道我做错了什么。
5条答案
按热度按时间pkln4tw61#
正如其他人所说的-沙箱是一个功能,而不是一个错误。
我认为@Kevin Dubois的答案可能更适合(通过flatpak安装您想要共享的东西),但如果您想继续使用flatpak,则还有另一种解决方案
如何在flatpak中找到
/etc
和/usr
路径:如本文档本节末尾所述:
/etc
安装在/var/run/host/etc
上,用于flatpakked软件/usr
安装在/var/run/host/usr
上,用于flatpakked软件如果您的应用还没有
--filesystem=host:ro
权限,您还需要向其授予该权限(请参阅下文的操作方法)。如果需要查找或管理其他路径:
**注意:*通常情况下,最好尽可能少地给予软件提供额外的访问权限。这就是为什么在授予路径访问权限时,最好使用 optional
:ro
后缀,以使其以 * 只读 * 方式访问。 如果某些软件滥用了对您设备的访问权限,您 * 也将承担部分责任。文件系统权限参考中有一些有用的路径变量,这里还有很多关于文件系统权限的附加信息。
GUI选项:
Flatseal是最方便的选项。
它只管理用户级别的权限,因此如果您需要更改所有用户的设置(通常不会),请转到下一节。
CLI选项:
下面的示例用于管理flatpak应用程序
com.jetbrains.IntelliJ-IDEA-Community
的路径/var/lib/gems
。最后3个命令带有--user
标志,用于用户级别的更改。如果没有标志,并且sudo
前置,则更改将应用于所有用户。查看当前权限:
访问权限:
禁止访问:
将权限重置为初始状态:
slhcrj9b2#
我在Fedora 29上安装了IntelliJ和Flatpak,也遇到了同样的问题。我相信(如果我错了,请纠正我)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。大多数应用程序需要访问其中的一些资源才能使用。这主要是在完成构建阶段完成的,可以通过清单文件的finish-args部分进行配置(请参阅清单)。
解决这个问题的一种方法是使用flatpak安装JDK版本,例如。
另一种解决方法是CrazyCoder提供的解决方案,即使用其tar.gz安装IntelliJ。这完全消除了整个沙箱约束。
sz81bmfz3#
您可以尝试从here安装IntelliJ IDEA,看看它是否工作得更好。
.tar.gz
发行版可以使用./idea.sh
启动。请注意,您还可以使用工具〉创建命令行启动器创建启动器脚本。这应该适用于任何版本。ljo96ir54#
@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权限。
r7knjye25#
防止flatpak覆盖权限
将jvm文件夹移动到主目录下的新文件夹
Flatpak有特定的黑名单目录,而home则被列入白名单。
在/usr/lib/jvm中创建符号链接
这是为了防止任何文件仍然指向那里,因此您可以使用可以访问该文件夹的程序指向/usr/lib/jvm。
在Intellij中选择sdk时选择/ForceHome/jvm/jdk_version
用你下载的openjdk版本替换jdk_version