Comment puis-je installer Popcorn Time beta ?
Je vois sur leur site Web qu'ils proposent uniquement des fichiers d'installation 64 bits, mais les sources sont ouvertes.
Je ne peux pas utiliser le ./configure && make
habituel. Alors qu'est-ce que je peux faire ?
Manuellement :
Clonez le référentiel avec git
(installez-le si nécessaire):
git clone https://git.popcorntime.io/popcorntime/desktop.git
Sudo add-apt-repository ppa:chris-lea/node.js
Sudo apt-get update
Sudo apt-get install nodejs
Sudo npm install -g grunt-cli bower
cd desktop
npm install
grunt build
Vous trouverez l'exécutable dans le dossier build/releases
grunt start
Ce script vous aidera à construire Popcorn Time dev-0.3 sur Ubuntu Linux à partir de la sources Github .
Cela fonctionne parfaitement sur Ubuntu 12.04 et 14.04 64bits, mais devrait fonctionner avec toutes les versions maintenues et toutes les architectures.
Pour créer et installer Popcorn-Time à partir de sources, vous aurez besoin de nodejs
et de npm
name__. npm
utilise bower
et grunt-cli
pour construire les fichiers: c'est pourquoi vous ne pouvez pas utiliser le ./configure
habituel
Remarque: il existe actuellement un bogue avec les fichiers d'installation: nodejs
binaire étant mal nommé, vous pouvez le corriger par un simple lien symbolique allant de 'nodejs' à 'node'.
Remarque: le 12.04, il n'y a pas de libudev.so.1, nous devrons donc établir un lien symbolique de libudev.so.0
Copiez-collez les lignes suivantes dans un fichier texte, je vais le nommer comme script pour l'exemple.
Ensuite, utilisez votre terminal et lancez le script:
bash script
Suivez les instructions à l'écran:
Cela prendra environ 10-30min à compléter.
#!/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
Un simple popcorn-time --uninstall
devrait suffire. Sinon, effacez ces fichiers: