================================= Installation de MetPX Sarracenia ================================= Enregistrement de révision -------------------------- :version: |release| :date: |today| L’avez-vous déjà? ----------------- Si vous êtes sur un serveur avec celui-ci déjà installé, vous pouvez l’appeler comme suit:: fractal% sr3 status status: Component/Config State Run Miss Exp Retry ---------------- ----- --- ---- --- ----- total running configs: 0 ( processes: 0 missing: 0 stray: 0 ) fractal% Si cela fonctionne, alors vous n’avez pas besoin de l’installer. En supposant que ce n’est pas déjà fait installé, le package doit-il être installé à l’échelle du système ? ou seulement pour un seul utilisateur ? Pour une utilisation par un seul utilisateur, la méthode python `<#PIP>`_ doit fonctionner, donnant accès à sr3 a toutes les bibliothèques nécessaires à l’accès programmatique. Pour une utilisation opérationnelle, un accès administratif peut être nécessaire pour l’installation du package, et l’intégration avec systemd. Quelle que soit la façon dont il est installé, du traitement périodique (sur Linux généralement connu sous le nom de *cron jobs*) peut également avoir besoin d’être configuré. Des fois, Sarracenia peut être partiellement installé. Pour voir un inventaire des modules de Sarracenia qui sont disponible, on peut se servir de *sr3 features*:: fractal% sr3 features Status: feature: python imports: Description: Installed amqp amqp can connect to rabbitmq brokers Installed appdirs appdirs place configuration and state files appropriately for platform (windows/mac/linux) Installed filetypes magic able to set content headers Installed ftppoll dateparser,pytz able to poll with ftp Installed humanize humanize humans numbers that are easier to read. Absent mqtt paho.mqtt.client cannot connect to mqtt brokers Installed redis redis,redis_lock can use redis implementations of retry and nodupe Installed sftp paramiko can use sftp or ssh based services Installed vip netifaces able to use the vip option for high availability clustering Installed watch watchdog watch directories Installed xattr xattr on linux, will store file metadata in extended attributes MISSING clamd pyclamd cannot use clamd to av scan files transferred state dir: /home/peter/.cache/sr3 config dir: /home/peter/.config/sr3 fractal% le sens de chaque *feature* est expliqué (en anglais) et le modules python nécessaire pour permettre cette fonctionalité sont indiqué dans la troisième colonne. Dans l´exemple on peut voir que pyclamd manque à l´appel, tandis que *paramiko* nécessaire pour la fonctionallité SFTP est disponible. Installation Client ------------------- Le package est conçu pour python version 3.6 ou supérieure. Sur les systèmes où ils sont disponibles, les paquets debian sont recommandés. Ceux-ci peuvent être obtenus auprès du référentiel launchpad. Si vous ne pouvez pas utiliser les paquets Debian, envisagez les paquets pip avialable de PyPI. Dans les deux cas, les autres paquets python (ou dépendances) nécessaires seront installé automatiquement par le gestionnaire de paquets. Notez que dans certains cas, le système d'exploitation ne fournit pas tous les fonctionnalité pour toutes les fonctionnalités, de sorte que l'on peut compléter avec des packages pip, qui peut être installé à l'échelle du système, dans l'environnement d'un utilisateur ou même dans venv. Tant que *sr3 features* signale la fonctionnalité comme disponible, elle être utilisé. Ubuntu/Debian (apt/dpkg) **Recommandé** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sur Ubuntu 22.04 et dérivés du même:: sudo add-apt-repository ppa:ssc-hpc-chp-spc/metpx sudo apt update sudo apt install metpx-sr3 # pacquet principale. sudo apt install metpx-sr3c # client binaire (en C) . sudo apt install python3-amqp # support optionnel pour les courtiers AMWP (rabbitmq) sudo apt install python3-paramiko # support optionnel pour SFTP/SSH sudo apt install python3-magic # support optionnel pour les entêtes "content-type" dans les messages sudo apt install python3-xattr # support optionnel pour stocker les checksum des fichiers dans les attributs étendus. sudo apt install python3-paho-mqtt # support optionnel pour les courtiers MQTT sudo apt install python3-netifaces # support optionnel pour les vip (haut-disponibilité) sudo apt install python3-dateparser python3-pytz # support optionnel pour les sondages ftp. Si les paquets ne sont pas disponibles, on peut les remplacer en utilisant python install package (pip) Actuellement, seuls les paquets Debian incluent des pages de manuel. Les guides sont seulement disponible dans le référentiel de source. Pour les versions antérieures d’Ubuntu, installez via pip est requis en raison de dépendances manquantes dans l’environnement python livré avec des systèmes d’exploitation antérieurs. .. note:: pour bien juger si in fichier est un duplicat, dans le cas d'un application ou le checksum ne peut être dérivé du contenu (méthode: *abritrary* ( arbitraire ) ) le module python3-xattr est nécessaire. Un example d'un source affecté sera les données DMS. Si une option n’est pas installée, mais est nécessaire pour une configuration donnée, alors sr3 le détectera et se plaindra, et il faut installer le support manquant:: fractal% sr3 foreground subscribe/data-ingest .2022-04-01 13:44:48,551 [INFO] 2428565 sarracenia.flow loadCallbacks plugins to load: ['sarracenia.flowcb.post.message.Message', 'sarracenia.flowcb.gather.message.Message', 'sarracenia.flowcb.retry.Retry', 'sarracenia.flowcb.housekeeping.resources.Resources', 'sarracenia.flowcb.log.Log'] 2022-04-01 13:44:48,551 [CRITICAL] 2428565 sarracenia.moth ProtocolPresent support for amqp missing, please install python packages: ['amqp'] 2022-04-01 13:44:48,564 2428564 [CRITICAL] root run_command subprocess.run failed err=Command '['/usr/bin/python3', '/home/peter/Sarracenia/sr3/sarracenia/instance.py', '--no', '0', 'foreground', 'subscribe/data-ingest']' returned non-zero exit status 1. fractal% fractal% fractal% sudo apt install python3-amqp [sudo] password for peter: Reading package lists... Done Building dependency tree... Done Reading state information... Done The following packages were automatically installed and are no longer required: fonts-lyx g++-9 libblosc1 libgdk-pixbuf-xlib-2.0-0 libgdk-pixbuf2.0-0 libjs-jquery-ui liblbfgsb0 libnetplan0 libqhull-r8.0 libstdc++-9-dev python-babel-localedata python-matplotlib-data python-tables-data python3-alabaster python3-brotli python3-cycler python3-decorator python3-et-xmlfile python3-imagesize python3-jdcal python3-kiwisolver python3-lz4 python3-mpmath python3-numexpr python3-openpyxl python3-pandas-lib python3-protobuf python3-pymacaroons python3-pymeeus python3-regex python3-scipy python3-sip python3-smartypants python3-snowballstemmer python3-sympy python3-tables python3-tables-lib python3-tornado python3-unicodedata2 python3-xlrd python3-xlwt sphinx-common unicode-data Use 'sudo apt autoremove' to remove them. Suggested packages: python-amqp-doc The following NEW packages will be installed: python3-amqp 0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. Need to get 0 B/43.2 kB of archives. After this operation, 221 kB of additional disk space will be used. Selecting previously unselected package python3-amqp. (Reading database ... 460430 files and directories currently installed.) Preparing to unpack .../python3-amqp_5.0.9-1_all.deb ... Unpacking python3-amqp (5.0.9-1) ... Setting up python3-amqp (5.0.9-1) ... fractal% On peut satisfaire les exigences manquantes en utilisant des paquets Debian ou pip. pour utiliser les courtiers mqtt avec ubuntu 18.04, il faut obtenir la bibliothèque via pip, car les paquets debian sont pour une version trop ancienne.:: fractal% pip3 install paho-mqtt Defaulting to user installation because normal site-packages is not writeable Collecting paho-mqtt Using cached paho_mqtt-1.6.1-py3-none-any.whl Installing collected packages: paho-mqtt Successfully installed paho-mqtt-1.6.1 fractal% Distributions Redhat/Suse (basées sur rpm) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Python distutils sur les distributions basées sur le gestionnaire de paquets redhat ne gère pas les dépendances avec l’emballage actuel, il faut donc les installer manuellement. Par exemple, sur fedora 28 obligatoirement:: $ sudo dnf install python3-appdirs $ sudo dnf install python3-humanize $ sudo dnf install python3-psutil $ sudo dnf install python3-watchdog Facultatifs:: $ sudo dnf install python3-paramiko # support pour SFTP/SSH $ sudo dnf install python3-amqp # support pour les messages AMQP (couriers rabbitmq) $ sudo dnf install python3-file-magic # support optionnel pour le champs ¨content-type¨ $ sudo dnf install python3-xattr # support optionnel stocké certains métadonnées dans les attributs étendus. $ sudo dnf install python3-netifaces # support optionnel pour l´optio vip $ sudo dnf install python3-paho-mqtt # support optionnel pour les courtiers MQTT $ sudo dnf install python3-setuptools # needed to build rpm package. Si les paquets ne sont pas disponibles, l’un peut remplacer en utilisant python install package (pip) Une fois les dépendances en place, on peut construire un fichier RPM en utilisant ``setuptools``:: $ git clone https://github.com/MetPX/sarracenia $ cd sarracenia $ python3 setup.py bdist_rpm $ sudo rpm -i dist/*.noarch.rpm Cette procédure installe uniquement l’application python (pas celle en C). Aucune page de manuel ni aucune autre documentation n’est installée non plus. The paquet RPM n'inclut pas non plus l'intégration avec Systemd (pour rouler sarra comme une service.) Il faut faire cette installation manuellement:: groupadd sarra useradd -g sarra sarra wget https://github.com/MetPX/sarracenia/blob/development/debian/metpx-sr3.service cp metpx-sr3.service /lib/systemd/system cp metpx-sr3.service /etc/systemd/system Après cette intervention, on peut utiliser les commandes de SystemD normalement. (Oui, on est d´accord que ceci est triste, plus d´informations: https://github.com/MetPX/sarracenia/issues/863 ) PIP ~~~ Sur les distributions Windows ou Linux où les packages de système ne sont pas disponible, ou d’autres cas particuliers, tels que l’utilisation de python dans un virtual env, où il est plus pratique d’installer le paquet en utilisant pip (python install package) de `<http://pypi.python.org/>`_. Il est simple de le faire juste l’essentiel:: $ pip install metpx-sr3 on pourrait aussi ajouter les extras:: $ pip install metpx-sr3[amqp,mqtt,vip] Si veut avoir tous les extras:: $ pip install metpx-sr3[all] et à mettre à niveau après l’installation initiale:: $ pip install metpx-sr3 * Pour installer à l’échelle du serveur sur un serveur Linux, préfixez avec *sudo* NOTE:: * Sur de nombreux systèmes sur lesquels pythons 2 et 3 sont installés, vous devrez peut-être spécifier pip3 plutôt que pip. * En Windows, pour que la fonction de type de fichier fonctionne, il faut manuellement *pip install python-magic-bin* Pour plus de détails : https://pypi.org/project/python-magic/ Démarrage et arrêt du système ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Si l’intention est d’implémenter une pompe de données, il s’agit d’un serveur ayant un rôle à jouer dans la réalisation de grandes quantités de transferts de données, alors la convention est de créer une application *sarra* et de l'organiser pour qu’elle soit démarré au démarrage et arrêté à l’arrêt. Lorsque Sarracenia est installé à l’aide d’un paquet Debian : * Le fichier d'unité `SystemD <https://systemd.io>`_ est installé au bon endroit. * l’utilisateur sarra est créé, Si vous effectuez l’installation à l’aide de méthodes python3 (pip), ce fichier doit être installé : https://github.com/MetPX/sarracenia/blob/development/debian/metpx-sr3.service au bon endroit. Il peut être installé dans:: /lib/systemd/system/metpx-sr3.service une fois installé, il peut être activé de la manière normale. Il s’attendait à un utilisateur de sarra pour exister, qui pourrait être créé comme ça:: groupadd sarra useradd --system --create-home sarra Les répertoires doivent être read/write pour sarra. Les préférences iront dans ~sarra/.config, et les fichiers d’état seront dans ~sarra/.cache, et le le traitement périodique (voir la prochaine session) doit également être mis en œuvre. Traitement périodique/Tâches Cron ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Quelle que soit la façon dont il est installé, un traitement périodique supplémentaire peut être nécessaire: * pour exécuter *sr3 sanity* pour s’assurer que les processus appropriés sont en cours d’exécution. * pour nettoyer les anciens répertoires et éviter de remplir le systèmes de fichiers. exemples:: # tuer les processus errants ou redémarrer ceux qui auraient pu mourir. # en évitant le haut de l’heure ou le bas. 7,14,21,28,35,42,49,56 * * * sr3 sanity # exemple de travaux de nettoyage de répertoire, le script est inclus dans exemples / sous-répertoire. 17 5,11,17,23 * * * IPALIAS='192.168.1.27';RESULT=`/sbin/ip addr show | grep $IPALIAS|wc|awk '{print $1}'`; if [ $RESULT -eq 1 ]; then tools/old_hour_dirs.py 6 /Projects/web_root ; fi Windows ~~~~~~~ Sous Windows, il existe 2 (autres) options possibles : **Sans Python** Téléchargez le fichier d’installation de Sarracenia à partir de `here <https://hpfx.collab.science.gc.ca/~pas037/Sarracenia_Releases>`_, exécutez-le et suivez les instructions. N’oubliez pas d’ajouter *Le répertoire Python de Sarracenia* à votre *PATH*. **Avec Anaconda** Créez votre environnement avec le `file <../windows/sarracenia_env.yml>`_ suggéré par ce référentiel. L’exécution de cette commande à partir de l’invite Anaconda devrait tout installer:: $ conda env create -f sarracenia_env.yml Voir `Windows user manual <Windows.rst>`_ pour plus d’informations sur la façon d’exécuter Sarracenia sous Windows. Paquets ~~~~~~~ Les paquets Debian et les roues python peuvent être téléchargés directement De: `launchpad <https://launchpad.net/~ssc-hpc-chp-spc/+archive/ubuntu/metpx/+packages>`_ Source ------ Le code source de chaque module est disponible `<https://github.com/MetPX>`_:: $ git clone https://github.com/MetPX/sarracenia sarracenia $ cd sarracenia Le développement se fait sur la branche principale. On veut probablement une vraie release, alors exécutez git tag et faites un checkout de la dernière (la dernière version stable):: $ git tag . . . v3.00.48 v3.00.49 $ git checkout v3.00.49 $ python3 -m build --no-isolation $ pip3 install dist/metpx_sarracenia-3.00.49-py3-none-any.whl Sarrac ------ Le client C est disponible dans des binaires prédéfinis dans les launchpad référentiels aux côtés des paquets python :: $ sudo add-apt-repository ppa:ssc-hpc-chp-spc/metpx $ sudo apt-get update $ sudo apt-get install metpx-sr3c Pour toute version récente d’ubuntu. Le librabbitmq-0.8.0 a été rétroporté dans le PPA. la dépendance de sarrac. Pour d’autres architectures ou distributions, on peut construire à partir de la source :: $ git clone https://github.com/MetPX/sarrac sur n’importe quel système Linux, tant que la dépendance librabbitmq est satisfaite. Notez que le package ne peux pas se construire ou s'exécuter sur des systèmes non-Linux.