Installation de MetPX Sarracenia

Enregistrement de révision

version:

3.00.57rc0

date:

Nov 13, 2024

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 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é :

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, 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 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 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

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.