Quelle est la bonne façon de demander une fonctionnalité dans GNU Linux?

35

J'essaie d'envoyer un rapport de bogue pour le fichier d'application, / usr / bin / file

Mais consulter l'homme et envoyer un email

BOGUES Veuillez signaler les bogues et envoyer les correctifs au gestionnaire de bogues à l’adresse http://bugs.gw.com/ ou à la liste de diffusion à l’adresse [email protected] (visitez le site http://mx.gw.com/mailman/ listinfo / fichier d’ abord pour s’abonner).

M'a fait découvrir l'adresse e-mail n'existe pas.

Y a-t-il un autre moyen de communiquer avec la communauté? Espérons que cette question en fait déjà partie :)

Alors voici mon email:

défaillance possible de la fonctionnalité: l' --extensionoption ne semble rien produire

$ file --extension "ab.gif" 
ab.gif: ???

Il serait utile de pouvoir facilement utiliser la sortie de ceci pour renommer un fichier avec son extension correcte.

quelque chose comme fichier --likely_extensionne produirait que l'extension probablement détectée ou une erreur si la détection était trop faible

comme ceci:

$ file --likely_extension "ab.gif"
gif

mieux serait une --correct_extensionoption:

$ file --correct_extension "ab.jpg"

$ ls
ab.gif

Tyvm pour cette application :)

fullmooninu
la source
8
La deuxième partie de votre description du problème est une simple requête de fonctionnalité qui pourrait aller à l’encontre de la philosophie de conception de certains auteurs d’outils Unix: ne faites qu’une chose, faites-le bien. Quelqu'un voudra peut-être conserver la fonctionnalité de fichier (1) mais ne voudra pas conserver les fonctionnalités intégrées basename (1) et mv (1) :)
rackandboneman
3
Ecris-le ........
JoelFan
Vous souhaitez qu'une fonctionnalité fasse ce qui peut déjà être accompli en utilisant des outils existants largement pris en charge (comme awk)? L'auteur du logiciel peut être enclin à vous informer de la philosophie de Linux , ou du moins à y penser . Une fois que vous avez un patch fonctionnel, vous serez pris plus au sérieux.
TOOGAM
Dans v5.25, file --extension fait le travail pour certains types de fichiers (comme .jpg). Peut-être que cela ne "fonctionne" pas fir .gif car il n’existe aucune autre extension de fichier valide.
RonJohn
2
Par exemple, sur mon système: file --extension calf.jpg flower.gifsorties: calf.jpg: jpeg/jpg/jpe/jfifet flower.gif:montrant les autres extensions possibles pour ces fichiers (aucune dans le cas du fichier GIF). Notez que filele type de fichier n’est qu’une supposition éclairée: il utilise un ensemble d’heuristiques pour le faire. Il ne détecte pas l'extension à partir du nom. Si je renomme calf.jpgà calf.txtc'est toujours un fichier JPEG et fileme dit que quand je lance file calf.txtil me dit aussi que les extensions possibles sont jpeg/jpg/jpe/jfifquand je cours file --extension calf.txt.
pause jusqu'à nouvel ordre.

Réponses:

48

Vous suivez la procédure appropriée pour déposer un problème ou une demande d'amélioration: si la documentation d'un programme indique comment procéder, suivez ces instructions.

