# Annexes de wikibooks

* Une version imprimable du livre « Annexes de wikibooks » est disponible. (voir/ modifier)
Pourquoi titrer Annexes_de_wikibooks plutôt que Annexes_de_wikilivres sur un site en français ?
Pourquoi « vouloir » créer une page Annexe aux livres de Wikibooks ?

# Genèse

C'est arrivé comme ça. Créer une application pour générer automatiquement la page Annexe des livres de Wikibooks, semblable à celle produite par PediaPress. PediaPress utilise une application spéciale accessible par les utilisateurs sur le panneau gauche de l'éditeur: Créer une compilation
L'idée est d'utiliser le contenu édité de cette compilation.
La page de compilation sur le site français a cette forme [[Wikilivres:Compilations/TITRE DU LIVRE]]
    Exemple de page:
    Exemple de contenu de page: ce sont des liens vers des sous-pages
Pour créer le livre il faut lancer un terminal et créer un répertoire que l'on a appelé "Annexe" dans notre expérience. Ensuite il faut créer l'application qui va décortiquer les sous-pages du livre pour en extraire tous les renseignements utiles à l'édition de l'Annexe du livre.
Wikibooks se veut accessible à tous. Le langage de programmation que nous avons choisi est le Bash sous linux ubuntu. Linux ubuntu est installable en auto-démarrage (autoboot) sur une clé usb.

## Résumé introductif (mars-avril 2020)

Cette étude a été initiée avec l'article Auto-éditer un wikilivre/Auto-référencer, il décrit en détail la progression de la programmation.
Français: est un peu comme un puzzle. On croit que la commande que l'on vient d'écrire va marcher immédiatement, mais non ! Au bout de quelque temps on donne sa langue au chat et on va interroger les forums en espérant trouver une solution; ne serait-ce que pour comprendre la différence entre les parenthèse et double parenthèses : (...) ((...)) [...] {...} toutes ces parenthèses se ressemblent et n'expriment pas le même concept. Voila donc un bon passe-temps pour remplir des journées vides de sens.
English: It's kind of like a puzzle. We believe that the command line we just wrote will work immediately, but no! After some time we will go to the forums hoping to find a solution; even if hope only to understand the difference between brackets and double brackets: (...) ((...)) ... {...} all these brackets are similar and do not express the same concept. It is a good pastime to fill empty days of meaning.
Les codes informatiques de ces articles ne sont pas prévus pour être intégrés dans un livre. Ils sont présentés pour être expliqués, voire corrigés. Chacun pourra les copier et faire des essais personnels d'encodage. L'encodage paraît facile, chaque ligne un peu compliquée demande parfois des heures de travail; alors, ne changez pas ces codes sans être absolument certain que cela en vaut la peine.
Les documents imprimables de ces articles, en Version imprimable ou Version compilée, sont (ou seront) imprimés sans le code informatique. Il en est (en sera) de même pour les manuels html et man de linux avec la version internationalisée du programme Annexer ou Annex ou encore AddAppendix; le nom pertinent n'est pas encore trouvé.

## Tests de faisabilité ( et tests des premiers modules )

* Choix du langage de programmation, et tests des premiers modules.
Auto référencer
Auto référencer Version imprimable (36 pages)

# Développement des scripts en français
## Premier programme ( Annexer )

* Avec les tests de tous les modules

### Version imprimable

* Cette version du logiciel Annexer reprend les scripts et complémente le livre pour être exploitable tel quel.
Annexer (92 pages)
* Ce logiciel de démonstration est téléchargeable par ftp

### Codes de l'application en français avec les manuels

Auto-éditer_un_wikilivre#codes_de_l'application_en_français_avec_les_manuels

### Copier les codes sources avec la version imprimable

Auto-éditer_un_wikilivre#Copier_les_codes_sources_avec_la_version_imprimable

# Développement international des scripts

* Les messages et les manuels doivent être en anglais et traduits en français et autres langues.
* Les codes sources sont habituellement écrits en anglais afin d'assurer la maintenance universelle.

## Deuxième programme ( Annexer / Add_appendix )

* Au mois de mai 2020 l'idée de partager cette application dans la communauté internationale s'est imposée.

### Dans un premier temps

    Les modules de programmes ont les mêmes que ceux du programme Annexer. Ils ont été réécrits pour être utilisés à la fois en langue française avec Annexer et anglaise avec Add_appendix$^{danslesversionsultérieureslaversiondoubleseraprobablementêtresuppriméelorsquelestraductionsaurontétéeffectuées}$.

