【问题标题】:How can I setup & run PhantomJS on Ubuntu?如何在 Ubuntu 上设置和运行 PhantomJS?
【发布时间】:2012-02-05 09:40:24
【问题描述】:

我设置了 PhantomJS 并录制到视频中:https://www.dailymotion.com/video/xnizmh_1_webcam

构建说明:http://phantomjs.org/build.html

我的设置有什么问题吗?

设置完成后,我阅读了quick start tutorial 并尝试编写此代码

phantomjs hello.js 

它给了我“找不到命令”错误。我该如何解决这个问题?

【问题讨论】:

  • whereis phatomjs 的输出是什么?
  • 它给了我“ phantomjs:” 输出
  • 我试过它给了我同样的错误:(
  • 谢谢我解决了这个问题。问题是我的程序没有软链接。感谢您的帮助:)

标签: linux ubuntu installation phantomjs


【解决方案1】:

Guidouil 的回答让我走上了正轨。我必须向 /usr/bin/ 添加一个额外的符号链接,并且我为所有 3 个直接符号链接 - 见下文。

我正在 Ubuntu 服务器 Natty Narwhal 上安装。

这正是我所做的。

cd /usr/local/share
sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2
sudo tar xjf phantomjs-1.9.7-linux-x86_64.tar.bz2
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/share/phantomjs
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/bin/phantomjs

最后当我这样做时

phantomjs -v

我得到 1.9.7

如果有人发现我所做的事情有任何问题,请告诉我。

【讨论】:

  • 如果您需要最终的符号链接,那是因为您的 PATH 中没有 /usr/local/bin
  • 这行得通,但谁能向我解释为什么我们不应该将整个内容复制粘贴到usr/bin 而不是创建指向/usr/local 的链接?
  • 有人也被拒绝了权限吗?
  • 对于任何目录都可以使用 phantomjs,如果您将符号链接添加到 $PATH 变量中列出的目录之一就足够了。 (运行“echo $PATH”查看它们是什么)。
  • 我遇到了这个问题:bin/phantomjs:加载共享库时出错:libfontconfig.so.1:无法打开共享对象文件:没有这样的文件或目录。我找到了修复here。运行命令:sudo apt-get install libfontconfig
【解决方案2】:

PhantomJS 在npm。你可以运行这个命令来全局安装它:

npm install -g phantomjs-prebuilt  

phantomjs -v 应该返回 2.1.1

【讨论】:

  • +1 在 Ubuntu 上这给出了版本 1.9.7 而不是 1.4.0
  • +1 用于使用npm,但请参阅my answer
  • 如果 bitbucket.org 被您的代理阻止 npm install phantomjs --phantomjs_cdnurl=http://cnpmjs.org/downloads
  • 在 Ubuntu 14.04 上,这现在给了我2.1.1
  • 在 ubuntu 18.04 上出现错误,我应该以 root 身份运行它。与sudo 一起工作:sudo npm install -g phantomjs-prebuilt
【解决方案3】:

从 phantomjs 网站下载预编译包: http://phantomjs.org/download.html 然后打开一个终端并转到下载文件夹

sudo mv phantomjs-1.8.1-linux-x86_64.tar.bz2 /usr/local/share/.
cd /usr/local/share/
sudo tar xjf phantomjs-1.8.1-linux-x86_64.tar.bz2
sudo ln -s /usr/local/share/phantomjs-1.8.1-linux-x86_64 /usr/local/share/phantomjs
sudo ln -s /usr/local/share/phantomjs/bin/phantomjs /usr/local/bin/phantomjs

然后检查安装phantomjs -v 应该返回1.8.1

【讨论】:

  • 为什么要创建链接而不是直接复制粘贴?
  • 既然可以符号链接,为什么还要直接复制粘贴? =/
  • 在新的 ubuntu 上也可以 apt-get install libfontconfig
  • 我在我的用户目录中安装了 phantomjs。 Selenium 不适用于此。然后我将 phantomjs 移动到 /usr/local/share 并创建了这些符号链接。然后它起作用了(即使文件权限相同)。谁能向这位非 linux 专家解释为什么这会有所作为?
【解决方案4】:

从包管理器安装:

sudo apt-get install phantomjs

