• Archive
  • [Discussion] Installer ruTorrent sur Debian 9 {nginx & php-fpm}

Wagner du coup en installant a la main je suis tombé sur une petite erreur ( en lien avec le reste )
ModuleNotFoundError: No module named '_ctypes'
résolu avec l'installation de libffi-dev
Prends ton temps et n'en fait pas une priorité pour l'instant ca tient debout, ca n'impacte que moi 😉

Bon lundi à toi

moi a la fin de l'installation, quand j'arrive sur l'interface rutorrent sa me fait sa : Plug-in 'Create' : Le serveur Web n'a pas accès au programme externe. Le plug-in ne fonctionnera pas comment je fait ?

    Edit : résolu en utilisant le script automatique Bonobox.

    @Wagner Hello, manifestement ta solution est bonne, je n'ai plus de problème depuis 😀 Merci 🙂

    Me reste plus qu'à élucider le pourquoi je me prend une erreur 502 quand je reviens sur rutorrent après avoir accéder à Organizr... ça se résout en effaçant les cookies mais c'est pas top comme solution...

    zoxyd Salut,
    Dans ton message d'erreur il doit y avoir le nom du programme entre parenthèses à la fin, tu ne l'as pas copier / coller ici...
    Sans cette info, impossible de t'aider. ^^

    salut, j'ai un petit soucis avec ton script auto, je n'arrive pas a installer plex 🙁

    si tu a une idée de comment le faire je suis preneur 😉

    7 jours plus tard

    Hello @MattProd

    voilà une bonne nouvelle et de rien content d'avoir pu t'aidé. 🙂
    Par contre la 502 reste(ra) un mystère car je n'utilise pas ce Organizr. De plus, malgré toutes ces années, celle-là je ne l'ai jamais rencontrée. Alors navré je n'aurais aucune piste, ni de solution à te proposer... 🙁
    Et puis, je viens à peine de récupérer internet alors cela n'est pas encore terminé.

    Bonne semaine (la mienne va être aasez chargé).

    [27.05.2019] _task: Plugin will not work. Webserver user can't access external program (php).
    [27.05.2019] _task: Plugin will not work. Webserver user can't access external program (pgrep).
    [27.05.2019] rss: Some functionality will be unavailable. Webserver user can't access external program (curl).
    [27.05.2019] create: Plugin will not work. It requires plugin(s) _task
    [27.05.2019] unpack: Plugin will not work. It requires plugin(s) _task
    [27.05.2019] mediainfo: Plugin will not work. It requires plugin(s) _task
    [27.05.2019] screenshots: Plugin will not work. It requires plugin(s) _task
    [27.05.2019] spectrogram: Plugin will not work. It requires plugin(s) _task
    [27.05.2019] spectrogram: Plugin will not work. rTorrent user can't access external program (sox).
    [27.05.2019] mediainfo: Plugin will not work. rTorrent user can't access external program (mediainfo).
    [27.05.2019] screenshots: Plugin will not work. rTorrent user can't access external program (ffmpeg).
    

    L'autre jour @Micdu70, je n'avais posté qu'une ligne car cela ne concernait qu'une seule erreur.
    Enfin bref, je vais le compléter malgré le fait qu'il aurait pu le recopier en entier...

    un mois plus tard

    Bonjour,
    Je viens de me prendre un serveur avec 6 TO.
    Partitionnement fait avec /home.

    Installation du script Bonobox puis création de 4 utilisateurs

    Au démarrage de la seedbox (aucune donnée présente pour l'instant) j'ai 5% d'espace disque d'affiché.

    Hors il me semblait qu'il fallait faire une partition /home pour pouvoir récupérer automatiquement de la place à la fin de l'installation (le fameux 5% réservé au root).

    Aurais-je loupé quelque chose ?

    Merci d'avance pour vos conseils

      Wassabi hello,
      Déjà est ce que tu as un raid dessus ? Ensuite 6tb = 5.45 To utilisable avant installation.

      Cordialement

        Salut
        Le script s'est peut-être loupé, fait le à la main.
        Tu repères le nom de ton /home avec un df-h ( /dev/sdaX ou /dev/sdbX, truc comme ça... ) et ensuite:

        tune2fs -m 0 /dev/sdaX

        Si tu as plusieurs /home/user bien séparé, tu répètes la manip' pour chacun.

        Je crois qu'on fait un aussi un :

        mount -o remount /home

        Ou avec plusieurs /home/user

        mount -o remount /home/user1
        ect...

        Faut peut-être reboot après, je sais plus trop.
        Ex.
        edit: peut-être bien que @MattProd à vu la faille ^^

          MattProd
          Oui j'ai bien configuré un RAID 0 pour avoir la "totalité" des 6 To
          Je suis bien conscient qu'après formatage les disques passent de la capacité brut à réelle. (environ 100 Go de mois par To de disque)
          En l'occurence 2 disques de 3 To chacun une fois formaté et en raid 0 donnent au final 5,4 To d'exploitable en réel.

          ex_rat
          J'ai fait la commande tune2fs -m 0 /dev/md3 puis mount -o remount /home puis reboot serveur .

          C'est OK je n'ai plus les 5% d'espace disque de réservé.

          Merci à vous deux pour la pertinence de vos réponses et la rapidité de celles-ci

          Ok tant mieux, désolé d'avoir était prudent mais souvent on oublie cette disparité entre constructeur / OS / raid 😉

          Il est vrai qu'a y repenser les install sur du raid ont toujours était à 5% mais je n'y prêté guère attention j'ai de la marge avec les machines (16tb et 6tb 😉 )

          J'en profite pour remercier encore @ex_rat pour le taff et tout les contributeurs de l'ombre et pas de l'ombre 🙂

          Bonjour,
          Je me posais la question afin de savoir s'il y a possibilité d'adapter le script pour Debian 10 ?

            un mois plus tard

            Bonjour le forum,

            Merci pour le tuto, tout fonctionne très bien sur une debian 9.9, merci ex_rat.
            J'ai voulu faire une petite modification après quelques jours d'utilisation; déplacer mon répertoire "seedbox" dans un autre endroit, toujours dans mon home. J'ai bien modifié le .rtorrent.rc en rentrant le nouveau chemin, j'ai redémarré le service. J'ai un message d'erreur dans l'interface de ma seedbox "FILE MANAGER: Le répertoire n'existe pas." j'ai pourtant bien vérifié et je me suis pas trompé dans le .rtorrent.rc. Avez vous une idée ?
            En vous remerciant d'avance. ++

              zuli3n met à jour tes liens symboliques "ldconfig"

              revérifie tes fichiers, tu peux même nous les donner (les configs)

              Salut CocaCola, merci pour ton retour. J'ai stoppé le service, lancé un "ldconfig" mais hélas ça fait la même chose.
              Quand je refais marche arrière, tout fonctionne correctement. Tu veux le .rtorrent.rc ?
              ++

              J'ai trouvé, c'était tout simplement le config.php à modifier aussi.
              Merci pour ce forum, c'est une mine d'or.
              ++

              un mois plus tard

              Bonsoir
              cela fait plusieurs fois que je lance le script mais il se bloque toujours à la même étape est-ce que vous savez d'où vient le problème ?

              
              `                                                                                               ^
              mv -f .deps/control.Tpo .deps/control.Po
              g++ -DHAVE_CONFIG_H -I. -I..  -I. -I..   -g -O2 -DNDEBUG -Wall -I/usr/local/include  -pthread   -I/usr/include/x86_64-linux-gnu -I/usr/local/include  -MT globals.o -MD -MP -MF .deps/globals.Tpo -c -o globals.o globals.cc
              In file included from globals.h:41,
                               from globals.cc:39:
              ../rak/priority_queue_default.h: In destructor ‘rak::priority_item::~priority_item()’:
              ../rak/priority_queue_default.h:56:95: warning: throw will always call terminate() [-Wterminate]
                     throw torrent::internal_error("priority_item::~priority_item() called on a queued item.");
                                                                                                             ^
              ../rak/priority_queue_default.h:56:95: note: in C++11 destructors default to noexcept
              mv -f .deps/globals.Tpo .deps/globals.Po
              g++ -DHAVE_CONFIG_H -I. -I..  -I. -I..   -g -O2 -DNDEBUG -Wall -I/usr/local/include  -pthread   -I/usr/include/x86_64-linux-gnu -I/usr/local/include  -MT option_parser.o -MD -MP -MF .deps/option_parser.Tpo -c -o option_parser.o option_parser.cc
              mv -f .deps/option_parser.Tpo .deps/option_parser.Po
              g++ -DHAVE_CONFIG_H -I. -I..  -I. -I..   -g -O2 -DNDEBUG -Wall -I/usr/local/include  -pthread   -I/usr/include/x86_64-linux-gnu -I/usr/local/include  -MT signal_handler.o -MD -MP -MF .deps/signal_handler.Tpo -c -o signal_handler.o signal_handler.cc
              mv -f .deps/signal_handler.Tpo .deps/signal_handler.Po
              g++ -DHAVE_CONFIG_H -I. -I..  -I. -I..   -g -O2 -DNDEBUG -Wall -I/usr/local/include  -pthread   -I/usr/include/x86_64-linux-gnu -I/usr/local/include  -MT thread_base.o -MD -MP -MF .deps/thread_base.Tpo -c -o thread_base.o thread_base.cc
              In file included from thread_base.h:44,
                               from thread_base.cc:39:
              ../rak/priority_queue_default.h: In destructor ‘rak::priority_item::~priority_item()’:
              ../rak/priority_queue_default.h:56:95: warning: throw will always call terminate() [-Wterminate]
                     throw torrent::internal_error("priority_item::~priority_item() called on a queued item.");
                                                                                                             ^
              ../rak/priority_queue_default.h:56:95: note: in C++11 destructors default to noexcept
              mv -f .deps/command_ui.Tpo .deps/command_ui.Po
              g++ -DHAVE_CONFIG_H -I. -I..  -I. -I..   -g -O2 -DNDEBUG -Wall -I/usr/local/include  -pthread   -I/usr/include/x86_64-linux-gnu -I/usr/local/include  -MT thread_worker.o -MD -MP -MF .deps/thread_worker.Tpo -c -o thread_worker.o thread_worker.cc
              thread_base.cc: In constructor ‘ThreadBase::ThreadBase()’:
              thread_base.cc:114:23: warning: ‘new’ of type ‘thread_queue_hack’ with extended alignment 128 [-Waligned-new=]
                 m_threadQueue = new thread_queue_hack;
                                     ^~~~~~~~~~~~~~~~~
              thread_base.cc:114:23: note: uses ‘void* operator new(std::size_t)’, which does not have an alignment parameter
              thread_base.cc:114:23: note: use ‘-faligned-new’ to enable C++17 over-aligned new support
              In file included from thread_base.h:44,
                               from thread_worker.h:40,
                               from thread_worker.cc:39:
              ../rak/priority_queue_default.h: In destructor ‘rak::priority_item::~priority_item()’:
              ../rak/priority_queue_default.h:56:95: warning: throw will always call terminate() [-Wterminate]
                     throw torrent::internal_error("priority_item::~priority_item() called on a queued item.");
                                                                                                             ^
              ../rak/priority_queue_default.h:56:95: note: in C++11 destructors default to noexcept
              mv -f .deps/thread_base.Tpo .deps/thread_base.Po
              In file included from rpc/command.h:240,
                               from rpc/command_map.h:45,
                               from rpc/parse_commands.h:43,
                               from thread_worker.cc:52:
              rpc/command_impl.h: In static member function ‘static void rpc::command_base::pop_stack(rpc::command_base::stack_type*, torrent::Object*)’:
              rpc/command_impl.h:105:58: warning: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘class torrent::Object’ with no trivial copy-assignment [-Wclass-memaccess]
                   std::memset(last_stack, 0xAA, sizeof(torrent::Object));
                                                                        ^
              In file included from rpc/command_map.h:43,
                               from rpc/parse_commands.h:43,
                               from thread_worker.cc:52:
              /usr/local/include/torrent/object.h:49:25: note: ‘class torrent::Object’ declared here
               class LIBTORRENT_EXPORT Object {
                                       ^~~~~~
              mv -f .deps/thread_worker.Tpo .deps/thread_worker.Po
              rm -f libsub_root.a
              ar cru libsub_root.a command_download.o command_dynamic.o command_events.o command_file.o command_ip.o command_helpers.o command_groups.o command_local.o command_logging.o command_network.o command_peer.o command_throttle.o command_tracker.o command_scheduler.o command_ui.o control.o globals.o option_parser.o signal_handler.o thread_base.o thread_worker.o
              ar: `u' modifier ignored since `D' is the default (see `U')
              ranlib libsub_root.a
              /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 -DNDEBUG -Wall -I/usr/local/include  -pthread   -I/usr/include/x86_64-linux-gnu -I/usr/local/include    -o rtorrent main.o libsub_root.a ui/libsub_ui.a core/libsub_core.a display/libsub_display.a input/libsub_input.a rpc/libsub_rpc.a utils/libsub_utils.a  -lncursesw -ltinfo  -lcppunit  -lcurl -L/usr/local/lib -ltorrent  -L/usr/local/lib   -lxmlrpc_server -lxmlrpc  -lxmlrpc_xmlparse -lxmlrpc_xmltok -lxmlrpc_util -lpthread
              libtool: link: g++ -g -O2 -DNDEBUG -Wall -I/usr/local/include -pthread -I/usr/include/x86_64-linux-gnu -I/usr/local/include -o rtorrent main.o  libsub_root.a ui/libsub_ui.a core/libsub_core.a display/libsub_display.a input/libsub_input.a rpc/libsub_rpc.a utils/libsub_utils.a -lncursesw -ltinfo -lcppunit /usr/lib/x86_64-linux-gnu/libcurl.so -L/usr/local/lib /usr/local/lib/libtorrent.so -lxmlrpc_server -lxmlrpc -lxmlrpc_xmlparse -lxmlrpc_xmltok -lxmlrpc_util -lpthread -pthread
              make[3]: Leaving directory '/tmp/rtorrent/src'
              make[2]: Leaving directory '/tmp/rtorrent/src'
              Making all in test
              make[2]: Entering directory '/tmp/rtorrent/test'
              make[2]: Nothing to be done for 'all'.
              make[2]: Leaving directory '/tmp/rtorrent/test'
              make[2]: Entering directory '/tmp/rtorrent'
              make[2]: Leaving directory '/tmp/rtorrent'
              make[1]: Leaving directory '/tmp/rtorrent'
              Making install in doc
              make[1]: Entering directory '/tmp/rtorrent/doc'
              make[2]: Entering directory '/tmp/rtorrent/doc'
              make[2]: Nothing to be done for 'install-exec-am'.
              make[2]: Nothing to be done for 'install-data-am'.
              make[2]: Leaving directory '/tmp/rtorrent/doc'
              make[1]: Leaving directory '/tmp/rtorrent/doc'
              Making install in src
              make[1]: Entering directory '/tmp/rtorrent/src'
              Making install in core
              make[2]: Entering directory '/tmp/rtorrent/src/core'
              make[3]: Entering directory '/tmp/rtorrent/src/core'
              make[3]: Nothing to be done for 'install-exec-am'.
              make[3]: Nothing to be done for 'install-data-am'.
              make[3]: Leaving directory '/tmp/rtorrent/src/core'
              make[2]: Leaving directory '/tmp/rtorrent/src/core'
              Making install in display
              make[2]: Entering directory '/tmp/rtorrent/src/display'
              make[3]: Entering directory '/tmp/rtorrent/src/display'
              make[3]: Nothing to be done for 'install-exec-am'.
              make[3]: Nothing to be done for 'install-data-am'.
              make[3]: Leaving directory '/tmp/rtorrent/src/display'
              make[2]: Leaving directory '/tmp/rtorrent/src/display'
              Making install in input
              make[2]: Entering directory '/tmp/rtorrent/src/input'
              make[3]: Entering directory '/tmp/rtorrent/src/input'
              make[3]: Nothing to be done for 'install-exec-am'.
              make[3]: Nothing to be done for 'install-data-am'.
              make[3]: Leaving directory '/tmp/rtorrent/src/input'
              make[2]: Leaving directory '/tmp/rtorrent/src/input'
              Making install in rpc
              make[2]: Entering directory '/tmp/rtorrent/src/rpc'
              make[3]: Entering directory '/tmp/rtorrent/src/rpc'
              make[3]: Nothing to be done for 'install-exec-am'.
              make[3]: Nothing to be done for 'install-data-am'.
              make[3]: Leaving directory '/tmp/rtorrent/src/rpc'
              make[2]: Leaving directory '/tmp/rtorrent/src/rpc'
              Making install in ui
              make[2]: Entering directory '/tmp/rtorrent/src/ui'
              make[3]: Entering directory '/tmp/rtorrent/src/ui'
              make[3]: Nothing to be done for 'install-exec-am'.
              make[3]: Nothing to be done for 'install-data-am'.
              make[3]: Leaving directory '/tmp/rtorrent/src/ui'
              make[2]: Leaving directory '/tmp/rtorrent/src/ui'
              Making install in utils
              make[2]: Entering directory '/tmp/rtorrent/src/utils'
              make[3]: Entering directory '/tmp/rtorrent/src/utils'
              make[3]: Nothing to be done for 'install-exec-am'.
              make[3]: Nothing to be done for 'install-data-am'.
              make[3]: Leaving directory '/tmp/rtorrent/src/utils'
              make[2]: Leaving directory '/tmp/rtorrent/src/utils'
              make[2]: Entering directory '/tmp/rtorrent/src'
              make[3]: Entering directory '/tmp/rtorrent/src'
               /bin/mkdir -p '/usr/local/bin'
                /bin/bash ../libtool   --mode=install /usr/bin/install -c rtorrent '/usr/local/bin'
              libtool: install: /usr/bin/install -c rtorrent /usr/local/bin/rtorrent
              make[3]: Nothing to be done for 'install-data-am'.
              make[3]: Leaving directory '/tmp/rtorrent/src'
              make[2]: Leaving directory '/tmp/rtorrent/src'
              make[1]: Leaving directory '/tmp/rtorrent/src'
              Making install in test
              make[1]: Entering directory '/tmp/rtorrent/test'
              make[2]: Entering directory '/tmp/rtorrent/test'
              make[2]: Nothing to be done for 'install-exec-am'.
              make[2]: Nothing to be done for 'install-data-am'.
              make[2]: Leaving directory '/tmp/rtorrent/test'
              make[1]: Leaving directory '/tmp/rtorrent/test'
              make[1]: Entering directory '/tmp/rtorrent'
              make[2]: Entering directory '/tmp/rtorrent'
              make[2]: Nothing to be done for 'install-exec-am'.
              make[2]: Nothing to be done for 'install-data-am'.
              make[2]: Leaving directory '/tmp/rtorrent'
              make[1]: Leaving directory '/tmp/rtorrent'
              
              Installing rTorrent v0.9.8     Done !
              
              /bin/mkdir: cannot create directory ‘/usr/share/scripts-perso’: File exists
              fatal: destination path '/var/www/rutorrent' already exists and is not an empty directory.
              
              Installing ruTorrent     Done !
              
              Cloning into 'rutorrent-plugins-pack'...
              remote: Enumerating objects: 910, done.
              remote: Counting objects: 100% (910/910), done.
              remote: Compressing objects: 100% (749/749), done.
              remote: Total 910 (delta 180), reused 879 (delta 154), pack-reused 0
              Receiving objects: 100% (910/910), 2.39 MiB | 3.80 MiB/s, done.
              Resolving deltas: 100% (180/180), done.
              Requirement already up-to-date: setuptools in /usr/local/lib/python2.7/dist-packages (41.2.0)
              Requirement already satisfied: cloudscraper in /usr/local/lib/python2.7/dist-packages (1.1.41)
              Requirement already satisfied: requests>=2.9.2 in /usr/local/lib/python2.7/dist-packages (from cloudscraper) (2.22.0)
              Requirement already satisfied: brotli>=1.0.7 in /usr/local/lib/python2.7/dist-packages (from cloudscraper) (1.0.7)
              Requirement already satisfied: pyopenssl>=17.0 in /usr/local/lib/python2.7/dist-packages (from cloudscraper) (19.0.0)
              Requirement already satisfied: requests-toolbelt>=0.9.1 in /usr/local/lib/python2.7/dist-packages (from cloudscraper) (0.9.1)
              Requirement already satisfied: js2py>=0.60 in /usr/local/lib/python2.7/dist-packages (from cloudscraper) (0.66)
              Requirement already satisfied: idna<2.9,>=2.5 in /usr/local/lib/python2.7/dist-packages (from requests>=2.9.2->cloudscraper) (2.8)
              Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python2.7/dist-packages (from requests>=2.9.2->cloudscraper) (3.0.4)
              Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/dist-packages (from requests>=2.9.2->cloudscraper) (2019.6.16)
              Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python2.7/dist-packages (from requests>=2.9.2->cloudscraper) (1.25.3)
              Requirement already satisfied: six>=1.5.2 in /usr/lib/python2.7/dist-packages (from pyopenssl>=17.0->cloudscraper) (1.12.0)
              Requirement already satisfied: cryptography>=2.3 in /usr/local/lib/python2.7/dist-packages (from pyopenssl>=17.0->cloudscraper) (2.7)
              Requirement already satisfied: tzlocal>=1.2 in /usr/local/lib/python2.7/dist-packages (from js2py>=0.60->cloudscraper) (2.0.0)
              Requirement already satisfied: pyjsparser>=2.5.1 in /usr/local/lib/python2.7/dist-packages (from js2py>=0.60->cloudscraper) (2.7.1)
              Requirement already satisfied: cffi!=1.11.3,>=1.8 in /usr/local/lib/python2.7/dist-packages (from cryptography>=2.3->pyopenssl>=17.0->cloudscraper) (1.12.3)
              Requirement already satisfied: ipaddress; python_version < "3" in /usr/lib/python2.7/dist-packages (from cryptography>=2.3->pyopenssl>=17.0->cloudscraper) (1.0.17)
              Requirement already satisfied: enum34; python_version < "3" in /usr/lib/python2.7/dist-packages (from cryptography>=2.3->pyopenssl>=17.0->cloudscraper) (1.1.6)
              Requirement already satisfied: asn1crypto>=0.21.0 in /usr/local/lib/python2.7/dist-packages (from cryptography>=2.3->pyopenssl>=17.0->cloudscraper) (0.24.0)
              Requirement already satisfied: pytz in /usr/local/lib/python2.7/dist-packages (from tzlocal>=1.2->js2py>=0.60->cloudscraper) (2019.2)
              Requirement already satisfied: pycparser in /usr/local/lib/python2.7/dist-packages (from cffi!=1.11.3,>=1.8->cryptography>=2.3->pyopenssl>=17.0->cloudscraper) (2.19)
              --2019-09-10 18:25:23--  https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
              Resolving geolite.maxmind.com (geolite.maxmind.com)... 104.17.200.89, 104.17.201.89, 2606:4700::6811:c959, ...
              Connecting to geolite.maxmind.com (geolite.maxmind.com)|104.17.200.89|:443... connected.
              HTTP request sent, awaiting response... 403 Forbidden
              2019-09-10 18:25:23 ERROR 403: Forbidden.
              
              tar (child): GeoLite2-City.tar.gz: Cannot open: No such file or directory
              tar (child): Error is not recoverable: exiting now
              /bin/tar: Child returned status 2
              /bin/tar: Error is not recoverable: exiting now
              bash: cd: /tmp/GeoLite2-City_*: No such file or directory
              root@PAR-152791:/tmp/rutorrent-bonobox#

              `

              Salut
              Déjà, il faut formater avant de relancer le script si ça plante, là ça ne peut pas gazer :

              /bin/mkdir: cannot create directory ‘/usr/share/scripts-perso’: File exists
              fatal: destination path '/var/www/rutorrent' already exists and is not an empty directory.

              J'ai testé une install' debian 9 ce matin et pas de soucis avec geolite.maxmind.com de mon coté :

              Résolution de geolite.maxmind.com (geolite.maxmind.com)… 104.17.201.89, 104.17.200.89, 2606:4700::6811:c959, ...
              Connexion à geolite.maxmind.com (geolite.maxmind.com)|104.17.201.89|:443… connecté.
              requête HTTP transmise, en attente de la réponse… 200 OK
              Taille : 30044666 (29M) [application/gzip]
              Sauvegarde en : « GeoLite2-City.tar.gz »

              Retente le coup après avoir mis au propre, tu installes sur quoi / chez qui ?
              Ex.