Installieren Sie Popcorn Time aus den Quelldateien

28

Wie kann ich Popcorn Time Beta installieren ?

Ich sehe auf ihrer Website, dass sie nur 64-Bit-Installationsdateien anbieten, aber die Quellen sind offen.

Ich kann das Übliche nicht benutzen ./configure && make. Was kann ich also tun ?

MrVaykadji
quelle
Ich bin auf 64-Bit-xubuntu 14.04, habe das Beta-3.0-Paket von der Website heruntergeladen, es entpackt und ausgeführt. ./Popcorn-TimeEs sind ungefähr 20 Minuten vergangen initializing popcorn please wait. Wird es irgendwann funktionieren oder sollte ich Ihren Anweisungen folgen, damit es funktioniert? zu warten?
Lynob
es wird nicht funktionieren, die Initialisierung dauert bei mir ca. 0,3sec. Das Problem muss woanders liegen. Ich verstehe nicht, wie sich dies ab dem offiziellen Release ändern würde, sondern dass es auf dem Entwicklungscode (Alpha) basiert. Probleme
melden
Ich habe versucht, Ihrer zweiten Antwort zu folgen, habe versucht, die Python-Datei zu reparieren, in der Hoffnung, die Fehler zu beheben, habe nicht funktioniert, ich bin Ihrer ersten Antwort gefolgt und es hat funktioniert, danke. Bitte beachten Sie, dass es nett wäre, wenn Sie Ihr Skript bearbeiten könnten, um zu überprüfen, ob die Abhängigkeiten installiert sind. Ich habe sie vor dem Ausführen Ihres Skripts installiert. Dennoch hat Ihr Skript 5 Minuten gebraucht, um sie zu installieren. Dieser Teil könnte leicht übersprungen werden. Und bitte entfernen Sie die install allOption, da man nicht gleichzeitig Mac und Win und Linux ausführen kann. Diese Option verschwendet nur Zeit, niemand kann sie verwenden
Lynob
Äh, warum konnte man kein MacBook Air und keinen PC mit Ubuntu-Fenstern haben? Das ist der springende Punkt der Option, wählen zu können. Sie sollten nicht "all" eingeben, wenn Sie nicht möchten, dass "all" erstellt wird. Wenn es sich bei den Abhängigkeiten um Node-Js handelt und diese bereits vorhanden sind, werden Sie nur ein 'Apt-Get-Update' durchführen, keine große Sache. Wenn es sich um npm-Abhängigkeiten handelt, müssen diese im Ordner installiert werden, wenn wir sie verwenden, und nicht an einer anderen Stelle auf dem Computer. Daher ist dies erforderlich.
MrVaykadji
Aber sie haben bereits Pakete für Windows und Mac auf ihrer Website. arbeiten sie nicht Müssen sie wie ein Linux-Paket erstellt werden?
Lynob

Antworten:

21

Mit diesem Skript können Sie Popcorn Time dev-0.3 unter Ubuntu Linux aus den Github-Quellen erstellen .

Es funktioniert einwandfrei auf Ubuntu 12.04 und 14.04 64bit, sollte aber mit jeder gepflegten Version und jeder Architektur funktionieren.

Zum Erstellen und Installieren von Popcorn-Time aus Quellen benötigen Sie nodejsund npm. npmbenutzt bowerund grunt-clium die Dateien zu erstellen: deshalb kann man nicht das übliche benutzen./configure

Hinweis: Derzeit gibt es 1 Fehler bei den Installationsdateien: nodejsWenn die Binärdatei einen falschen Namen hat, können Sie diesen durch einen einfachen Symlink von 'nodejs' zu 'node' beheben.

Hinweis: Am 12.04 gibt es keine libudev.so.1, daher müssen wir sie mit libudev.so.0 verknüpfen

WIE MAN

  1. Kopieren Sie die folgenden Zeilen und fügen Sie sie in eine Textdatei ein. Ich bezeichne sie als Skript für das Beispiel.

  2. Verwenden Sie dann Ihr Terminal und starten Sie das Skript:

    bash script
    
  3. Folgen Sie den Anweisungen auf dem Bildschirm:

    • Akzeptieren Sie den Haftungsausschluss
    • Wähle die Plattform, für die du bauen möchtest (Mac, Win, Linux32-64)
    • Installieren Sie Popcorn-Time mit Verknüpfungen und Befehlszeilenoptionen, wenn Sie möchten
    • Entfernen Sie Gebäudedateien, wenn Sie sie nicht mehr benötigen
    • Entfernen Sie die Pakete, die von diesem Skript zum Erstellen von PT verwendet werden, wenn Sie sie in Zukunft nicht mehr benötigen
    • voila.

