Les liens générés par autotools doivent être remplacés avant de le télécharger?
-
06-09-2019 - |
Question
Ma question principale est que les autotools créé des liens à installer, COPIER, manquant, installez-sh et depcomp. Quand j'ai essayé de les voir, j'ai vu qu'ils ont été téléchargés sous forme de liens, donc je les ai remplacés par des fichiers réels pour qu'ils soient visibles. Suis-je manque quelque chose de fondamental? Quand je déballe mon fichier gz de make dist 'c'est ce qu'il ressemble à:
Arbre de distribution (moins Annuaires Source)
-rw-r--r-- 1 ojblass users 18591 2009-05-30 03:23 Makefile.in -rwxr-xr-x 1 ojblass users 136168 2009-05-30 03:20 configure drwxr-xr-x 3 ojblass users 4096 2009-05-30 03:20 autom4te.cache -rw-r--r-- 1 ojblass users 32230 2009-05-30 03:20 aclocal.m4 -rw-r--r-- 1 ojblass users 251 2009-05-30 03:20 configure.ac -rw-r--r-- 1 ojblass users 626 2009-05-30 03:11 AUTHORS -rwxr-xr-x 1 ojblass users 120 2009-05-30 03:11 autogen.sh -rw-r--r-- 1 ojblass users 737 2009-05-30 03:11 ChangeLog -rw-r--r-- 1 ojblass users 35147 2009-05-30 03:11 COPYING -rwxr-xr-x 1 ojblass users 17867 2009-05-30 03:11 depcomp -rwxr-xr-x 1 ojblass users 199 2009-05-30 03:11 example.pl -rwxr-xr-x 1 ojblass users 152 2009-05-30 03:11 example.sh -rw-r--r-- 1 ojblass users 9512 2009-05-30 03:11 INSTALL -rwxr-xr-x 1 ojblass users 13620 2009-05-30 03:11 install-sh -rw-r--r-- 1 ojblass users 215 2009-05-30 03:11 Makefile.am -rwxr-xr-x 1 ojblass users 11135 2009-05-30 03:11 missing -rw-r--r-- 1 ojblass users 75 2009-05-30 03:11 NEWS -rwxr-xr-x 1 ojblass users 507 2009-05-30 03:11 profile.sh -rw-r--r-- 1 ojblass users 2605 2009-05-30 03:11 README -rw-r--r-- 1 ojblass users 201 2009-05-30 03:11 README_developers -rwxr-xr-x 1 ojblass users 382 2009-05-30 03:11 run.sh -rw-r--r-- 1 ojblass users 481 2009-05-30 03:11 TODO -rwxr-xr-x 1 ojblass users 117 2009-05-30 03:11 usefull.sh
Je prévois sur l'élimination des README_developers et de faire deux sections dans le README. Je cherche également à éliminer les run.sh et profile.sh et les faisant partie d'une cible make test (une lecture obligatoire). Je ne pense pas qu'un élément TODO appartient dans la distribution source, mais peut-être il est normal d'avoir dans l'arbre source du projet. Tous les pointeurs supplémentaires ci-dessus et au-delà de la question des liens est apprécié.
La solution
Réponse courte: Leaving ces liens symboliques (autres que INSTALL) serait conformité truquée GNU standards de codage .
Par automake par défaut pour effectuer un contrôle de la conformité aux normes GNU (EXIGE des fichiers suivants existent: INSTALLER, NOUVELLES, README, COPIES AUTEURS, et ChangeLog). On peut tourner de cette vérification (et supprimer en toute sécurité certains de ces fichiers) en passant l'option --foreign à automake (pour le faire modifier autogen.sh et réexécuter).
Les liens ont été créés lorsque automake a été appelé avec --add-manquant des options qui, à moins --copy option a été donnée crée des liens symboliques pour les fichiers manquants plutôt que de les copier. Ceci afin de maintenir les fichiers (en fait installer uniquement) jusqu'à ce jour chaque fois que vous installez plus récent automake. Regerding réponse de Jonathan ces liens symboliques ne sont pas un problème: tous les fichiers distribués sont copiés dans le répertoire séparé avant de tarball. Changez-les fichiers réguliers si vous voulez les modifier.
D'autres fichiers (README_developers, run.sh, profile.sh, TODO
etc.) ont probablement été générés par l'IDE que vous utilisez et ajouté à
EXTRA_DIST
variable dans Makefile.am haut. Vous pouvez les retirer de
la distribution par l'édition EXTRA_DIST
et ensuite vous pouvez également supprimer
les de la source.
Le reste est généré automatiquement par autoconf et automake:
- aclocal.m4
- autom4te.cache
- configure
- depcomp
- install-sh
- Makefile.in
- manquant
Si vous souhaitez désencombrer davantage votre répertoire source haut, vous pouvez ajouter
AC_CONFIG_AUX_DIR([scripts])
à configure.ac. De cette façon, quelques-uns des scripts
trouveront place dans le répertoire de scripts
.
Mise à jour:
Les normes de codage GNU décrivent simplement l'exigence de ceux les fichiers de documentation à être présents dans la distribution et ce informations devraient y être inclus. L'option --add-manquante est programmeur rappeler quels fichiers doivent être écrits. De toute évidence, avoir vide fichier NOUVELLES ou AUTEURS ne sera pas rendre le projet plus conforme à la norme.
Seul fichier ChangeLog ont sur son format .
Dans certains projets ChangeLog est généré automatiquement à partir correctement
formated engager des messages. Sur Darcs il est tout simplement darcs changes >ChangeLog
.
Si vous utilisez Subversion vous pouvez consulter: svn2log , svn2cl .
Comme mentionné fichier INSTALL pourrait être raisonnable de garder le lien symbolique mais seulement s'il n'y a pas d'information spécifique du projet nécessaire sur l'installation (À savoir pas d'arguments de script de configuration supplémentaires, etc.).
Autres conseils
Le fichier TODO peut aller dans la distribution; il est une indication aux consommateurs des choses que vous pensez sont déficients dans le produit, et ils sont un pointeur vers des contributeurs potentiels aux zones où ils pourraient peut-être aider à améliorer le produit. (De plus, si vous êtes tombé dans un bus, cela aiderait d'autres personnes prennent le relais en utilisant le matériel de la version actuelle.)
Il pourrait être intéressant d'utiliser un sous-répertoire pour la plus grande partie du matériel de configuration.
En ce qui concerne votre question principale - étaient des liens «les fichiers ou « liens symboliques »? Les liens symboliques sont moins utiles pour l'emballage à moins que vous dites (GNU) tar de les suivre de toute façon ( « -h
» ou « --dereference
»). Si les seuls liens symboliques à ces fichiers, qui fonctionne; si vous utilisez des liens symboliques dans la distribution elle-même, il peut être plus contre-productif.