Malheureusement, il arrive souvent que des projets meurent ou que les instructions de votre version ne soient plus précises. Dans ces cas, les choses deviennent un peu plus difficiles. Une approche générale possible consiste à déposer un bogue avec votre distribution. Le succès peut être plutôt aléatoire si (je devrais mentionner qu'il est généralement préférable de signaler un bogue à la distribution à partir de laquelle vous avez reçu votre paquet, si vous utilisez un paquet; c'est particulièrement vrai si le paquet la version est plus ancienne que la version «en amont» actuelle, et si vous n'avez pas vérifié si le problème y est toujours présent.)

En fileparticulier, la documentation officielle a été mise à jour pour indiquer que le suivi des bogues et la liste de diffusion sont en panne, et fournit également une adresse électronique directe pour le responsable actuel, que vous pouvez utiliser pour le contacter.

Stephen Kitt
la source
23

En plus de la réponse de Stephen Kitt , vous pourriez envisager (surtout si vous êtes vous-même développeur et si le programme - filedans votre cas - a un code source pas trop difficile à comprendre) de récupérer le code source de ce programme (peut-être de votre distribution) - puisque c’est un logiciel libre - et en le corrigeant, ainsi qu’en envoyant un correctif.

Si vous prenez le temps d' étudier le code source , vous ferez probablement un meilleur rapport de bogue.

Si vous prenez plus de temps pour proposer un correctif , vous serez probablement considéré plus sérieusement (et à mon humble avis, vous agissez davantage dans l’esprit du logiciel libre).

Utilisez donc la liberté fournie par le logiciel libre : étudiez son code source (liberté n ° 1) et améliorez-le (liberté n ° 3).

Aujourd'hui, il est très facile de publier (par exemple sur github ) votre version améliorée et de la partager (liberté n ° 2).

Assurez-vous d'avoir la dernière version du fileprogramme. Beaucoup de distributions ne l'utilisent pas (et peut-être que le bogue de votre distribution a déjà été corrigé en amont).

Je ne suis pas sûr que votre --correct_extensioncomportement appartienne à file(qui est un programme pour interroger , pas changer, vos données). Mais si c'est le cas, il devrait probablement être orthographié --correct-extensionou --rename-extension... Et une fois que vous aurez essayé de le mettre en œuvre, vous découvrirez peut-être des cas étranges (que diriez-vous d'un fichier tar compressé, d'un fichier source C compressé, ou de quelque chose qui pourrait besoin de plusieurs extensions de fichiers).

Notez que (contrairement à Windows) sur Linux & Unix, un fichier est en réalité un inode (voir inode (7) ) et peut avoir plusieurs noms (ou aucun) et peut être ouvert simultanément par plusieurs processus (en savoir plus sur les descripteurs de fichier ) - ou none, même si la plupart des fichiers n'ont qu'un seul nom (mais voir link (2) & stat (2) ). Comme le même fichier peut être nommé foo.txt, bar.gzil n’est pas logique d’accorder de l’importance aux extensions de fichier. Voir aussi path_resolution (7) .

Donc, si vous essayez de mettre en œuvre votre correct-extensionidée, vous découvrirez que ce n'est pas si simple à mettre en œuvre (et même à préciser), et qu'il n'y a pas de comportement simple évident pour cela.

Votre idée n’est probablement pas très bonne et ne peut pas être facilement mise en œuvre sur les systèmes Linux et POSIX (du moins, pas dans tous les cas).

Je recommande donc d'éviter même de soumettre une demande de fonctionnalité (dans sa forme initiale, c'est une perte de temps pour vous et pour les développeurs de file). Sinon, travaillez beaucoup dessus, améliorez ses spécifications et soumettez un correctif ... Bien sûr, vous y passerez beaucoup de temps (et je ne pense vraiment pas que cela en vaut la peine).

Peut-être aussi lu quelques livres de programmation Unix (comme l’ancien ALP , ou quelque chose de plus récent; et aussi intro (2) & syscalls (2) ) et systèmes d’exploitation: Trois pièces faciles .

Basile Starynkevitch
la source
10
Comment puis-je oublier cela? En effet, le meilleur moyen de "demander" une fonctionnalité est de la mettre en œuvre!
Stephen Kitt
2
+1 pour signaler que filefournit des informations et ne change rien. En outre, l'idée selon laquelle "l'extension" d'un fichier indique de quelle manière les applications à utiliser pour l'ouvrir est très orientée Windows. Linux a toujours suivi l'approche du «nombre magique» consistant à insérer une signature distincte dans les premiers octets d'un fichier et à permettre ensuite à son nom d'être n'importe quoi. Par analogie, j’étais un fichier dans un système Windows, je devais être "Monty Harder.human" pour que quoi que ce soit sache ce que je suis, mais Linux le voit comme une partie de mon contenu, et le nom est non contraint.
Monty Harder
1
Si vous pouvez localiser le code source correct, vous pouvez également localiser le responsable.
Thorbjørn Ravn Andersen
2
@StephenKitt Même avant Linux, Unix avait un shebang et filele magicfichier, donc je ne sais pas à quel point il est "rétro-équipé". L'approche de MacOS a mis un type de fichier explicite dans les métadonnées du fichier ("ressource fork"), qui est stockée à l'intérieur du fichier mais dans un conteneur séparé.
Monty Harder
2
@ l0b0 Je vois ce que vous voulez dire mais je pense qu'il est utile de dire que le meilleur moyen (et pas seulement ) de demander une fonctionnalité consiste à l'implémenter vous-même, si vous le pouvez. Les personnes qui ne possèdent pas les compétences de programmation nécessaires peuvent en toute sécurité l'ignorer, mais les personnes qui le trouveront le trouveront utile.
David Z
11

Tu demandes:

Quelle est la bonne façon de demander une fonctionnalité dans GNU Linux?

et pour répondre à cela, il est important de savoir qu’il n’existe pas de «GNU Linux» en tant que tel. Le projet GNU est un effort collaboratif visant à développer des logiciels libres. Une partie de ce logiciel libre - ainsi que d’ autres logiciels libres et open source - sont collectés par d’ autres projets: des projets collaboratifs ou ouverts, comme Fedora * ou Debian, ou des efforts d’entreprise avec plus ou moins d’ouverture, voire des particuliers. Ces collections sont appelées "Distributions Linux" ou "Distributions GNU / Linux" (il existe un débat politique dans lequel je ne rentrerai pas).