### Dans un deuxième temps

    Les modules pré-annex, annexer et addapendix ont été ajoutés et la librairie annex.lib s'est étoffée.

### Avec le programme bêta

    Nous avons voulu produire des scripts selon la tradition de Wikibooks:
* qu'ils soient pédagogiques (? pas facile)
* qu'ils soient publics et lisibles, donc sans compilations pour leurs exécutions, cependant nous voulons qu'ils soient utilisables sur d'autres systèmes d'exploitation. Seuls les scripts destinés aux administrateurs peuvent être compilés et copiés dans sbin avec shc pour linux ou exécutables sous windows avec mingw
* que les messages soient traduisibles avec gettext dans toutes les langues et adaptables pour d'autres systèmes d'exploitation.
* Les scripts seront produits sous linux ubuntu

### *** Copier les codes sources avec la version imprimable ***

    Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)/Version_imprimable

### Installations

* Exception faite pour l'installation par paquets, ces installations sont fastidieuses.
* Il est possible d’installer ce logiciel sous Windows avec Cygwin

#### Une première installation en version personnelle

* users_install_annex.sh: permet de créer la structure de base des répertoires. et de suivre les indications de l’installation_utilisateur:
    installation utilisateur

#### Une deuxième installation en version administrateur

* On fait de mème avec le script admin_install_annex.sh cette installation plus compliquée est plutôt destinées aux familiers de la programmation sous Linux.
    installation administrateur script à revoir

#### Une troisième installation en version tous-utilisateurs

* Cette installation est possible avec 'install_annex.sh' script à revoir après une expérience avec une des installations précédentes.
* Le nombre de répertoires est réduit dans le répertoire utilisateur. Le logiciel est entièrement installé dans le système Linux.
    dans: /usr/local/bin, /usr/local/lib /usr/local/sbin, /usr/share/man, /usr/share/locale etc.

#### Une dernière installation (Makefile)

* Installation avec le Makefile_d'installation_de_Add-appendix_proposé_aux_tests. Cette installation remplace avantageusement la troisième installation.

#### Désinstallation

* La désinstallation concerne tous les logiciels énumérés ci-dessus
Note: La désinstallation des paquets est incluse dans les paquet et ne nécessite pas une désinstallation séparée

##### Désinstallation de l'installation par Makefile

* Le Makefile contient tous les fichiers d'installation et doit inclure sa propre désinstallation « ./désinstall »

#### Installation par paquets

* C'est l'installation facile sous linux. Les paquets .deb et .rpm et sont en cours d'écriture, en fin décembre 2021 pour la version bêta-1.

# Notion d'empaquetage
## Exemple avec le paquet mkaddappendixdocu.deb
### Généralités sur l'empaquetage Linux-ubuntu

* Exemple pour la compréhension; avec le système d'exploitation linux-ubuntu.
* Cet exemple copié de edeulo.free.fr/wiki/index.php/Les_paquets

#### Structure de l'archive bêta mkaddapendixdocu

Exemple d'un empaquetage simple mkaddappendixdocu.deb
    les <archives> doivent avoir la forme: <executable>-<version>.tar.gz en minuscules pour les dépôts ppa
    Notre archive sera nommée mkaddappendixdocu.tar.gz sans référence de version.
    Le préfixe mk et la version n'ont pas d'importance pour cet exercice de création personnelle.
    Création du paquet utilisateur en local: mkaddappendixdocu.deb

   ##### Cette structure, dans un premier temps, crée uniquement la documentation des fichiers sources

    Les répertoires seront ensuite complétés pour créer le paquet final
    Les fichiers sources se trouvent initialement dans le répertoire /usr/local/src/Add_appendix/
    le répertoire './' est un répertoire de l'utilisateur qui peut être, par exemple ~/packaging/addappendix/.
    On se place dans le répertoire de production des paquets en exemple: (copier, coller, exécuter dans un terminal)
* copier (Ctrl-c), coller dans le terminal (Ctrl-shift-v), exécuter (Retour-chariot).
    ~/packaging/addappendix doit contenir nos utilitaires et les fichiers d'installation mkaddapendixdocu/*.
    './mkaddapendixdocu' est appelé répertoire origine ou répertoire racine de notre paquet en projet.
    Tout ce qui nous intéresse pour la construction du paquet doit se trouver dans ce répertoire.
    Tous les exécutables qui nous permettent d'empaqueter, installer, désinstaller le paquet sont dans ~/packaging/addappendix/ (en exemple)

