如何在Ubuntu上设置和运行PhantomJS?


163

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

生成说明:http : //phantomjs.org/build.html

我的设置有什么问题吗?

设置好之后,我阅读了快速入门教程并尝试编写此代码

phantomjs hello.js 

它给我“找不到命令”错误。我怎么解决这个问题?


where phatomjs的输出是什么?
Alex


它给了我“ phantomjs:”输出
FURKAN ILGIN 2012年

我试过了,它给了我同样的错误:(
FURKAN ILGIN 2012年

谢谢你,我解决了这个问题。问题是我的程序没有软链接。感谢您的帮助:)
福尔肯·伊尔金

Answers:


360

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

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


7
如果您需要最终的符号链接,那是因为您的PATH中没有/ usr / local / bin
DrewB 2013年

1
这行得通,但是任何人都可以向我解释为什么我们不应该将整个内容复制粘贴到usr/bin而不是创建链接到/usr/local吗?
海森堡

6
有人也被拒绝了吗?
用户

1
要使phantomjs在任何目录中都可用,只要将符号链接添加到$ PATH变量中列出的目录之一就足够了。(运行“ echo $ PATH”以查看它们是哪个)。
Juampy NR 2014年

5
我遇到了这个问题:bin / phantomjs:加载共享库时出错:libfontconfig.so.1:无法打开共享库文件:没有这样的文件或目录。我在这里找到了解决方法。运行命令:sudo apt-get install libfontconfig
Neil Hoff 2014年

110

PhantomJS在npm上。您可以运行以下命令以将其全局安装:

npm install -g phantomjs-prebuilt  

phantomjs -v 应该回来 2.1.1


6
在Ubuntu上+1给出的版本1.9.7而不是1.4.0
opyate 2014年

1
+1使用npm但请参阅我的答案
Fery Wardiyanto 2014年

1
如果您的代理阻止了bitbucket.orgnpm install phantomjs --phantomjs_cdnurl=http://cnpmjs.org/downloads
79E09796

1
在Ubuntu 14.04上,这现在给了我2.1.1
Joe Mornin

在ubuntu 18.04上出现错误,我应该以root用户身份运行它。随着sudo它的工作原理:sudo npm install -g phantomjs-prebuilt
rubo77

58

从phantomjs网站下载预构建的软件包:http ://phantomjs.org/download.html, 然后打开终端并转到Downloads文件夹

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


为什么创建链接而不是直接复制粘贴?
海森堡

2
为什么可以符号链接时直接复制粘贴?= /
Jared Markell 2014年

1
在新的ubuntu上也易于安装libfontconfig
Ryan Detzel 2014年

我在用户目录中安装了phantomjs。硒不起作用。然后,我将phantomjs移至/usr/local/share并创建了这些符号链接。然后它起作用了(即使文件权限相同)。谁能向这个非Linux专家解释为什么这有所作为?
彼得

38

从软件包管理器安装:

sudo apt-get install phantomjs

2
可悲的是,它现在安装了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版本,就像它在链接中也说的那样

3
在Ubuntu 14.04安装1.9.0
尼卡比曹

6
但是我建议通过安装它npm install -g phantomjs
尼卡比曹

1
刚刚安装。现在是1.9.0。
Strabek

14

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

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

现在安装Xvfb

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

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

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


16
这些说明现已过时,在当前版本(1.5)中,无需安装qt或xfvb。见code.google.com/p/phantomjs/wiki/Installation
michelpm

2
Michel是正确的,应该使用最新版本的phantom,因为它不需要虚拟显示(Xvfb)
Vijay Boyapati 2012年

安德烈(Andre)的回答对我来说更快,更容易。
fooMonster

12

对于高于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

3
我认为应该指出(因为它在PhantomJS网站上),从源代码构建可能会花费很长时间(在一台小型计算机上花费数小时)。
Whymarrh 2014年

1
还应该注意的是,当使用预构建的二进制文件失败时,此答案解决了我与phantomjs有关的问题。在2gb ubuntu 10.04双核虚拟机上编译花费了大约1个小时。
基思·约翰·哈奇森

7

对于Ubuntu,您可以使用可从PhantomJS站点下载的预构建版本。

如果您有一些认真的时间,您也可以自己构建它。(这正是Nikhil回答的过程)。

PhantomJS的家伙建议使用二进制文件以节省时间:

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

对于现代计算机,它们意味着> 4核,> 8 gb mem。我在微型AWS实例上进行了尝试,并在2小时后放弃了。

简而言之:按照PhantomJS网站的说明安装预编译的软件包。


4

我更喜欢使用Personaly npm(请参阅Arnel Bucio答案

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 .
    

1
在Ubuntu 14.04上为我破解后执行命令。仅适用于npm安装,以及sudo apt-get install libfontconfig之后。
2014年

4

在我无所事事的引导程序中:

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环境变量中的目录中。可以通过symlink来完成此示例中的内容。”
修订

您不必忘记将生成的可执行文件从./build.sh放入PATH环境变量中的目录中。如本例所示,这可以通过symlink完成。
Artjom B. 2014年

这就是使用时所有其他答案所忘记的build.sh。我只是想通过使这一事实更明显来改善您的答案。如果您不想要它,那很好。
Artjom B. 2014年

2

我已经完成了。

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


1

来自官方网站:phantomjs网站

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

1

对于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

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


1

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

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

可悲的是,它安装了1.6而不是最新版本,但这对我而言有效。


1.9.0-1现在就安装版本
Sean


0

还是最新的-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


0

以下是JulioNapurí的安装步骤 网址为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

0

我发现了这种简单的方法-Phantom依赖项+ 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

做完了


0

在Linux上运行hello.js时,请不要忘记添加hello.js的路径:

phantomjs YourPathToPhantomjsFolder / examples / hello.js


0

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


2
这根本不是OP所要求的。
Sujal Mandal

感谢您的评论。这是我的错
Shin Kim

0

在Ubuntu for Windows中,我发现没有apt-get,也不npm版本为我工作。起作用的是此注释中的脚本。

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


0

这就是我在Docker容器上的/ usr / local / 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

./根据操作系统而定。

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

0

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

这具有以下优点 如果您习惯备份整个主文件夹(我强烈建议您易于备份。这也适用于任何版本的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

0

这是我 在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的最佳解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.