Bonjour,

J’utilise depuis des années le script de Ratxabox sur un serveur dédié sans le moindre soucis.

J’ai récemment décidé de repasser par. Sickrage plutôt que Sonaar (notamment pour la gestion des « packs » de séries) mais en me connectant sur l’UI de Sickrage je constate qu’une migration est possible vers du Python 3. Il semble que ça soit du Python 3.6 minimum et 3.7 recommandé.

Mon serveur tourne actuellement sous du 2.7 pour la plupart des services, mais tout cela a été mis en place il y a plusieurs années, via le script de Ratxabox je présume.

J’ai du coup plusieurs questions :

  • Mettre à jour Python vers une 3.6 ou 3.7 ne risque t-il pas de poser soucis avec le script ?
  • Lorsque je tente de faire un « apt-get install python 3.7 », je me fais envoyer balader en me disant en gros qu’il y a déjà des packages Python sur le serveur, des 2.7 et 3.5 en fait. Comment donc « forcer » cette mise à jour ?
  • Vous l’aurez compris je ne suis pas trop à l’aise avec Python et cette migration donc si quelqu’un a un lien FR vers un tuto / conseils, je suis preneur

Merci par avance pour votre aide 🙂

Hello,

Quelques jours plus tard, le grand désert sur le post. C’est l’effet vacances, j’ai dis une bêtise ou bien ?

    Question bête, pourquoi pas docker ? Si tu es sur un système que tu ne peux/veux pas toucher, ça te permet de faire tourner tes services dans une image où toutes les dépendances sont incluses, et de le déplacer facilement vers un autre serveur si besoin ? (ce n'est pas une question piège, certains sont pour ou contre docker, et je respecte le choix de chacun, mais dans ton cas, ça me semblerait bien adapté)

    Ah merci Matt, même sans réponse au soucis ça fait plaisir de se sentir moins seul :p mais je me doutais bien que l’effet vacances n’aidait pas

    Merrick > Pour le coup je ne suis ni pour ni contre docker car je ne maîtrise que peu le sujet. Le truc, c’est que je suis passé il y a de nombreuses années via le script de Ratxabox qui est un « all-in-one » qui englobe justement Sickrage. Du coup mettre un autre Sickrage dans un docker avec Python serait peut être redondant; mais encore une fois je reste super ouvert à toutes les solutions.

    C’est juste que c’est cool quand tout marche bien, si je peux éviter de créer plus de problèmes que ça n’en résout, ça me va 🙂

    Salut @Oppenheimer

    Tu peux avoir plusieurs versions de Pythons installées sur la même machine. Au pire il faut préciser la version pour lancer certains outils (pythonXX programme plutôt que python programme). Pour lancer SR ce serait par exemple python3.7 SickBeard.py

    sudo apt install python3.7 ne fonctionne pas ? Tu es sur quelle distribution ?

    Perso j'ai plusieurs versions de python ça ne pose pas de problème, il faut juste précisé lequel on veux utiliser dans les daemons

    Fonctionne pour debian/ubuntu

    apt update
    apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev
    cd /tmp
    wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
    tar -xf Python-3.9.6.tgz
    cd Python-3.9.6
    ./configure --enable-optimizations
    make
    make altinstall

    Regarde que python fonctionne

    python3.9 --version --> il doit te répondre : Python 3.9.6
    which python3.9 --> il doit te répondre : /usr/local/bin/python3.9

    Dans mon cas Sickchill est dans /opt/SickChill

    systemctl stop sickchill
    systemctl disable sickchill
    rm /etc/systemd/system/sickchill
    rm /usr/lib/systemd/system/sickchill 
    cp /opt/SickChill/contrib/runscripts/init.systemd /lib/systemd/system/sickchill.service
    nano /lib/systemd/system/sickchill.service

    Change la ligne

    ExecStart=/usr/bin/python3 /opt/sickchill/SickChill.py -q --daemon --nolaunch --datadir=/opt/sickchill

    Par

    ExecStart=/usr/local/bin/python3.9 /opt/SickChill/SickChill.py -q --daemon --nolaunch --datadir=/opt/SickChill
    systemctl enable sickchill.service
    systemctl daemon-reload

    Démarre sickchill

    systemctl start sickchill
    systemctl status sickchill

    Bonjour à tous,

    Navré de ne répondre que maintenant, je rentre à peine de quelques jours loin du pc.

    @Aerya > J'ai ça en retour de commande :

    "Package python3.7 is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source

    E: Package 'python3.7' has no installation candidate"

    @SkillFr > Je regarde ça tranquillement dans le W.E et je te dis ce qu'il en est 🙂

    Ta distribution est sans doute trop vieille. Pas grave, ça se contourne. C'est quoi comme distri ?
    cat /etc/lsb-release

    Bonjour à tous,

    J'ai pris le temps ce matin de jeter un oeil et j'ai (un peu) avancé :

    @Aerya -> La commande ne me renvoi aucun retour. Mais de mémoire c'est un débian 9

    J'ai de toute façon pu, en suivant les conseils de @SkillFr installer la dernière version de Python. Elle tourne en parallèle d'une 2.7. La première partie des commandes est donc OK.

    En revanche, je ne sais pas si c'est dû au script de Ratxabox (Xavier de mémoire) ou si c'est normal, mais mon install s'appelle toujours Sickrage et non SickChill. J'ai tenté de regarder un peu de mon côté pour adapter mais je n'avais pas de service Sickrage donc aucune possibilité de faire les modifs demandées.

    Je me suis donc dis "Le but initial était de faire une migration, je vais suivre la doc" (présente ici : https://forums.sickrage.ca/t/how-to-migrate-sickrage-to-python-3/1365 ).

    Jusqu'à l'étape 6, on est OK, en revanche

    Run from SiCKRAGE install folder python3 -m pip install --no-deps -r requirements.txt

    A partir de là, je me fais envoyer balader, il cherche une dépendance apparemment, apispec 4.0.0 or pas moyen de l'installer :

    root@***:/opt/sickrage# python3 -m pip install --no-deps -r requirements.txt
    Collecting aenum==2.2.4 (from -r requirements.txt (line 1))
      Using cached https://files.pythonhosted.org/packages/5b/58/1007ed4a287c6dd3dc953ae478145bab28e8abc529627b2ee797f84b201e/aenum-2.2.4-py3-none-any.whl
    Collecting alembic==1.4.2 (from -r requirements.txt (line 2))
      Using cached https://files.pythonhosted.org/packages/60/1e/cabc75a189de0fbb2841d0975243e59bde8b7822bacbb95008ac6fe9ad47/alembic-1.4.2.tar.gz
    Collecting apispec==4.0.0 (from -r requirements.txt (line 3))
      Could not find a version that satisfies the requirement apispec==4.0.0 (from -r requirements.txt (line 3)) (from versions: 0.3.0, 0.4.0, 0.4.1, 0.4.2, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 0.9.0, 0.9.1, 0.10.1, 0.11.0, 0.11.1, 0.12.0, 0.13.0, 0.14.0, 0.15.0, 0.16.0, 0.17.0, 0.17.1, 0.17.2, 0.17.3, 0.17.4, 0.18.0, 0.19.0, 0.20.0, 0.20.1, 0.21.0, 0.22.0, 0.22.1, 0.22.2, 0.22.3, 0.23.0, 0.23.1, 0.24.0, 0.25.0, 0.25.1, 0.25.2, 0.25.3, 0.25.4, 0.26.0, 0.27.0, 0.27.1, 0.28.0, 0.29.0, 0.30.0, 0.31.0, 0.32.0, 0.33.0, 0.34.0, 0.35.0, 0.36.0, 0.37.0, 0.37.1, 0.38.0, 0.39.0, 1.0.0b1, 1.0.0b2, 1.0.0b3, 1.0.0b4, 1.0.0b5, 1.0.0b6, 1.0.0rc1, 1.0.0, 1.1.0, 1.1.1, 1.1.2, 1.2.0, 1.2.1, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 2.0.0, 2.0.1, 2.0.2, 3.0.0, 3.1.0, 3.1.1, 3.2.0, 3.3.0, 3.3.1, 3.3.2)
    No matching distribution found for apispec==4.0.0 (from -r requirements.txt (line 3))
    root@***:/opt/sickrage# apt-get install apispec
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    E: Unable to locate package apispec

    Pour l'instant, j'en suis donc rendu là

    Merci déjà en tout cas pour votre aide, en espérant que vous puissiez m'aider à finir de me dépatouiller de cette migration :x

    Un excellent dimanche à tous !

      Oppenheimer

      Attention Sickrage existe toujours, les développeurs sont partis chacun de leurs côtés

      Il faut partir sur une installation propre:

      cd /opt/
      wget https://github.com/SickChill/SickChill/archive/refs/heads/master.zip
      unzip master.zip 
      mv SickChill-master/ SickChill
      cp /opt/SickChill/contrib/runscripts/init.systemd /lib/systemd/system/sickchill.service
      nano /lib/systemd/system/sickchill.service

      Fin du tuto sur mon 1er post

      Réimportation la config de sickrage sur sickchill:
      Récupère les fichiers : config.ini et sickchill.db ou sickbear.db dépose-les dans /opt/SickChill

        Bonjour @SkillFr 🙂

        Tout est OK jusqu'au :

        systemctl start sickchill

        J'ai un :

        root@***:~# systemctl start sickchill
        Job for sickchill.service failed because the control process exited with error code.
        See "systemctl status sickchill.service" and "journalctl -xe" for details.

        Ci dessous, le fichier sickchill.service modifié comme demandé :

        [Unit]
        Description=SickChill Daemon
        Wants=network-online.target
        After=network-online.target
        
        [Service]
        User=sickchill
        Group=sickchill
        
        Type=forking
        GuessMainPID=no
        ExecStart=/usr/local/bin/python3.9 /opt/SickChill/SickChill.py -q --daemon --nolaunch --datadir=/opt/SickChill

        Comme indiqué avec l'erreur, pour voir le détail il faut taper au choix l'une des commandes.

        systemctl status sickchill.service  #la mieux
        journalctl -xe

        Peux-tu démarré sickrage directement (afin de ciblé le problème)

        /usr/local/bin/python3.9 /opt/SickChill/SickChill.py -q --daemon --nolaunch --datadir=/opt/SickChill

        Il démarre ?

        Ton fichier /lib/systemd/system/sickchill .service ressemble bien a :

        [Unit]
        Description=SickChill Daemon
        Wants=network-online.target
        After=network-online.target
        
        [Service]
        User=sickchill
        Group=sickchill
        
        Type=forking
        GuessMainPID=no
        ExecStart=/usr/bin/python3 /opt/sickchill/SickChill.py -q --daemon --nolaunch --datadir=/opt/sickchill
        
        [Install]
        WantedBy=multi-user.target

        @Aerya j'ai bien tapé ces deux commandes mais je n'y ai rien vu de probant, ou du moins compréhensible pour quelqu'un qui n'a pas votre niveau 🙂

        @SkillFr il semble se lancer oui; aucun retour d'erreur au lancement de la commande et oui, le fichier ressemble à ça, je pense que de toute façon, si ce n'était pas bon, il ne se lancerait pas non ?

        Il tourne sur un port par défaut par la suite ? Je n'ai renseigné nulle part un ID/MDP d'accès.

        Je vois sur la doc officielle (https://whatbox.ca/wiki/SickChill) qu'il faut les spécifier dans un config.ini mais je ne sais pas où il se trrouve :/

        Edit : Autant pour moi, ce n'est pas la doc officielle, oubliez donc ma dernière phrase

          Oppenheimer

          il semble se lancer oui

          A tu testé l'interface web ? tu voir ton port : cat /opt/SickChill/config.ini |grep web_port

          Peux-tu regarder les logs : cat /opt/SickChill/Logs/sickchill.log

          root@***:~# cat /opt/SickChill/config.ini |grep web_port
          cat: /opt/SickChill/config.ini: No such file or directory
          root@***:~# cat /opt/SickChill/Logs/sickchill.log
          cat: /opt/SickChill/Logs/sickchill.log: No such file or directory
          root@***:~# cd /opt/SickChill/
          root@***:/opt/SickChill# ls
          bower.json       COPYING.txt          Gruntfile.js  poetry.lock     README.md    SickChill.py
          contrib          docker-compose.yaml  LICENSE.md    poetry.toml     SECURITY.md  tests
          CONTRIBUTORS.md  Dockerfile           package.json  pyproject.toml  sickchill    yarn.lock
          root@***:/opt/SickChill#

            SkillFr Réimportation la config de sickrage sur sickchill:
            Récupère les fichiers : config.ini et sickchill.db ou sickbear.db dépose-les dans /opt/SickChill

            Oppenheimer

            Les fichiers se créent automatiquement après un démarrage, cela veut dire que tu n’as pas lancé Sick Chill

            Copie les fichiers de l'ancien sickrage

            cp -R /opt/sickrage/config.ini /opt/SickChill/
            cp -R /opt/sickrage/sickrage.db /opt/SickChill
            mv /opt/SickChill/sickrage.db /opt/SickChill/sickchill.db 

            /usr/local/bin/python3.9 /opt/SickChill/SickChill.py -q --daemon --nolaunch --datadir=/opt/SickChill

            Check après les log: cat /opt/SickChill/Logs/sickchill.log

            Encore une fois, j'ai l'impression qu'étant donné que l'install de Sickrage était une "all-in-one" inclue dans le script de Xavier, les fichiers ne sont pas là où on les attends. En effet, quand je passe tes commandes :

            Last login: Sun Aug  8 14:18:35 2021 from 82.65.16.61
            root@***:~# cp -R /opt/sickrage/config.ini /opt/SickChill/
            cp: cannot stat '/opt/sickrage/config.ini': No such file or directory
            root@***:~# cp -R /opt/sickrage/sickrage.db /opt/SickChill
            cp: cannot stat '/opt/sickrage/sickrage.db': No such file or directory
            root@***:~# mv /opt/SickChill/sickrage.db /opt/SickChill/sickchill.db
            mv: cannot stat '/opt/SickChill/sickrage.db': No such file or directory
            root@***:~# cd /opt/sickrage/
            root@***:/opt/sickrage# ls
            CHANGELOG.md           Dockerfile                    readme.md             SiCKRAGE.py
            changelog-template.md  histo.log                     README.txt            src
            checksum-generator.py  Jackett                       requirements-dev.txt  tests
            checksum-validator.py  Jackett.Binaries.Mono.tar.gz  requirements.txt      webpack.config.js
            COPYING.txt            MANIFEST.in                   runscripts            yarn.lock
            crowdin.yaml           manifests                     setup.cfg
            data                   package.json                  setup.py
            docker-compose.yml     protos                        sickrage
            root@***:/opt/sickrage#

            Je suis tellement désolé, c'est en train de vous user et moi aussi parce que j'ai fais la bêtise de plus mettre les mains dedans depuis des années, mais ça marchait tellement bien :/

              Oppenheimer

              Ok, pas de souci, si c'est du all in one malheureusement je peux rien faire !

              Je vois qu'il y a docker dans les fichiers, j'y connais absolument rien 😅 et Bizarre le Jackett dans Sick.

              Mais cela ne t'empêche pas de repartir avec un SickChill vierge !

              Quand tu démarre SickChill

              /usr/local/bin/python3.9 /opt/SickChill/SickChill.py -q --daemon --nolaunch --datadir=/opt/SickChill

              Il doit y avoir obligatoirement des traces dans le log: cat /opt/SickChill/Logs/sickchill.log