#### mkaddapendixdocu

* Crée la documentation des fichiers de programmes

#### changelog.debian

* Fichier nécessaire à la création du paquet, peut être vide.
* copy (Ctrl-c) paste in terminal or konsole (Ctrl-shift-v) and execute

#### copyright

* Fichier nécessaire à la création du paquet, peut être vide.
* copy (Ctrl-c) paste in terminal or konsole (Ctrl-shift-v) execute

#### changelog

* Fichier nécessaire à la création du paquet, peut être vide.

#### README

* Fichier utile à la construction du paquet.

#### postrm

* Script exécuté après la suppression du paquet (si nécessaire)
* Ce script peut mettre à jour des données comme cat (catman), whatis, et autres nettoyages

#### control

* fichier nécessaire à la construction du paquet.
* Le classement des paquets pour la recherche des programmes doit être choisi dans une des sections: admin, devel, doc, graphics, libs, misc, net, otherof, pyton, shell, sound, text, utils, x11

#### postinst

* Script exécuté après la création du paquet (si nécessaire)
* Cet exécutable peut mettre à jour 'cat' (catman), whatis et toute autre action.

#### ./empaqueter

* in your $HOME directory:

#### ./KONSOLE

* Pour faciliter le travail dans le répertoire de travail courant

#### Création de la structure

* Nous voulons créer un exécutable mkaddappendixdocu pour générer la documentation des scripts de l'application Add_appendix.
* Pour cela nous allons apprendre à construire un paquet ubuntu de nom mkaddappendixdocu.deb, simple, personnel, sans référence de version.
* Ainsi quelle que soit la version de l'application Add_appendix on pourra générer la documentation que l'on trouvera dans le répertoire /usr/local/share/doc/maintainers-documentation/sources-add-appendix-*. Pour que cet exécutable soit toujours valable il faut évidemment que les sources se trouvent toujours au même endroit, dans /usr/local/src/Add_appendix/*
* Lancer le terminal ou la konsole
* Entrer dans le répertoire racine de l'utilisateur cd
* Copier ce code ci après, le coller dans un éditeur de texte et l’enregistrer sous le nom mk-addapendix-docu.bash dans la racine de votre répertoire utilisateur.
* Changer le mode du fichier chmod 755 mk-addapendix-docu.bash
* Exécuter le code ./mk-addappendix-docu.bash Attention, ne confondez pas avec mkaddapendixdocu
* Copier le code, coller le code mkaddapendixdocu dans mk-addapendix-docu/usr/local/bin/.
* Copier le code empaqueter coller le dans le répertoire racine du paquet mk-addapendix-docu
* Faites de même avec installer, désinstaller, KONSOLE
* Copier, coller tous les fichiers sources dans le répertoire mk-addapendix-docu/usr/local/src/Add_appendix
* liste des sources à télécharger dans le répertoire des sources Add_appendix:
add_sclic.sh, add_sclipco.sh, add_sclipwb.sh, add_sclt.sh, annex.sh, download.sh, en_sclic.inc.sh, en_sclipco.inc.sh, en_sclipwb.inc.sh, en_sclt.inc.sh, fr_sclic.inc.sh, fr_sclipco.inc.sh, fr_sclipwb.inc.sh, fr_sclt.inc.sh, header.inc.sh, list.sh, pre-annex.sh, scli.inc.sh

### script pour faciliter la création de mk-addapendix-docu.bash

* Ce script est destiné à faciliter la création de la structure du paquet plutôt que le copier-coller. (Il ne fait pas partie du paquet.)
* Il faut cependant vérifier les codes, voire les modifier selon l'usage que l'on veut obtenir.

# Dépôt d'un paquet linux-ubuntu sur un site personnel de confiance (PPA)

La finalité se trouve dans ce Wikilivre technique avec la construction du paquet addappendix

# Références

* ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Résumé_introductif
* ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer
* ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer/Version_imprimable
* ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_orignale)/Version_imprimable
* ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre#codes_de_l'application_en_français_avec_les_manuels]]
* ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre#Copier_les_codes_sources_avec_la_version_imprimable
* ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)/Version_imprimable
* ↑ https://fr.wikibooks.org/w/index.php?title=Annexes_de_wikibooks/installation_utilisateur
* ↑ https://fr.wikibooks.org/wiki/Annexes_de_wikibooks/installation_administrateur
* ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)#Makefile_d'installation_de_Add-appendix_proposé_aux_tests