【讨论】:

  • 遗憾的是,现在安装的是 1.4,它太老了,很多使用 phantom.js 的东西都无法正常工作。
  • @JulianBirch 是的,我想如果你有 Ubuntu Saucy Salamander(13.10) 你可以根据这个 [link] launchpad.net/ubuntu/+source/phantomjs 获得 1.9.0 版本,我刚从 Raring Ringtail(13.04 ) 我得到 1.6.0 版本,就像它在链接中所说的那样
  • 在 Ubuntu 14.04 上安装了 1.9.0
  • 但我建议通过npm install -g phantomjs安装它。
  • 刚刚安装。现在是 1.9.0。
【解决方案5】:

这是我使用的构建步骤(请注意,这些说明适用于 1.3 版。有关最新 PhantomJS 的安装说明,请参阅此答案的 cmets):

sudo apt-get update
sudo apt-get install git-core
sudo apt-get install build-essential
sudo apt-get install libqt4-dev libqtwebkit-dev qt4-qmake
git clone git://github.com/ariya/phantomjs.git && cd phantomjs
git checkout 1.3
qmake-qt4 && make

Now install Xvfb

sudo apt-get install xvfb xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic

启动 Xvfb:
Xvfb :23 -screen 0 1024x768x24 &

现在运行幻象:
DISPLAY=:23 ./phantomjs hello.js

【讨论】:

  • 这些指令现在已经过时,在当前版本 (1.5) 中不需要安装 qt 或 xfvb。见code.google.com/p/phantomjs/wiki/Installation
  • Michel 是对的,应该使用最新版本的 phantom 因为它不需要虚拟显示器(Xvfb)
  • 安德烈的回答对我来说更快更容易。
【解决方案6】:

对于 1.5 以上的 PhantomJS 版本,请考虑以下内容(幻像网站上构建说明的逐字副本):

对于 Ubuntu Linux(在 Ubuntu 10.04 Lucid 的准系统安装上测试) Lynx 和 Ubuntu 11.04 Natty Narwhal):

sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.7
./build.sh

【讨论】:

  • 我认为应该注意(就像在 PhantomJS 网站上一样)从源代码构建可能需要 非常长 时间(在小型机器上需要几个小时)。
  • 还应该注意的是,这个答案解决了我在使用预构建二进制文件时遇到的 phantomjs 问题。在 2gb ubuntu 10.04 双核虚拟机上编译大约需要 1 小时。
【解决方案7】:

对于 Ubuntu,您可以使用预构建版本 downloadable from the PhantomJS site

如果您手头有一些严肃的时间,您也可以build it yourself。 (这正是 Nikhil 回答的过程)。

PhantomJS 的人建议使用二进制文件来节省时间:

警告:从源代码编译 PhantomJS 需要很长时间,主要是由于 WebKit 模块中有数千个文件。现代机器上有 4 个并行编译作业,整个过程大约需要 30 分钟。如果有现成的二进制包,强烈建议下载安装。

对于现代机器,我认为它们意味着 > 4 个内核,> 8gb 内存。我在一个微型 AWS 实例上尝试过,2 小时后放弃了。

简而言之:按照他们的说明从 PhantomJS 站点安装预构建的包。

