Jak mogę skonfigurować i uruchomić PhantomJS na Ubuntu?


163

Skonfigurowałem PhantomJS i nagrałem go na wideo: https://www.dailymotion.com/video/xnizmh_1_webcam

Instrukcje tworzenia: http://phantomjs.org/build.html

Czy coś jest nie tak w mojej konfiguracji?

Po skonfigurowaniu przeczytałem samouczek szybkiego startu i próbowałem napisać ten kod

phantomjs hello.js 

Daje mi błąd „polecenie nie znaleziono”. Jak mogę rozwiązać ten problem?


jaki jest wynik działania whereis phatomjs?
Alex,


daje mi wyjście "phantomjs:"
FURKAN ILGIN

próbowałem to daje mi ten sam błąd :(
FURKAN ILGIN

dziękuję rozwiązałem problem. Problem w tym, że nie mam łącza programowego do mojego programu. Dzięki za pomoc :)
FURKAN ILGIN

Odpowiedzi:


360

Odpowiedź Guidouila postawiła mnie na właściwej drodze. Musiałem dodać jedno dodatkowe dowiązanie symboliczne do / usr / bin / i zrobiłem bezpośrednie dowiązania symboliczne dla wszystkich 3 - patrz poniżej.

Instaluję na serwerze Ubuntu Natty Narwhal.

To jest dokładnie to, co zrobiłem.

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

I wreszcie, kiedy to zrobię

phantomjs -v

Dostaję 1.9.7

Jeśli ktoś zauważy jakiekolwiek problemy z tym, co zrobiłem, daj mi znać.


7
jeśli potrzebujesz tego końcowego linku symbolicznego, to dlatego, że nie masz / usr / local / bin w swojej PATH
DrewB

1
To działa, ale czy ktoś może mi wyjaśnić, dlaczego nie powinniśmy po prostu skopiować i wkleić całej rzeczy do usr/binzamiast tworzyć łącze do /usr/local?
Heisenberg

6
Czy ktoś też otrzymał odmowę pozwolenia?
Użytkownik

1
Aby phantomjs były dostępne z dowolnego katalogu, wystarczy dodać dowiązanie symboliczne do jednego z katalogów wymienionych w zmiennej $ PATH. (uruchom "echo $ PATH", aby zobaczyć, które to są).
Juampy NR

5
Napotkałem ten problem: bin / phantomjs: błąd podczas ładowania bibliotek współdzielonych: libfontconfig.so.1: nie można otworzyć pliku obiektu współdzielonego: nie ma takiego pliku lub katalogu. Tutaj znalazłem poprawkę . Uruchom polecenie:sudo apt-get install libfontconfig
Neil Hoff

110

PhantomJS jest na npm . Możesz uruchomić to polecenie, aby zainstalować je globalnie:

npm install -g phantomjs-prebuilt  

phantomjs -v powinien wrócić 2.1.1


6
+1 na Ubuntu daje wersję 1.9.7w przeciwieństwie do 1.4.0.
opyate

1
+1 za używanie, npmale zobacz moją odpowiedź
Fery Wardiyanto

1
Jeśli bitbucket.org jest blokowany przez Twój serwer proxynpm install phantomjs --phantomjs_cdnurl=http://cnpmjs.org/downloads
79E09796

1
W Ubuntu 14.04 to teraz daje mi 2.1.1.
Joe Mornin

Na Ubuntu 18.04 pojawia się błąd, że powinienem go uruchomić jako root. Dzięki sudotemu działa:sudo npm install -g phantomjs-prebuilt
rubo77

58

pobierz z witryny phantomjs wstępnie skompilowany pakiet: http://phantomjs.org/download.html, następnie otwórz terminal i przejdź do folderu Pobrane

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

następnie sprawdzić, czy instalacja phantomjs -vpowinna powrócić1.8.1


Dlaczego tworzysz link zamiast kopiować wklej bezpośrednio?
Heisenberg

2
Dlaczego miałbyś kopiować wklej bezpośrednio, skoro możesz dowiązać symboliczne? = /
Jared Markell

1
na nowym ubuntu także apt-get install libfontconfig
Ryan Detzel

Mam zainstalowane phantomjs w moim katalogu użytkownika. Selen z tym nie działał. Następnie przeniosłem phantomjs /usr/local/sharei utworzyłem te symboliczne dowiązania. Wtedy zadziałało (mimo że uprawnienia do plików były takie same). Czy ktoś może wyjaśnić temu ekspertowi, który nie jest ekspertem od Linuksa, dlaczego to miało znaczenie?
Peter

38

Zainstaluj z menedżera pakietów:

sudo apt-get install phantomjs

2
Niestety, teraz instaluje 1.4, który jest tak stary, że wiele rzeczy używających phantom.js po prostu nie działa.
Julian Birch

@JulianBirch Tak, myślę, że jeśli masz Ubuntu Saucy Salamander (13.10), możesz pobrać wersję 1.9.0 zgodnie z tym [link] launchpad.net/ubuntu/+source/phantomjs , właśnie zainstalowałem z Raring Ringtail (13.04) i dostaję wersję 1.6.0, jak to też

3
Zainstalowano 1.9.0 na Ubuntu 14.04
Ionică Bizău

6
Ale polecam zainstalować go przez npm install -g phantomjs.
Ionică Bizău

1
Właśnie zainstalowany. Teraz jest 1.9.0.
Strabek

14

Oto kroki budowania, których użyłem (zwróć uwagę, że te instrukcje dotyczą wersji 1.3. Zobacz komentarze do tej odpowiedzi, aby uzyskać instrukcje instalacji najnowszego 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

Teraz zainstaluj Xvfb

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

Uruchom Xvfb:
Xvfb :23 -screen 0 1024x768x24 &

Teraz uruchom phantom:
DISPLAY=:23 ./phantomjs hello.js


16
Te instrukcje są już nieaktualne, w aktualnej wersji (1.5) nie ma potrzeby instalowania ani qt, ani xfvb. Zobacz code.google.com/p/phantomjs/wiki/Installation
michelpm

2
Michel ma rację, należy użyć najnowszej wersji phantoma, ponieważ nie wymaga ona wirtualnego wyświetlacza (Xvfb)
Vijay Boyapati

Odpowiedź Andre była dla mnie szybsza i łatwiejsza.
fooMonster

12

W przypadku wersji PhantomJS powyżej 1.5 rozważ to (dosłowna kopia instrukcji kompilacji na stronie phantom):

W przypadku systemu Ubuntu Linux (przetestowano na prostej instalacji Ubuntu 10.04 Lucid Lynx i 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
Myślę, że należy zauważyć (tak jak jest to na stronie PhantomJS), że budowanie ze źródeł może zająć bardzo dużo czasu (godziny na małej maszynie).
Whymarrh,

1
Należy również zauważyć, że ta odpowiedź rozwiązała problem, który miałem z phantomjs, gdy korzystanie z gotowych plików binarnych nie powiodło się. Kompilacja na dwurdzeniowym wirtualnym systemie Ubuntu 10.04 o pojemności 2 GB zajęła około 1 godziny.
Keith John Hutchison

7

W przypadku Ubuntu możesz użyć wstępnie skompilowanych wersji do pobrania z witryny PhantomJS .

Jeśli masz trochę czasu na poważnie, możesz również sam go zbudować . (To jest dokładnie ta procedura z odpowiedzi Nikhila).

Faceci z PhantomJS zalecają używanie plików binarnych, aby zaoszczędzić czas:

Ostrzeżenie: Kompilacja PhantomJS ze źródła zajmuje dużo czasu, głównie z powodu tysięcy plików w module WebKit. Przy 4 równoległych zadaniach kompilacji na nowoczesnej maszynie cały proces trwa około 30 minut. Zdecydowanie zaleca się pobranie i zainstalowanie gotowego pakietu binarnego, jeśli jest dostępny.

Z nowoczesną maszyną mają na myśli> 4 rdzenie,> 8 GB pamięci. Wypróbowałem to na instancji micro AWS i zrezygnowałem po 2 godzinach.

W skrócie: zainstaluj wstępnie skompilowane pakiety ze strony PhantomJS zgodnie z ich instrukcjami.


4

Osobiste, które wolę używać npm(patrz odpowiedź Arnel Bucio )

sudo npm install -g phantomjs

ale! Zauważyłem, że niektóre npmmoduły nadal nie widzą go jako globalnego pliku wykonywalnego.

wprowadź opis obrazu tutaj

więc!

  • Utwórz nowy /usr/share/phantomjs/link do katalogu

    cd /usr/share
    sudo ln -s ../lib/node_modules/phantomjs/lib/phantom phantomjs
    
  • Usuń stary /usr/bin/phantomjslink wykonywalny i utwórz nowy

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

1
Wykonanie poleceń po zepsuło mi to na Ubuntu 14.04. Działa tylko z npminstalacją i sudo apt-get install libfontconfigpo.
Akshat

4

w moim wędrownym bootstrapie:

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: to byłoby lepsze jako komentarz niż zmiana. „Nie musisz zapomnieć o umieszczeniu wynikowego pliku wykonywalnego z ./build.sh w katalogu, który znajduje się w zmiennej środowiskowej PATH. Można to zrobić za pomocą dowiązania symbolicznego, jak w tym przykładzie”.
rev

Nie musisz zapomnieć o umieszczeniu wynikowego pliku wykonywalnego z ./build.shkatalogu, który znajduje się w zmiennej środowiskowej PATH. Można to zrobić za pomocą łącza symbolicznego, jak w tym przykładzie.
Artjom B.

O tym wszystkie inne odpowiedzi zapominają podczas używania build.sh. Chciałem tylko poprawić twoją odpowiedź, czyniąc ten fakt bardziej widocznym. Jeśli tego nie chcesz, w porządku.
Artjom B.

2

Skończyłem z tym.

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

Z oficjalnej strony: strona 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

W przypadku Ubuntu pobierz odpowiedni plik ze strony http://phantomjs.org/download.html . CD do pobranego folderu. Następnie:

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

Upewnij się, że nazwa pliku w tych poleceniach została zastąpiona pobranym plikiem.


1

Pamiętaj, że jest to zdecydowanie jeden ze sposobów, aby to zrobić:

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

Niestety, instaluje 1.6, a nie najnowszą, ale to działa dla moich celów.


Ta wersja instaluje 1.9.0-1teraz
Sean

1

Wiem, że to jest za stare, ale na wypadek, gdyby ktoś teraz dostał się do tego pytania z Google, możesz go zainstalować, wpisując apt-get install phantomjs


Instaluje X11
eozzy

0

Lub najnowsza - 32-bitowa wersja Linuksa

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

Poniżej opisano procedurę instalacji autorstwa Julio Napurí https://gist.github.com/julionc

Wersja: 1.9.8

Platforma: x86_64

Najpierw zainstaluj lub zaktualizuj do najnowszego oprogramowania systemowego.

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

Zainstaluj te pakiety wymagane przez PhantomJS do poprawnego działania.

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

Pobierz go ze strony internetowej 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

Po pobraniu przenieś folder Phantomjs do / usr / local / share / i utwórz łącze symboliczne:

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

Teraz powinien mieć poprawnie PhantomJS w systemie.

phantomjs --version

0

Znalazłem prostszy sposób - zależności 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

i npm

[sudo] npm install -g phantomjs

Gotowe.


0

W systemie Linux, aby uruchomić hello.js, nie zapomnij dodać ścieżki do hello.js:

phantomjs YourPathToPhantomjsFolder / examples / hello.js


0

Jeśli chcesz łatwo korzystać z phantomjs, możesz użyć go na phantomjscloud.com. Możesz uzyskać wynik po prostu przez żądanie http.


2
W ogóle nie o to prosił PO.
Sujal Mandal

Dziękuję za Twój komentarz. To była moja wina
Shin Kim

0

W systemie Ubuntu dla Windows nie znalazłem apt-getani npmwersji , które mi nie działały. To, co zadziałało, to scenariusz z tego komentarza .

Dla ułatwienia wkleiłem całość do pliku skryptu o nazwie install_phantomjs.sh, nadałem mu plik wykonywalny ( chmod u+x install_phantomjs.sh), a następnie uruchomiłem (./install_phantomjs.sh )


0

W ten sposób umieszczam określoną wersję phantomjs w / usr / local / bin na moich kontenerach docker.

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

lub bez, w ./zależności od systemu operacyjnego.

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

Możesz rozpocząć pracę bez sudolub npm. Wystarczy pobrać , wyodrębnić i dodać do ścieżki .

Ma to dodatkową zaletę w postaci łatwego tworzenia kopii zapasowych, jeśli masz zwyczaj tworzenia kopii zapasowych całego folderu domowego, co bardzo polecam. Działa to również z każdą wersją Linuksa.

➤  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

Wady to:

  1. Konieczna będzie ręczna aktualizacja
  2. Inni użytkownicy nie będą mieli do tego dostępu.

Możesz użyć bardzo prostego skryptu powłoki do instalacji / aktualizacji

#!/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"

Lub w pliku 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

Oto, co zrobiłem na moim komputerze 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

i wreszcie kiedy to zrobię

phantomjs -v

Dostaję 2.1.1

Po przejrzeniu każdej odpowiedzi w tym wątku. Myślę, że jest to najlepsze rozwiązanie do instalowania i uruchamiania phantomjów w systemie Ubuntu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.