【问题标题】:xdg-open : no method available even after installing xdg-utilsxdg-open :即使在安装 xdg-utils 后也没有可用的方法
【发布时间】:2014-09-01 05:20:35
【问题描述】:

我正在使用 generator-angular-fullstack。 在我的本地机器上它工作正常,我运行

 grunt serve

它启动了服务器,但在 VPS 中它失败了

Warning: Command failed: xdg-open: no method available for opening 'http://localhost:9000'

我已经安装了 xdg-utils

 $ sudo apt-get install xdg-utils
 Reading package lists... Done
 Building dependency tree       
 Reading state information... Done
 xdg-utils is already the newest version.

谁能解释我做错了什么?

【问题讨论】:

  • 您确定安装了xdg-open 吗?尝试从控制台运行它。第二个建议:尝试将主机名更改为“0.0.0.0”。请向我们展示 Gruntfile。

标签: express gruntjs yeoman xdgutils


【解决方案1】:

我不是xdg-open 的专家,但我会尝试一下。您的包裹数据库似乎有问题。此外,显示 gruntfile 会使事情变得更容易。

以下是要遵循的步骤:

  1. 识别所有xdg-open

    $ type -a xdg-open

    xdg-open is /usr/bin/xdg-open

  2. 找出它们属于哪些软件包。

    $ dpkg -S /usr/bin/xdg-open

    xdg-utils: /usr/bin/xdg-open

  3. 您需要对type -a 返回的每个匹配项重复上述dpkg -S .. 改用此dpkg -S .. 搜索。我会一次做一个。

    $ dpkg -S xdg-open

    xdg-utils: /usr/bin/xdg-open

    xdg-utils: /usr/share/man/man1/xdg-open.1.gz

  4. 重新安装 xdg-utils。如果您想刷新此软件包的安装,请执行以下操作:

    $ sudo apt-get install --reinstall xdg-utils

我希望这会有所帮助!

【讨论】:

  • 重新安装包的正确方法是sudo apt-get install --reinstall xdg-utils
  • @sdotdi 请参阅我回答的第 4 步
  • 复制并粘贴到终端,直到你明白我的意思。
【解决方案2】:

您是否尝试过配置 xdg-open 处理程序?

另外,您是否确保您的服务器上安装了浏览器?使用apt-get install <browser> 安装新浏览器应该会自动让xdg-open 意识到它。但是,根据您的浏览器/xdg-utils 的安装顺序,您的设置可能没有这样做。

要让事情恢复正常,需要运行xdg-settings

要将http:// 处理程序设置为您的首选浏览器(在无头服务器上可能是w3mlynxelinks),请执行以下操作:

xdg-settings set default-web-browser w3m.desktop

要验证,您可以运行xdg-open https://stackoverflow.com/questions/24683221,您应该会在 w3m 中看到答案。

如果您没有可用的w3m,请使用sudo apt-get install w3m 安装它

您可能希望通过运行xdg-settings --list 来查看其他可用的处理程序,它在我的系统上输出以下内容:

Known properties:
  default-url-scheme-handler    Default handler for URL scheme
  default-web-browser           Default web browser

编辑: 原来有些老系统(ubuntu 10.04)没有xdg-settingsupdate-alternatives命令应该自动配置xdg-open。像这样:

    sudo update-alternatives --config www-browser

【讨论】:

    【解决方案3】:

    您使用的是图形环境吗?如果您使用“raspberry”并且您通过 ssh 连接并且没有配置“grunt”以使用 PhantomJS,则“Grunt”无法执行该任务。你必须强迫他继续“服务--force grunt”或设置“Gruntfile.js”

    【讨论】:

    • 由于这个问题很久以前我无法测试答案。是的,我没有使用 GUI 界面。也许这就是原因。
    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2013-09-24
    • 2017-12-23
    • 2019-11-13
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多