Cài đặt Popcorn Time từ các tệp nguồn


28

Làm cách nào tôi có thể cài đặt Popcorn Time beta ?

Tôi thấy trên trang web của họ rằng họ chỉ cung cấp tệp cài đặt 64 bit, nhưng các nguồn đang mở.

Tôi không thể sử dụng thông thường ./configure && make. Vậy tôi có thể làm gì ?


Tôi đang sử dụng 64 bit xubfox 14.04, tôi đã tải xuống gói beta 3.0 từ trang web của họ, giải nén nó và chạy ./Popcorn-Timenhư vậy trong 20 phút, nó nói initializing popcorn please wait.... Cuối cùng nó sẽ hoạt động hay tôi nên làm theo hướng dẫn của bạn để nó hoạt động thay thế chờ đợi?
Lynob

nó không hoạt động, việc khởi tạo mất khoảng 0,3 giây đối với tôi. Vấn đề phải ở nơi khác, tôi không thấy điều này sẽ thay đổi như thế nào từ bản phát hành chính thức thay vì nó dựa trên mã phát triển (alpha). Các vấn đề báo cáo: github.com/popcorn-official/popcorn-app/issues
MrVaykadji

Tôi đã cố gắng làm theo câu trả lời thứ hai của bạn, cố gắng sửa tệp python, hy vọng sửa lỗi, không hoạt động, tôi đã làm theo câu trả lời đầu tiên của bạn và nó đã hoạt động cảm ơn bạn. xin lưu ý rằng sẽ rất tuyệt nếu bạn có thể chỉnh sửa tập lệnh của mình để kiểm tra xem phần phụ thuộc đã được cài đặt chưa, tôi đã cài đặt chúng trước khi chạy tập lệnh của bạn, tập lệnh của bạn mất 5 phút để cài đặt chúng, nó có thể dễ dàng bỏ qua phần đó. Và vui lòng xóa install alltùy chọn vì người ta không thể chạy mac và giành chiến thắng và linux cùng một lúc, tùy chọn này chỉ lãng phí thời gian, không ai có thể sử dụng nó
Lynob

Uh, tại sao người ta không thể có macbook air và PC có cửa sổ Ubuntu? Đó là tất cả các điểm của 'tùy chọn', có thể chọn. Bạn không nên gõ "tất cả" nếu bạn không muốn "tất cả" được xây dựng. Đối với các phụ thuộc, nếu bạn đang nói về nodejs và đã có nó, bạn sẽ chỉ trải qua một 'cập nhật apt-get', không có vấn đề gì lớn. Nếu bạn đang nói về sự phụ thuộc npm, thì chúng phải được cài đặt bên trong thư mục khi chúng ta sử dụng nó, chứ không phải nơi nào khác trên máy tính: vì vậy điều đó là cần thiết.
MrVaykadji

nhưng họ đã có các gói trên trang web của họ cho windows và mac. họ không làm việc à? họ có cần phải được xây dựng giống như gói linux không?
Lynob

Câu trả lời:


21

Kịch bản này sẽ giúp bạn xây dựng Popcorn Time dev-0.3 trên Ubuntu Linux từ các nguồn Github .

Nó hoạt động hoàn hảo trên Ubuntu 12.04 và 14.04 64 bit, nhưng nên hoạt động với mọi phiên bản được bảo trì và mọi kiến ​​trúc.

Để xây dựng và cài đặt Popcorn-Time từ các nguồn, bạn sẽ cần nodejsnpm. npmsử dụng bowergrunt-clixây dựng các tệp: đó là lý do tại sao bạn không thể sử dụng thông thường./configure

Lưu ý: hiện tại có 1 lỗi với các tệp cài đặt: nodejsnhị phân bị đặt tên sai, bạn có thể sửa nó bằng một liên kết tượng trưng đơn giản từ 'nodejs' đến 'nút'.

Lưu ý: vào ngày 12.04, không có libudev.so.1, vì vậy chúng tôi sẽ cần liên kết nó từ libudev.so.0

LÀM THẾ NÀO ĐỂ

  1. Sao chép-dán các dòng sau vào một tệp văn bản, tôi sẽ đặt tên cho tập lệnh đó làm ví dụ.

  2. Sau đó, sử dụng thiết bị đầu cuối của bạn và khởi chạy tập lệnh:

    bash script
    
  3. Làm theo hướng dẫn trên màn hình:

    • Chấp nhận từ chối trách nhiệm
    • Chọn dạng tấm bạn muốn xây dựng cho (mac, win, linux32-64)
    • Cài đặt Popcorn-Time với các phím tắt và tùy chọn dòng lệnh nếu bạn muốn
    • Xóa tệp xây dựng nếu bạn không muốn chúng nữa
    • Xóa các gói được sử dụng bởi tập lệnh này để xây dựng PT nếu bạn không muốn chúng trong tương lai
    • voila.

Điều này sẽ mất khoảng 10-30 phút để hoàn thành.


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

Gỡ cài đặt

Một đơn giản popcorn-time --uninstalllà đủ. Nếu không, hãy xóa các tệp đó:

  • / opt / Popcorn-Time
  • ~ / .config / Popcorn-Time
  • /usr/share/pixmaps/popcorntime.png
  • / usr / bin / bỏng ngô-thời gian
  • /usr/share/appluggest/popcorn-time.desktop

Điều này thật tuyệt, cảm ơn! Chỉ cần thông tin của người khác, tôi đã phải nâng cấp lên phiên bản mới hơn của nodejs để ngăn cài đặt grunt-cli không thành công. Nguồn Ubuntu chỉ hỗ trợ tối đa phiên bản 0.6. Hướng dẫn nâng cấp có sẵn tại đây: stackoverflow.com/questions/7214474/ cấp
Templar

Sẽ thật tuyệt nếu bạn cũng có thể liên kết với các lỗi đó ... vì vậy trong trường hợp có cách khắc phục hoặc nó đã được sửa, chúng tôi có thể dễ dàng chỉnh sửa và duy trì bài đăng. Tôi đã cố gắng liên kết chúng, nhưng tôi không chắc chính xác những gì bạn đang nói về .. :)
Aditya

Kể từ ngày 14 tháng 3, Popcorn-Time đã ngừng hoạt động.
MrVaykadji

Đây có phải là cập nhật?
Seth

Dự án dường như bị bỏ rơi kể từ ngày 14 tháng 3: / điều này hoạt động với các nguồn hiện tại trên github, nhưng có lẽ nó sẽ không bao giờ thoát khỏi phiên bản beta
MrVaykadji

7

Thủ công:

1) Nhận các tập tin

Sao chép repo với git(cài đặt nếu cần):

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

2) Cài đặt node.js

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

3) Cài đặt các phụ thuộc được yêu cầu của node.js

sudo npm install -g grunt-cli bower

4) vào thư mục

cd desktop

5) Cài đặt phụ thuộc Popcorn-Time

npm install

6) Xây dựng với tiếng lẩm bẩm

grunt build

7) Nhận thực thi được xây dựng

Bạn sẽ tìm thấy tệp thực thi trong build/releasesthư mục

7 bis) Bắt đầu phát triển trực tiếp

grunt start
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.