Dies dauert ca. 10-30 Minuten.


#!/bin/bash
#Written by MrVaykadji - http://github.com/MrVaykadji
#Thanks to Andrew for func_apt, nodejs PPA and libudev fix - http://webupd8.org
#licensed under GPLv3
#for Ubuntu 12.04 and newer

installdir="/opt"
version="master"
OfficialURL="http://popcorntime.io"
githubURL="https://github.com/popcorn-official/popcorn-app"
issueURL="https://github.com/popcorn-official/popcorn-app/issues"
icon="https://github.com/popcorn-official/popcorn-app/raw/master/src/app/images/icon.png"
log="$HOME/popcorn-build.log"
buildscriptURL="https://raw.githubusercontent.com/MrVaykadji/misc/master/Popcorn-Time/0.3.0/"
buildscript="build-popcorn"
[ $(arch) == "x86_64" ] && arch=64 || arch=32
buildtime="`date +%Y.%m.%d-%Hh%M`"

#FUNCTIONS
func_apt() {
for lock in synaptic update-manager software-center apt-get "dpkg " aptitude
do
 if ps -U root -u root u | grep "$lock" | grep -v grep > /dev/null; then 
  echo "
Unexpected Error:
=================
Please close $lock then try again.";
  exit 1
 fi
done 
}

func_root() {
[ "$EUID" == "0" ] && 
echo "Error. You need to run this without 'root' or 'sudo' privileges." && 
exit 2
}

func_error() {
[ -n $error ] && return 0
echo "
Unexpected Error:
================="
cat $log
echo "
Please try again."
exit 1 
}

