是否可以在远程服务器(Linux RedHat 4.4.7-17)上更改我的默认浏览器(lynx)? (使用 Gadfly 在 Julia 中绘图)
Posted
技术标签:
【中文标题】是否可以在远程服务器(Linux RedHat 4.4.7-17)上更改我的默认浏览器(lynx)? (使用 Gadfly 在 Julia 中绘图)【英文标题】:Is it possible to change my default browser (lynx) on a remote server (Linux RedHat 4.4.7-17)? (Plotting in Julia using Gadfly) 【发布时间】:2016-06-27 11:37:31 【问题描述】:我正在使用 julia 和 gadfly 在远程服务器(通过 Putty 连接)上绘制一些图,并且这些图应该在我的默认服务器中打开。它们在 lynx 中打开,因此看起来并不像任何东西。我假设 lynx 是我工作服务器上的默认浏览器,我想知道是否有任何方法可以在 chrome 或 firefox 中打开它们?我不是服务器管理员,无权使用所有命令(即 sudo 等)。
尝试使用 xdg-utils 时,我收到一条错误消息,提示“找不到命令”,并且我的 /usr/.local/applications 中没有任何应用程序,也无法在目录中找到 mimeapps.list。
我能做些什么来在另一个互联网浏览器而不是 lynx 中打开这些图吗?谢谢!
【问题讨论】:
我个人是 Julia 的 PyPlot 的粉丝,因为它不像 Gadfly 那样对浏览器有烦人的依赖。 【参考方案1】:偏好顺序
如果可以的话,牛虻会在 Julia 的显示器上绘图(例如,如果您使用带有 Jupyter 的交互式图形笔记本)。
如果在 REPLDisplay 上没有合适的渲染方式,Gadfly 会将绘图保存到文件中,然后触发一些特定于平台的“打开此文件”逻辑。
朱莉娅自己的展示
这几乎可以肯定是最好的选择。如果您在知道如何显示绘图的环境中运行 Julia 代码(例如带有 Jupyter 的交互式图形笔记本),那么您无需再做任何事情。
如果您必须从文本提示符运行您的 Julia 代码,您可以使用基于文本的后端渲染器,或处理回退过程。
xdg-打开
Gadfly 的后备显示代码使用xdg-open
在基于 Linux 的系统上显示绘图文件。
xdg-open
工具是名为xdg-utils
的软件包的一部分。 xdg-utils
包包含多个命令,但 xdg-utils
本身不是命令——这就是为什么尝试运行“xdg-utils”失败并显示“找不到命令”的原因。
xdg-open
有自己的打开链:它将尝试特定于 GNOME、KDE 或您使用的任何桌面环境的打开过程。它回退到一种叫做“perl-shared-mimeinfo”的东西。
xdg-utils
包中的另一个工具是xdg-mime
,它可以查询当前文件关联以及更改它们。您需要管理员权限才能更改系统范围的关联,但不需要任何特殊权限即可添加您自己的每用户关联。
由于 Gadfly 正在写入文件,然后要求 xdg-open
打开文件,因此您需要处理文件类型(而不是“浏览器”或 URL 处理程序)。对于 html 文件,它可能看起来像这样:
$ xdg-mime default mybrowser.desktop text/html
哪台计算机运行浏览器?
现在,您提到您正在使用 SSH 和 PuTTY 连接到此服务器。 PuTTY 为您的服务器提供了一个基于文本的界面——即使服务器上安装了像 Firefox 这样的图形浏览器,PuTTY 也无法显示它。 (您的计算机上还需要其他东西,服务器可以使用它来绘制浏览器窗口。)
使用计算机自带的浏览器可能会更舒服。
那我该怎么办?
无论如何,启动浏览器对于服务器计算机来说有点奇怪,而且要做到这一点可能很繁琐。所以我的建议是:
跳过 PuTTY,直接在 Jupyter 笔记本中显示。 将您的输出保存为 HTML(或 SVGJS),以便您的计算机浏览器可以访问它。【讨论】:
谢谢 RJ,我在终端中设置了BROWSER=echo
并从路径启动了 julia,使用 Gadfly 我尝试绘制 plot([sin,cos], 0, 25)
并且它仍然在 lynx 中打开它。这是由于朱莉娅环境变量吗?我四处搜索,看看 julia 中是否有可以设置为echo
的浏览器变量,但什么也没找到。目前我正在使用;
使绘图函数的输出静音并将绘图保存为PNG,这似乎工作正常,但图片不是交互式的。我也可以将它们另存为 js.svg,但是处理这么多数据时速度很慢。
我进行了一些研究,但我的建议似乎不合时宜:Gadfly 不是尊重$BROWSER
的应用程序之一。它始终使用 xdg-open(或其他平台上的等效项),并且始终使用文件名(而不是 URL)。我会尽快更新我的答案。以上是关于是否可以在远程服务器(Linux RedHat 4.4.7-17)上更改我的默认浏览器(lynx)? (使用 Gadfly 在 Julia 中绘图)的主要内容,如果未能解决你的问题,请参考以下文章
redhat enterprixe 5.0 NFS服务配置与管理