Review syntax and some details in packaging_apps_helper_fr

This commit is contained in:
Jérôme Lebleu 2016-06-01 12:11:12 +02:00
parent b2f19b2c86
commit aa50ef79e9

View file

@ -3,7 +3,7 @@
## Commandes pratiques en Shell ## Commandes pratiques en Shell
À partir de YunoHost 2.4, de **nouvelles commandes pratiques *(helpers)* en shell** sont disponible pour faciliter le *packaging*, particulièrement pour des tâches répétitives comme la génération de mot de passe, la création de base de donnés MySQL… À partir de YunoHost 2.4, de **nouvelles commandes pratiques *(helpers)* en shell** sont disponible pour faciliter le *packaging*, particulièrement pour des tâches répétitives comme la génération de mot de passe, la création de base de données MySQL…
Des exemples sont disponibles dans l[application dexemple](https://github.com/YunoHost/example_ynh/blob/master/scripts/install). Il est conseillé dutiliser les commandes pratiques. Des exemples sont disponibles dans l[application dexemple](https://github.com/YunoHost/example_ynh/blob/master/scripts/install). Il est conseillé dutiliser les commandes pratiques.
@ -18,240 +18,238 @@ source /usr/share/yunohost/helpers
Le script helpers va exécuter tout les scripts présent dans helpers.d et donc charger les fonctions des helpers. Afin qu'elles puissent être appelées simplement. Le script helpers va exécuter tout les scripts présent dans helpers.d et donc charger les fonctions des helpers. Afin qu'elles puissent être appelées simplement.
### Liste non exhaustive des helpers disponibles: ### Liste non exhaustive des helpers disponibles
#### Base de données: #### Base de données
```bash ```bash
ynh_mysql_execute_as_root SQL DB ynh_mysql_execute_as_root SQL DB
``` ```
>Cette commande exécute la commande SQL `SQL` sur la base de donnée `DB` avec les droit de l'utilisateur root de mysql. > Exécute la commande SQL `SQL` en tant que l'utilisateur root sur la base de données `DB` (ce dernier argument est optionnel).
```bash ```bash
ynh_mysql_execute_file_as_root FILE DB ynh_mysql_execute_file_as_root FILE DB
``` ```
>Cette commande éxecute un ensemble de commande SQL contenu dans le fichier `FILE` sur la base de donnée `DB` avec les droit de l'utilisateur root de mysql. > Exécute les commandes SQL contenues dans le fichier `FILE` en tant que l'utilisateur root sur la base de données `DB` (ce dernier argument est optionnel).
```bash ```bash
ynh_mysql_create_db DB USER PWD ynh_mysql_create_db DB USER PWD
``` ```
>Cette commande créer la base de donnée `DB` et l'utilisateur `USER` qui a comme mot de passe `PWD`. > Crée la base de données `DB` et donne tous les droits sur celle-ci à l'utilisateur `USER` (automatiquement créé) identifié par le mot de passe `PWD`.
>L'utilisateur créé dispose de droits administrateur sur cette seule base de donnée.
```bash ```bash
ynh_mysql_drop_db DB ynh_mysql_drop_db DB
``` ```
>Cette commande supprime la base de donnée `DB`. > Supprime la base de données `DB`.
```bash ```bash
ynh_mysql_dump_db DB > ./FILE ynh_mysql_dump_db DB > ./FILE
``` ```
>Cette commande exporte la base de donnée `DB` dans le fichier `FILE`. > Exporte la base de données `DB` dans le fichier `FILE`.
#### Gestion des paquets Debian
#### Gestion des paquets debian:
```bash ```bash
ynh_package_is_installed PACKAGE ynh_package_is_installed PACKAGE
``` ```
>Cette commande vérifie si le paquet `PACKAGE` est installé sur le système. > Détermine si le paquet `PACKAGE` est installé sur le système.
>La sortie de la commande doit être testée pour en connaître le résultat. > La sortie de la commande doit être testée pour en connaître le résultat. Par exemple :
>```bash > ```bash
>ynh_package_is_installed "yunohost" > if ! ynh_package_is_installed "yunohost" ; then
>if [[ $? -eq 0 ]]; then > echo "Oups, le paquet n'est pas installé."
> echo "Le package est installé." > else
>fi > echo "Le paquet est installé !"
>``` > fi
> ```
```bash ```bash
ynh_package_version PACKAGE ynh_package_version PACKAGE
``` ```
>Cette commande renvoie le numéro de version du paquet `PACKAGE` installé sur le système. > Retourne la version du paquet `PACKAGE` installé sur le système.
```bash ```bash
ynh_package_update ynh_package_update
``` ```
>Cette commande met à jour la liste des applications disponible de façon silencieuse et non interactive. > Met à jour la liste des paquets disponibles de manière silencieuse et non interactive.
>C'est un apt-get update avec les options -y -qq et noninteractive. > C'est un `apt-get update` avec les options -y -qq et noninteractive.
**Attention, les commandes suivantes sont à éviter autant que possible. Il n'est pas sain d'installer et encore moins de supprimer un paquet sans en gérer les conflits et dépendances. Ceci sera bientôt facilité dans les prochaines versions de YunoHost...**
```bash ```bash
ynh_package_install PACKAGE1 PACKAGE2 ynh_package_install PACKAGE1 PACKAGE2
``` ```
>Cette commande installe les paquets `PACKAGE1`, `PACKAGE2`, etc de manière non interactive et silencieuse. > Installe les paquets `PACKAGE1`, `PACKAGE2`, etc de manière non interactive et silencieuse.
>C'est un apt-get install avec les options -y -qq et noninteractive. > C'est un `apt-get install` avec les options -y -qq et noninteractive.
```bash ```bash
ynh_package_remove PACKAGE1 PACKAGE2 ynh_package_remove PACKAGE1 PACKAGE2
``` ```
>Cette commande supprime les paquets `PACKAGE1`, `PACKAGE2`, etc de manière non interactive et silencieuse. > Supprime les paquets `PACKAGE1`, `PACKAGE2`, etc de manière non interactive et silencieuse.
>C'est un apt-get remove avec les options -y -qq et noninteractive. > C'est un `apt-get remove` avec les options -y -qq et noninteractive.
```bash ```bash
ynh_package_autoremove PACKAGE1 PACKAGE2 ynh_package_autoremove PACKAGE1 PACKAGE2
``` ```
>Cette commande supprime les paquets `PACKAGE1`, `PACKAGE2`, etc ainsi que leurs dépendances, si elles ne sont plus utilisées, de manière non interactive et silencieuse. > Supprime les paquets `PACKAGE1`, `PACKAGE2`, etc ainsi que tous les paquets qui ne semblent plus utilisé, de manière non interactive et silencieuse.
>C'est un apt-get autoremove avec les options -y -qq et noninteractive. > C'est un `apt-get autoremove` avec les options -y -qq et noninteractive.
#### Configuration des applications
#### Configuration des applications:
```bash ```bash
ynh_app_setting_set APP KEY VALUE ynh_app_setting_set APP KEY VALUE
``` ```
>Cette commande permet de stocker le réglage nommé `KEY` dont la valeur est `VALUE` pour l'application `APP `, afin de le réutiliser plus tard (typiquement dans le script `upgrade`) ou pour que YunoHost puisse se configurer automatiquement (par exemple pour le SSO). > Stocke le réglage nommé `KEY` dont la valeur est `VALUE` pour l'application `APP `, afin de le réutiliser plus tard (typiquement dans le script `upgrade`) ou pour que YunoHost puisse se configurer automatiquement (par exemple pour le SSO).
>Les réglages sont stockés dans le fichier /etc/yunohost/apps/${APP}/settings.yml. > Les réglages sont stockés dans le fichier /etc/yunohost/apps/${APP}/settings.yml.
>Par exemple, pour stocker le paramètre de visibilité, privé ou public, d'une application, on notera ainsi: > Par exemple, pour stocker le paramètre de visibilité, privé ou public, d'une application, on notera ainsi :
>```bash > ```bash
>ynh_app_setting_set nom_app is_public "yes" > ynh_app_setting_set nom_app is_public "yes"
>``` > ```
Le SSO fait appel aux réglages stockés pour l'application afin de déterminer si cette dernière peux être accessible publiquement ou non. Le SSO fait appel aux réglages stockés pour l'application afin de déterminer si cette dernière peux être accessible publiquement ou non.
Pour cela, 6 *key* différents sont disponible: Pour cela, 6 clés différents sont disponible :
Tout d'abord les *key* `skipped_uris`, `unprotected_uris` et `protected_uris`. Ces 3 *key* sont relatif au *path* de l'application. Tout d'abord `skipped_uris`, `unprotected_uris` et `protected_uris`. Ces 3 clés sont relatives au chemin (ou *path*) de l'application.
>Par exemple > Par exemple :
>```bash > ```bash
>ynh_app_setting_set nom_app skipped_uris "/" > ynh_app_setting_set nom_app skipped_uris "/"
>``` > ```
>concernera la racine de l'application. Soit https://domain.tld/path_app/ ainsi que tout ce qui suivra. > concernera la racine de l'application, soit https://domain.tld/path_app/ ainsi que tout ce qui suivra.
>Alors que > Alors que :
>```bash > ```bash
>ynh_app_setting_set nom_app skipped_uris "/blog" > ynh_app_setting_set nom_app skipped_uris "/blog"
>``` > ```
>concernera le path /blog de l'application. Soit https://domain.tld/path_app/blog et ce qui suivra. Mais pas https://domain.tld/path_app/ > concernera le path /blog de l'application, soit https://domain.tld/path_app/blog et ce qui suivra, mais pas https://domain.tld/path_app/.
**skipped_uris** **skipped_uris**
Une url ajoutée avec le *key* *skipped_uris* sera totalement ignorée par le SSO, donc l'accès sera publique et ne prendra pas en compte un utilisateur déjà connecté. Une url ajoutée avec la clé *skipped_uris* sera totalement ignorée par le SSO, donc l'accès sera publique et ne prendra pas en compte un utilisateur déjà connecté.
**unprotected_uris** **unprotected_uris**
Une url ajoutée avec le *key* *unprotected_uris* sera accessible publiquement, mais un utilisateur connecté au SSO pourra se connecter en utilisant le header HTTP. Une url ajoutée avec la clé *unprotected_uris* sera accessible publiquement, mais un utilisateur connecté au SSO pourra se connecter en utilisant le header HTTP.
**protected_uris** **protected_uris**
Une url ajoutée avec le *key* *protected_uris* sera bloquée par le SSO et accessible uniquement aux utilisateurs authentifiés. Une url ajoutée avec la clé *protected_uris* sera bloquée par le SSO et accessible uniquement aux utilisateurs authentifiés.
Les *key* `skipped_regex`, `unprotected_regex` et `protected_regex` sont les équivalents en "expressions régulières" des 3 *key* précédentes Les clés `skipped_regex`, `unprotected_regex` et `protected_regex` sont les équivalents en "expressions régulières" des 3 clés précédentes.
> Il est important de noter que ce ne sont pas véritablement des expressions régulières qui seront interprétés, mais des patterns lua, dont la syntaxe différe légèrement. > Il est important de noter que ce ne sont pas véritablement des expressions régulières qui seront interprétés, mais des patterns lua, dont la syntaxe différe légèrement.
> [Plus d'infos sur la syntaxe des patterns lua.](http://wxlua.free.fr/Tutoriel_Lua/Tuto/Strings/strings6.php) [Ainsi que quelques exemples.](http://wxlua.free.fr/Tutoriel_Lua/Tuto/Strings/strings7.php) > [Plus d'infos sur la syntaxe des patterns lua.](http://wxlua.free.fr/Tutoriel_Lua/Tuto/Strings/strings6.php) [Ainsi que quelques exemples.](http://wxlua.free.fr/Tutoriel_Lua/Tuto/Strings/strings7.php)
Le pattern étant recherché sur l'ensemble des urls soumises, afin d'éviter des débordements on préfera ajouter au pattern l'url complète qui doit être prise en compte par ssowat. Le pattern étant recherché sur l'ensemble des urls soumises, afin d'éviter des débordements on préfera ajouter au pattern l'url complète qui doit être prise en compte par ssowat.
>Par exemple, si on souhaite placer *skipped_regex* sur /blog en considérant une suite de chiffres indéfinie en argument. On indiquera ceci: > Par exemple, si on souhaite placer *skipped_regex* sur /blog en considérant une suite de chiffres indéfinie en argument. On indiquera ceci :
>```bash > ```bash
>ynh_app_setting_set nom_app skipped_regex "$domain$path/blog%?%d+$" > ynh_app_setting_set nom_app skipped_regex "$domain$path/blog%?%d+$"
>``` > ```
>Cela pose toutefois un éventuel problème, si les variables $domain ou $path contiennent un tiret (-), celui-ci sera interprété comme étant un caractère magique du pattern. Il faut donc échapper les éventuels tirets avec un %. > Cela pose toutefois un éventuel problème, si les variables $domain ou $path contiennent un tiret (-), celui-ci sera interprété comme étant un caractère magique du pattern. Il faut donc échapper les éventuels tirets avec un %.
>```bash > ```bash
>domainregex=$(echo "$domain" | sed 's/-/\%&/g') > domainregex=$(echo "$domain" | sed 's/-/\%&/g')
>pathregex=$(echo "$path" | sed 's/-/\%&/g') > pathregex=$(echo "$path" | sed 's/-/\%&/g')
>ynh_app_setting_set nom_app skipped_regex "$domainregex$pathregex/blog%?%d+$" > ynh_app_setting_set nom_app skipped_regex "$domainregex$pathregex/blog%?%d+$"
>``` > ```
```bash ```bash
ynh_app_setting_get APP KEY ynh_app_setting_get APP KEY
``` ```
> Cette commande récupère le paramètre `KEY` stocké précémment pour l'application `APP` à l'aide de *ynh_app_setting_set* > Récupère le paramètre `KEY` stocké précémment pour l'application `APP`.
>Par exemple > Par exemple :
>```bash > ```bash
>is_public=$(ynh_app_setting_get nom_app is_public) > is_public=$(ynh_app_setting_get nom_app is_public)
>``` > ```
```bash ```bash
ynh_app_setting_delete APP KEY ynh_app_setting_delete APP KEY
``` ```
> Cette commande supprime le paramètre `KEY` enregistré pour l'application `APP`. > Supprime le paramètre `KEY` enregistré pour l'application `APP`.
#### Gestion des utilisateurs
#### Gestion des utilisteurs:
```bash ```bash
ynh_user_exists USERNAME ynh_user_exists USERNAME
``` ```
> Cette commande vérifie l'existence de l'utilisateur `USERNAME` dans Yunohost. > Vérifie l'existence de l'utilisateur `USERNAME` dans Yunohost.
>La sortie de la commande doit être testée pour en connaître le résultat. > La sortie de la commande doit être testée pour en connaître le résultat. Par exemple :
>```bash > ```bash
>ynh_user_exists "johndoe" > if ynh_user_exists "johndoe" ; then
>if [[ $? -eq 0 ]]; then > echo "L'utilisateur existe !"
> echo "L'utilisateur existe." > fi
>fi > ```
>```
```bash ```bash
ynh_user_get_info USERNAME KEY ynh_user_get_info USERNAME KEY
``` ```
> Cette commande récupère l'information `KEY` sur l'utilisateur `USERNAME`. > Récupère l'information `KEY` sur l'utilisateur `USERNAME`.
> Les informations pouvant être récupérés sur un utilisateur sont: > Les valeurs possibles de `KEY` sont :
> - firstname > - firstname
> - fullname > - fullname
> - lastname > - lastname
> - mail > - mail
> - mail-aliases > - mail-aliases
> - mailbox-quota > - mailbox-quota
>Par exemple > Par exemple :
>```bash > ```bash
>mailadmin=$(ynh_user_get_info $admin mail) > mailadmin=$(ynh_user_get_info $admin mail)
>``` > ```
```bash ```bash
ynh_system_user_exists USERNAME ynh_system_user_exists USERNAME
``` ```
> Cette commande vérifie l'existence de l'utilisateur `USERNAME` sur le système. > Détermine si l'utilisateur `USERNAME` existe sur le système.
>La sortie de la commande doit être testée pour en connaître le résultat. > La sortie de la commande doit être testée pour en connaître le résultat. Par exemple :
>```bash > ```bash
>ynh_system_user_exists "www-data" > if ynh_system_user_exists "www-data" ; then
>if [[ $? -eq 0 ]]; then > echo "L'utilisateur existe sur le système !"
> echo "L'utilisateur existe sur le système." > fi
>fi > ```
>```
#### Autres commandes
#### Autres commandes:
```bash ```bash
ynh_string_random LENGTH ynh_string_random LENGTH
``` ```
> Cette commande génère une chaine de caractères aléatoires de longueur `LENGTH`. > Génère une chaine de caractères aléatoires de longueur `LENGTH` (par défaut 24).
```bash ```bash
ynh_die MSG RETCODE ynh_die MSG RETCODE
``` ```
> Cette commande affiche le message `MSG` sur stderr et exécute la commande exit avec le code de sortie `RETCODE` > Affiche le message `MSG` (sur stderr) et termine le script avec le code `RETCODE` (par défaut 1).
**Les commandes suivantes sont amenées à être remplacées (voir supprimées) dans les prochaines versions de YunoHost.**
```bash ```bash
sudo yunohost app checkport PORT sudo yunohost app checkport PORT
``` ```
>Cette commande vérifie le `PORT` et retourne une erreur si il est déjà utilisé. > Cette commande vérifie le `PORT` et retourne une erreur si il est déjà utilisé.
>La sortie de la commande doit être testée pour en connaître le résultat. > La sortie de la commande doit être testée pour en connaître le résultat. Par exemple :
```bash > ```bash
port=PORT_PAR_DEFAUT > port=PORT_PAR_DEFAUT
sudo yunohost app checkport $port > sudo yunohost app checkport $port
while [[ ! $? -eq 0 ]]; do > while [[ ! $? -eq 0 ]]; do
port=$((port+1)) > port=$((port+1))
sudo yunohost app checkport $port > sudo yunohost app checkport $port
done > done
``` > ```
```bash ```bash
sudo yunohost app checkurl DOMAINPATH -a APP sudo yunohost app checkurl DOMAINPATH -a APP
``` ```
>Cette commande vérifie la disponibilité du chemin DOMAIN/PATH. Il est utile pour les applications web et vous permet dêtre sûr que le chemin nest pas utilisé par une autre application. Si le chemin est inutilisé, elle le « réserve » pour l'application APP. > Cette commande vérifie la disponibilité du chemin DOMAIN/PATH. Il est utile pour les applications web et vous permet dêtre sûr que le chemin nest pas utilisé par une autre application. Si le chemin est inutilisé, elle le « réserve » pour l'application APP.
> **Remarque** : ne pas préfixer par `http://` ou par `https://` dans le `DOMAINPATH`.
>**Remarque** : ne pas préfixer par `http://` ou par `https://` dans le `DOMAINPATH`.
```bash ```bash
sudo yunohost app ssowatconf sudo yunohost app ssowatconf
``` ```
>Cette commande régénère la configuration du SSO. Elle est appelée automatiquement à la fin du script. > Cette commande régénère la configuration du SSO. Elle est appelée automatiquement à la fin du script.
>Mais peux être appelée avant si nécessaire. > Mais peux être appelée avant si nécessaire.