func_clean() {
case $1 in 
    -save)
        sudo mkdir -p /tmp/popcorn-config
        sudo cp -r $HOME/.config/Popcorn-Time/data /tmp/popcorn-config/ &> /dev/null
        sudo rm -rf $HOME/.config/Popcorn-Time/*
        sudo cp -r /tmp/popcorn-config/data $HOME/.config/Popcorn-Time/ &> /dev/null && 
        sudo chown -Rf $USER:$USER $HOME/.config/Popcorn-Time/data && 
        sudo chmod -R 774 $HOME/.config/Popcorn-Time/data
        ;;
    -all)
        sudo rm -rf $installdir/Popcorn-Time /usr/share/pixmaps/popcorntime.png /usr/bin/popcorn-time $HOME/tmp $HOME/popcorn-app-$version $HOME/npm-debug.log $HOME/.npm $HOME/.cache/bower $HOME/.config/configstore/insight-bower.yml $HOME/.config/configstore/update-notifier-bower.yml $HOME/.local/share/bower $log $HOME/$version.zip $HOME/.npm/
        ;;
    -package)
        sudo apt-get purge nodejs -y &> /dev/null && 
        sudo apt-get autoremove -y &> /dev/null && 
        sudo rm -rf /usr/bin/node && 
        sudo add-apt-repository -yr ppa:chris-lea/node.js &> /dev/null && 
        echo -e "... Done.\n" 
        ;;
    -building)
 sudo rm -rf $HOME/tmp $HOME/popcorn-app-$version $HOME/npm-debug.log $HOME/.npm $HOME/.cache/bower $HOME/.config/configstore/insight-bower.yml $HOME/.config/configstore/update-notifier-bower.yml $HOME/.local/share/bower $log $HOME/.npm && 
        echo -e "... Done.\n"
        ;;
esac
}

func_ptexists() {
if [ "$1" == "-update" ] ; then
    func_clean -save
else
    [ -e "$installdir/Popcorn-Time" ] && 
    read -p "
WARNING: Popcorn-Time is already installed in '$installdir' and will be erased. Do you want to keep the configuration files (bookmarks, watched list, settings, ...) [y/n] ? "
    if [ "$REPLY" == "y" ] ; then
        func_clean -save
    else    
        sudo rm -rf $HOME/.config/Popcorn-Time/
    fi
    sudo rm -rf /usr/share/applications/popcorn-time.desktop
fi
func_clean -all
}

func_dependencies() {
#package dep
[[ -n `egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* | grep chris-lea/node.js` ]] && nodeppa=1 || nodeppa=0
if [ -n "`dpkg-query -W -f='${Status}\n' nodejs wget unzip | grep not`" ] || [ $nodeppa == "0" ] ; then
    echo "- Checking for dependencies 'nodejs', 'wget' and 'unzip'..."
    sudo apt-add-repository -y ppa:chris-lea/node.js &> $log && 
    sudo apt-get update &> $log

    sudo apt-get install nodejs wget unzip -y &> $log && echo -e "  ...Ok !" || error=1
    func_error
fi

#npm dep
if [ -e "/usr/lib/node_modules/bower" ] && [ -e "/usr/lib/node_modules/grunt-cli" ] ; then
    echo -e "\n- Updating NPM 'grunt-cli' and 'bower'..."
else
    echo -e "\n- Installing NPM 'grunt-cli' and 'bower'..."
fi
sudo npm install -g grunt-cli bower &> $log && echo -e "  ...Ok !\n" || error=1
func_error

#repair broken nodejs symlink
[ ! -e /usr/bin/node ] && sudo ln -s /usr/bin/nodejs /usr/bin/node 

#symlink libudev.so on 12.04
[ `lsb_release -cs` == "precise" ] && [ ! -e /lib/$(arch)-linux-gnu/libudev.so.1 ] && sudo ln -s /lib/$(arch)-linux-gnu/libudev.so.0 /lib/$(arch)-linux-gnu/libudev.so.1 
}

func_build() {
#get sources
echo "- Downloading sources (branch:$version) from GitHub..."
cd
wget $githubURL/archive/$version.zip -O $version.zip &> $log && unzip -o $version.zip &> $log && rm $version.zip && echo -e "  ...Ok !\n" || error=1
func_error

#npm
cd popcorn-app-$version
echo "- Running 'npm install'..."
sudo chown -Rf $USER:$USER $HOME/popcorn-app-$version/ $HOME/tmp $HOME/.npm
npm install --yes &> $log && echo -e "  ...Ok !\n" || error=1
func_error

#build
if [ "$1" == "-update" ] ; then
 buildcommand="linux$arch"
else
 buildvar=0
 echo -e "You can build for this machine only (linux$arch) or for all platforms, including : Mac, Windows, Linux 32-bits, Linux 64-bits.\n\nFor what platforms do you wish to build (for multiple builds, separate each platform with a comma)"
 read -p "[mac/win/linux32/linux64/all] : " input
 IFS=',' read -a options <<< "$input"
 shopt -s extglob
 for option in "${options[@]}"; do
    case "$option" in
        win|mac|linux32|linux64|all)
            buildcommand="${buildcommand:+$buildcommand,}$option"
            buildvar=1;;
        *)
            printf 'Invalid option "%s" ignored.\n' "$option";;
    esac
 done
 if (( !buildvar )); then
    echo "Incorrect input. Default build 'linux$arch' selected."
    buildcommand="linux$arch"
 fi
 [[ -n "`echo $buildcommand | grep all`" ]] && buildcommand="all"
fi

echo -e "\n- Building with 'grunt'..."
grunt build --platforms=$buildcommand &> $log && echo -e "   ...Ok !\n" || error=1
func_error

echo -e "Popcorn-Time has been built in :\n  «$HOME/popcorn-app-$version/build/releases/Popcorn-Time/»\n" 
}

func_install() {
[ "`echo $buildcommand | grep -v linux$arch`" ] && exit 0

if [ "$1" != "-update" ] ; then
read -p "Do you wish to install Popcorn-Time on this computer [y/n] ? "
[ "$REPLY" != "y" ] && exit 0
fi  

sudo mkdir -p $installdir
sudo cp -r $HOME/popcorn-app-$version/build/releases/Popcorn-Time/linux$arch/Popcorn-Time $installdir

echo -e "\n- Creating commandline launcher..."
echo "#!/bin/bash
echo \"Popcorn Time
============\"

[ \"\$EUID\" == \"0\" ] && echo \"Error: You need to run this without 'root' or 'sudo' privileges.\" && exit 2

helpsection() {
echo \"Version $version 
Built on $buildtime from $githubURL
Official website : $OfficialURL

Options:
  -h, --help        Display this help.
  -q,--quiet        Launch Popcorn-Time without output.
  --flush       Flush databases.
  --fix-node        Fix the node-webkit 'blank' error.
  --uninstall       Uninstall Popcorn-Time.
  --issue       Report an issue.
  --build       Build latest version from sources.\"
}

flush_all() {
echo \"- Flushing databases...\"
sudo rm -rf $HOME/.config/Popcorn-Time
}

uninstall() {
echo \"- Uninstalling Popcorn-Time and removing configuration files...\"
sudo bash $installdir/Popcorn-Time/uninstall.sh
}

popcorntimequiet() {
echo \"Starting...\"
nohup $installdir/Popcorn-Time/Popcorn-Time &> /dev/null &
exit 0
}

popcorntime() {
$installdir/Popcorn-Time/Popcorn-Time
}

reportissue() {
echo \"Here is what a great bug report looks like:


###############################
Describe the problem here

Version: $version for Linux $arch bits
         Built on $buildtime
Downloaded from: $githubURL
OS: `lsb_release -si` `lsb_release -sr` `arch`
Connection: X mbps

How to reproduce:
 - Step 1
 - Step 2
 - Step 3
Actual result:
 - X goes wrong
Expected result:
 - X should go like that
###############################\"
xdg-open $issueURL &> /dev/null
}

fix_node() {
echo \"Fixing node-webkit...\"
rm -rf $HOME/.config/node-webkit
}

build_pt() {
cd
echo \"Building script fetched from GitHub...\"
wget -q $buildscriptURL$buildscript
bash $buildscript -update
}

case \$1 in
    -h|--help)
        helpsection
        ;;
    --uninstall)
        uninstall
        ;;
    --flush)
        flush_all
        ;;
    --fix-node)
        fix_node
        ;;
    --issue)
        reportissue
        ;;
    -q|--quiet)
        popcorntimequiet
        ;;
    --build)
        build_pt
        ;;
    *)
        popcorntime
        ;;
esac" | sudo tee /usr/bin/popcorn-time &> /dev/null
sudo chmod +x /usr/bin/popcorn-time
echo -e "    «/usr/bin/popcorn-time»\n"

echo "- Creating launcher... "
sudo wget $icon -qO /tmp/popcorntime.png && sudo cp /tmp/popcorntime.png /usr/share/pixmaps/
echo "[Desktop Entry]
Comment=Watch movies in streaming with P2P.
Comment[fr]=Regarder des films en streaming.
Name=Popcorn Time
Exec=/usr/bin/popcorn-time
StartupNotify=false
Type=Application
Icon=popcorntime
Actions=ForceClose;ReportIssue;FlushDB;FixNode;BuildUpdate;
Keywords=P2P;streaming;movies;tv;series;shows;
Keywords[fr]=P2P;streaming;films;séries;télévision;tv;

[Desktop Action ForceClose]
Name=Force close
Name[fr]=Forcer la fermeture
Exec=killall Popcorn-Time
OnlyShowIn=Unity;

[Desktop Action ReportIssue]
Name=Report Issue
Name[fr]=Rapporter un problème
Exec=sh -c \"popcorn-time --issue\"
OnlyShowIn=Unity;

[Desktop Action FlushDB]
Name=Flush databases
Name[fr]=Vider les bases de données
Exec=sh -c \"killall Popcorn-Time ; rm -rf $HOME/.config/Popcorn-Time ; /usr/bin/popcorn-time\"
OnlyShowIn=Unity;

[Desktop Action FixNode]
Name=Fix Node-Webkit
Name[fr]=Réparer Node-Webkit
Exec=sh -c \"rm -rf $HOME/.config/node-webkit ; killall Popcorn-Time ; /usr/bin/popcorn-time\"
OnlyShowIn=Unity;

[Desktop Action BuildUpdate]
Name=Build latest version
Name[fr]=Construire la dernière version
Exec=sh -c 'killall Popcorn-Time ; xterm -fa monaco -fs 13 -bg black -fg white -title \"Build latest Popcorn Time\" -e \"popcorn-time --build\" ; /usr/bin/popcorn-time'
OnlyShowIn=Unity;" | sudo tee /usr/share/applications/popcorn-time.desktop &> /dev/null
sudo chmod +x /usr/share/applications/popcorn-time.desktop
echo -e "    «/usr/share/applications/popcorn-time.desktop»\n"

echo "- Creating uninstall script..."
echo "#!/bin/bash
#uninstallation script for Popcorn-Time

#clean directory
sudo rm -rf $installdir/Popcorn-Time

#clean config
sudo rm -rf $HOME/.config/Popcorn-Time

#clean icon
sudo rm -rf /usr/share/pixmaps/popcorntime.png

#clean launchers
sudo rm -rf /usr/bin/popcorn-time
sudo rm -rf /usr/share/applications/popcorn-time.desktop
" | sudo tee $installdir/Popcorn-Time/uninstall.sh &> /dev/null
sudo chmod +x $installdir/Popcorn-Time/uninstall.sh
echo -e "    «$installdir/Popcorn-Time/uninstall.sh»\n" 
}

func_end() {
if [ "$buildcommand" == "linux$arch" ] ; then
 if [ "$1" == "-update" ] ; then
    func_clean -building
    sudo rm -rf $0
 else
  read -p "Do you wish to remove all the building files [y/n] ? "
  [ "$REPLY" == "y" ] && func_clean -building
 fi
fi

if [ "$nodeppa" == "0" ] ; then
    read -p "Do you wish to uninstall the packages installed for this build, they will be needed in case of new build [y/n] ? "
    [ "$REPLY" == "y" ] && func_clean -package
fi 
}

#SCRIPT#
func_root
func_apt

echo "
Popcorn-Time $version for Ubuntu-Linux
=====================================
Popcorn Time streams movies from Torrents.
Downloading copyrighted material may be illegal in your country.
!!! Use at your own risk !!!
"

sudo test 

case $1 in
    -update)
        option="-update"
        ;;
    *)
        [ -n "$1" ] && echo -e "\nUnauthorized option '$1' will be ignored."
        ;;
esac

func_ptexists $option
func_dependencies
func_build $option
func_install $option
func_end $option

echo "=================================================
Popcorn-Time is now installed !

Type «popcorn-time --help» for more information."
exit 0

Deinstallation

Ein einfaches popcorn-time --uninstallsollte reichen. Wenn nicht, löschen Sie diese Dateien:

  • / opt / Popcorn-Zeit
  • ~ / .config / Popcorn-Zeit
  • /usr/share/pixmaps/popcorntime.png
  • / usr / bin / popcorn-zeit
  • /usr/share/applications/popcorn-time.desktop
MrVaykadji
quelle
Das ist großartig, danke! Nur zur Information anderer musste ich ein Upgrade auf eine neuere Version von nodejs durchführen, um zu verhindern, dass die Installation von grunt-cli fehlschlägt. Ubuntu-Quellen unterstützen nur bis zur Version 0.6. Anweisungen zum Upgrade finden Sie hier: stackoverflow.com/questions/7214474/…
Templar
Es wäre großartig, wenn Sie auch einen Link zu diesen Bugs erstellen könnten. Falls es also eine Problemumgehung gibt oder diese behoben wird, können wir den Post problemlos bearbeiten und pflegen. Ich habe versucht, sie zu verknüpfen, aber ich bin mir nicht sicher, von welchen genau Sie sprechen. :)
Aditya
Ab dem 14. März ist die Popcorn-Zeit abgelaufen.
MrVaykadji
Ist das aktuell?
Seth
Das Projekt scheint seit dem 14. März eingestellt zu sein: / Dies funktioniert mit den aktuellen Quellen auf Github, aber es wird wahrscheinlich nie aus der Beta
rauskommen
7

Manuell:

1) Holen Sie sich die Dateien

Klonen Sie das Repo mit git(installieren Sie es bei Bedarf):

git clone https://git.popcorntime.io/popcorntime/desktop.git

2) Installieren Sie node.js

sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

3) Installieren Sie die erforderlichen Abhängigkeiten für node.js

sudo npm install -g grunt-cli bower

4) Geben Sie das Verzeichnis ein

cd desktop

5) Installieren Sie Popcorn-Zeitabhängigkeiten

npm install

6) Mit Grunzen bauen

grunt build

7) Holen Sie sich die erstellte ausführbare Datei

Sie finden die ausführbare Datei im build/releasesOrdner

7bis) Starten Sie die Live-Entwicklung

grunt start
MrVaykadji
quelle