【讨论】:

    【解决方案8】:

    我个人更喜欢使用npm(见Arnel Bucio answer

    sudo npm install -g phantomjs
    

    但是!我注意到一些npm 模块仍然无法将其视为全局可执行文件。

    所以!

    • 新建/usr/share/phantomjs/目录链接

      cd /usr/share
      sudo ln -s ../lib/node_modules/phantomjs/lib/phantom phantomjs
      
    • 删除旧的/usr/bin/phantomjs 可执行链接并创建新的

      cd /usr/bin
      sudo mv phantomjs phantomjs.old
      sudo ln -s ../share/phantomjs .
      

    【讨论】:

    • 在 Ubuntu 14.04 上为我破坏后执行命令。仅适用于 npm 安装和 sudo apt-get install libfontconfig 之后。
    【解决方案9】:

    在我的流浪引导程序中:

    apt-get install -y build-essential chrpath git-core libssl-dev libfontconfig1-dev
    git clone git://github.com/ariya/phantomjs.git
    cd phantomjs
    git checkout 1.9
    echo y | ./build.sh
    ln -s /home/vagrant/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
    cd ..
    

    【讨论】:

    • @artjom b:作为评论比编辑更好。 “您不必忘记将生成的可执行文件从 ./build.sh 放入 PATH 环境变量中的目录中。这可以通过符号链接完成,如本例所示。”
    • 您不必忘记将生成的可执行文件从 ./build.sh 放入 PATH 环境变量中的目录中。这可以通过符号链接完成,如本例所示。
    • 这就是所有其他答案在使用build.sh 时忘记的。我只想通过使这一事实更加明显来改善您的答案。如果你不想要它,没关系。
    【解决方案10】:

    我已经完成了。

    sudo apt-get update
    sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
    git clone git://github.com/ariya/phantomjs.git
    cd phantomjs
    git checkout 1.9
    ./build.sh
    

    【讨论】:

      【解决方案11】:

      查看链接 安装指南在...

      https://gist.github.com/julionc/7476620

      并使用此命令在终端中运行

      phantomjs --webdriver=4444

      【讨论】:

        【解决方案12】:

        来自官网:phantomjs site

        sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
        git clone git://github.com/ariya/phantomjs.git
        cd phantomjs
        git checkout 1.8
        ./build.sh
        

        【讨论】:

          【解决方案13】:

          对于 Ubuntu,从http://phantomjs.org/download.html 下载合适的文件。 CD 到下载的文件夹。那么:

          sudo tar xvf phantomjs-1.9.0-linux-x86_64.tar.bz2
          sudo mv phantomjs-1.9.0-linux-x86_64 /usr/local/share/phantomjs
          sudo ln -s /usr/local/share/phantomjs/bin/phantomjs /usr/bin/phantomjs
          

          确保将这些命令中的文件名替换为您下载的文件。

          【讨论】:

            【解决方案14】:

            请注意,这绝对是一种方法:

            $ sudo apt-get install phantomjs
            $ phantomjs -v
            1.6.0
            

            遗憾的是,它安装的是 1.6 而不是最新的,但这适用于我的目的。

            【讨论】:

            • 现在安装版本1.9.0-1
            【解决方案15】:

            我知道这太旧了,但是,万一有人现在从 Google 得到这个问题,你可以通过键入 apt-get install phantomjs 来安装它

            【讨论】:

            • 安装X11
            【解决方案16】:

            在 Ubuntu for Windows 上,我发现 apt-getnpm 版本都不适合我。有效的是来自this comment 的脚本。

            为了便于使用,我将整个内容粘贴到一个名为 install_phantomjs.sh 的脚本文件中,使其可执行 (chmod u+x install_phantomjs.sh),然后运行它 (./install_phantomjs.sh)

            【讨论】:

              【解决方案17】:

              或者最新的——32位版本的Linux

              sudo wget http://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-i686.tar.bz2
              
              sudo ln -s /usr/local/share/phantomjs-1.9.2-linux-i686/bin/phantomjs /usr/local/share/phantomjs
              
              sudo ln -s /usr/local/share/phantomjs-1.9.2-linux-i686/bin/phantomjs /usr/local/bin/phantomjs
              
              sudo ln -s /usr/local/share/phantomjs-1.9.2-linux-i686/bin/phantomjs /usr/bin/phantomjs
              

              【讨论】:

                【解决方案18】:

                Installation and Calling Phantomjs

                按照步骤操作不起作用,而是从其他人构建的克隆。 (ver2.0)

                【讨论】:

                  【解决方案19】:

                  下面是 Julio Napurí https://gist.github.com/julionc 的安装过程

                  版本:1.9.8

                  平台:x86_64

                  首先,安装或更新到最新的系统软件。

                  sudo apt-get update
                  sudo apt-get install build-essential chrpath libssl-dev libxft-dev
                  

                  安装 PhantomJS 正常工作所需的这些包。

                  sudo apt-get install libfreetype6 libfreetype6-dev
                  sudo apt-get install libfontconfig1 libfontconfig1-dev
                  

                  从 PhantomJS 网站获取。

                  cd ~
                  export PHANTOM_JS="phantomjs-1.9.8-linux-x86_64"
                  wget https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2
                  sudo tar xvjf $PHANTOM_JS.tar.bz2
                  

                  下载后,将 Phantomjs 文件夹移动到 /usr/local/share/ 并创建符号链接:

                  sudo mv $PHANTOM_JS /usr/local/share
                  sudo ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
                  

                  现在,您的系统上应该有正确的 PhantomJS。

                  phantomjs --version
                  

                  【讨论】:

                    【解决方案20】:

                    我找到了这个更简单的方法——幻象依赖+ Npm

                    sudo apt-get update
                    sudo apt-get install build-essential chrpath libssl-dev libxft-dev
                    sudo apt-get install libfreetype6 libfreetype6-dev
                    sudo apt-get install libfontconfig1 libfontconfig1-dev
                    

                    和 npm

                    [sudo] npm install -g phantomjs
                    

                    完成。

                    【讨论】:

                      【解决方案21】:

                      在linux上运行hello.js不要忘记添加hello.js的路径:

                      phantomjs YourPathToPhantomjsFolder/examples/hello.js

                      【讨论】:

                        【解决方案22】:

                        如果你想轻松使用 phantomjs,你可以在 phantomjscloud.com 使用它 通过http请求就可以得到结果。

                        【讨论】:

                        • 这根本不是 OP 要求的。
                        • 感谢您的评论。这是我的错
                        【解决方案23】:

                        这就是我将特定版本的 phantomjs 放置在我的 docker 容器上的 /usr/local/bin 中的方式。

                        curl -Ls https://github.com/Medium/phantomjs/releases/download/v1.9.19/phantomjs-1.9.8-linux-x86_64.tar.bz2 \
                            | tar jxvf - --strip-components=2 -C /usr/local/bin/ ./phantomjs-1.9.8-linux-x86_64/bin/phantomjs
                        

                        或不带./,具体取决于操作系统。

                        curl -Ls https://github.com/Medium/phantomjs/releases/download/v1.9.19/phantomjs-1.9.8-linux-x86_64.tar.bz2 \
                            | tar jxvf - --strip-components=2 -C /usr/local/bin/ phantomjs-1.9.8-linux-x86_64/bin/phantomjs
                        

                        【讨论】:

                          【解决方案24】:

                          您可以在没有sudonpm 的情况下启动并运行。只需下载提取添加到路径

                          如果您有备份整个主文件夹的习惯,我强烈建议您这样做,这还有 轻松备份 的额外优势。这也适用于任何版本的 Linux。

                          ➤  cd ~
                          ➤  wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
                          ➤  mkdir phantomjs
                          ➤  tar xjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C phantomjs
                          ➤  echo 'export PATH="$PATH:$HOME/phantomjs/bin"' >> .profile
                          ➤  source .profile
                          ➤  phantomjs -v
                          2.1.1
                          

                          缺点是:

                          1. 您需要手动升级
                          2. 其他用户将无权访问此内容。

                          您可以使用一个非常简单的 shell 脚本来安装/升级

                          #!/bin/sh
                          # install_phantomjs.sh $VERSION
                          
                          $VERSION = $1
                          printf "Downloading PhantomJS $VERSION...\n"
                          wget "https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$VERSION-linux-x86_64.tar.bz2"
                          
                          printf "Extracting PhantomJS $VERSION to ~/phantomjs...\n"
                          mkdir ~/phantomjs
                          tar xjf phantomjs-$VERSION-linux-x86_64.tar.bz2 -C ~/phantomjs
                          
                          printf "Done! Make sure $HOME/phantomjs/bin is in your path.\n"
                          

                          或者在 Dockerfile 中

                          # Download and setup PhantomJS
                          ENV PHANTOMJS_VERSION 2.1.1
                          RUN curl -fSL "https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2" -o /tmp/phantomjs.tar.bz2 && \
                            mkdir ~/phantomjs && \
                            tar xjf /tmp/phantomjs.tar.bz2 -C ~/phantomjs && \
                            rm /tmp/phantomjs.tar.bz2
                          ENV PATH /home/$USERNAME/phantomjs/bin:$PATH
                          

                          【讨论】:

                            【解决方案25】:

                            这就是我所做的 在我的 ubuntu 16.04 机器上

                            sudo apt-get update
                            sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
                            sudo mv path/where/you/downloaded/phantomjs  /usr/bin
                            

                            最后当我这样做时

                            phantomjs -v
                            

                            我得到 2.1.1

                            看完这个帖子的每一个答案。我认为这是在 ubuntu 中安装和运行 phantomjs 的最佳解决方案。

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 2012-09-11
                              • 1970-01-01
                              • 2018-12-24
                              • 2022-07-20
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多