En général, si vous êtes intéressé par l' amélioration des fonctionnalités , la meilleure chose à faire est de travailler avec le développeur qui a écrit le logiciel - les distributions ont beaucoup de travail à faire pour rassembler les différents logiciels et les faire fonctionner ensemble, et normalement serait préférer ces changements se produire « en amont ».

Donc, vous avez fait le bon choix ici - vous avez trouvé la source documentée en amont et essayé de faire un compte rendu.

Il semble toutefois que les méthodes de communication documentées pour le logiciel qui vous intéresse ne fonctionnent pas. Dans ce cas, vous avez plusieurs options:

  1. Essayez de trouver d'autres moyens de contacter les développeurs du logiciel. Dans ce cas, la plupart des distributions incluent la filecommande écrite à l'origine par Ian Darwin et nominalement hébergée sur http://www.darwinsys.com/file/ , avec les listes de diffusion que vous avez mentionnées. Mais comme ces listes de diffusion, le site principal semble être en panne. De nos jours, vérifier GitHub est une bonne deuxième étape et j'ai trouvé https://github.com/file/file - qui indique que le miroir en lecture seule du référentiel de fichiers CVS est mis à jour toutes les demi-heures. NOTE: ne faites pas de demandes d'extraction ici, ni de commentaires sur les commits, soumettez-les de manière habituelle au gestionnaire de bogues ou à la liste de diffusion. Ce n'est pas immédiatement utile, mais je remarque qu'il y aété changements à ce repo dans la semaine dernière. Il est donc possible de voir qui a commis ces commits et de les contacter.
  2. Vous pouvez demander à la personne responsable du paquet dans la distribution que vous utilisez. Pour filedans Fedora, voir cette page . Puisqu'ils travaillent régulièrement avec le logiciel, ils peuvent avoir d'autres moyens de contacter l'amont. En fonction de la distribution, le mieux est de classer un bogue ou par contact direct - vous devez en quelque sorte connaître la culture de chacun. (Dans Fedora, je suggérerais la liste de diffusion devel .)
  3. Si vous utilisez une distribution commerciale, telle que Red Hat Enterprise Linux *, vous pouvez créer un ticket de support. En tant que client payant, vous pouvez éventuellement inciter votre fournisseur à trouver une solution.
  4. Si tout échoue, le projet qui vous intéresse peut être mort en amont . Dans ce cas, vous pouvez "créer" votre projet - créez votre propre version et créez une nouvelle communauté en amont autour de celle-ci. Si votre version est maintenue et que l'autre est morte, il est probable que les distributions suivront.

* Je travaille sur Fedora. Et je suis employé par Red Hat.

mattdm
la source
2
"il est important de savoir qu’il n’existe pas de" GNU Linux "" - En particulier, il est important de réaliser que Linux n’a rien à voir avec GNU et que GNU n’a rien à voir avec Linux. Demander une fonctionnalité Linux du projet GNU ou demander une fonctionnalité d'un utilitaire GNU à un développeur Linux sera probablement simplement ignoré.
Jörg W Mittag
3
Ou demander une fonctionnalité pour un utilitaire non-GNU à partir de l'un de ceux-ci.
user253751
4

C'est un bug dans votre distribution. Si la distribution contient des pages de manuel obsolètes, vous devez enregistrer un bogue contre le paquet qui l’a fourni. Si vous utilisez debian, vous pouvez utiliser un outil tel que reportbug pour rendre cela plus simple.

Un invité
la source
3
Non, ce n'est pas un bug dans la distribution: la page de manuel en amont fournit toujours les mêmes informations.
Stephen Kitt
1
Dans tous les cas, le mainteneur du paquet dans la distribution devrait savoir comment signaler des bogues au mainteneur original du paquet
Vincent Fourmond
2
identify -format %m file.gif[0]

% m format de fichier image (fichier magique)

Le [0] désigne la première image, ce qui pourrait vous aider si vous l'utilisez accidentellement sur une vidéo, sinon les bibliothèques ffmpeg sont utilisées pour créer une copie temporaire de chaque image.

Cela ne fonctionne que pour les images. Je ne sais pas comment faire pour les fichiers génériques. ffmpeg retourne 'avc1' pour un fichier mp4 aléatoire (d'autres fichiers mp4 peuvent renvoyer des chaînes différentes, et vous devez toujours l'analyser), et je ne vois pas le moyen de passer de cela à 'mp4'. 'avc1' ne se trouve nulle part dans / usr / share / mime.

ffmpeg, ou de manière équivalente, ffprobe, répertorie certains formats de fichier utilisés par le démultiplexeur au début de sa sortie. Pour un fichier mp4, il est dit

Entrée n ° 0, mov, mp4, m4a, 3gp, 3g2, mj2, depuis. . .
[. . .]
Vidéo: h264 (Principal) (avc1 / 0x31637661)

pour un png, il dit

Entrée n ° 0, png_pipe, à partir de. . .
[. . .]
Vidéo: png, rgb24 (pc)

Misaki
la source