it-swarm.com.de

Wie kann man in GNU Linux) nach einer Funktion fragen?

Ich versuche, einen Fehlerbericht für die App-Datei/usr/bin/file zu senden

Aber den Mann konsultieren und eine E-Mail senden

BUGS Bitte melden Sie Bugs und senden Sie Patches an den Bug Tracker unter http://bugs.gw.com/ oder an die Mailingliste unter ⟨[email protected]⟩ (besuchen Sie http : //mx.gw.com/mailman/listinfo/file zuerst abonnieren).

Ich habe herausgefunden, dass die E-Mail-Adresse nicht existiert.

Gibt es eine andere Möglichkeit, mit der Community zu kommunizieren? Hoffentlich ist diese Frage hier schon Teil davon :)

Also hier ist meine E-Mail:

möglicher Funktionsfehler: --extension Option scheint nichts auszugeben

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

Es wäre nützlich, die Ausgabe einfach zu verwenden, um eine Datei in ihre korrekte Erweiterung umzubenennen.

so etwas wie Datei --likely_extension würde nur dann die wahrscheinlich erkannte Erweiterung oder einen Fehler ausgeben, wenn die Erkennung zu niedrig wäre

wie also:

$ file --likely_extension "ab.gif"
gif

besser wäre aber ein --correct_extension Möglichkeit:

$ file --correct_extension "ab.jpg"

$ ls
ab.gif

Tyvm für diese App :)

36
fullmooninu

Sie befolgen das richtige Verfahren, um ein Problem oder eine Erweiterungsanforderung einzureichen: Wenn in der Dokumentation eines Programms angegeben ist, wie dies zu tun ist, befolgen Sie diese Anweisungen.

Leider kommt es häufig vor, dass Projekte absterben oder die Anweisungen in Ihrer Version nicht mehr korrekt sind. In diesen Fällen wird es etwas schwieriger. Ein möglicher allgemeiner Ansatz besteht darin, einen Fehler bei Ihrer Distribution zu melden. Erfolg dort kann allerdings eher ein Hit oder Miss sein ... (Ich sollte erwähnen, dass es normalerweise besser ist, einen Fehler an die Distribution zu melden, die Sie erhalten haben Wenn Sie ein Paket verwenden, gilt dies insbesondere dann, wenn die gepackte Version älter als die aktuelle "Upstream" -Version ist und Sie nicht überprüft haben, ob das Problem dort noch besteht.)

Insbesondere für file wurde die offizielle Dokumentation aktualisiert, um zu erwähnen, dass der Bug-Tracker und die Mailingliste nicht verfügbar sind, und es wird auch eine direkte E-Mail-Adresse für den aktuellen Betreuer bereitgestellt, die Sie verwenden können Verwenden Sie, um ihn zu kontaktieren.

48
Stephen Kitt

Zusätzlich zu Stephen Kitts Antwort könnten Sie in Betracht ziehen (insbesondere, wenn Sie selbst Entwickler sind und das Programm - in Ihrem Fall file - diesen Quellcode hat ist nicht allzu schwer zu verstehen) Abrufen des Quellcodes dieses Programms (möglicherweise aus Ihrer Distribution) - da es sich um freie Software handelt - und Patchen sowie Senden eines Patches.

Wenn Sie sich Zeit nehmen, um den Quellcode zu studieren, werden Sie wahrscheinlich einen besseren Fehlerbericht erstellen.

Wenn Sie sich mehr Zeit nehmen, um einen Fixing-Patch vorzuschlagen, werden Sie wahrscheinlich ernsthafter betrachtet (und meiner Meinung nach handeln Sie mehr im Geiste freier Software).

Also benutze die Freiheit von freier Software: studiere den Quellcode (Freiheit # 1) und verbessere es (Freiheit # 3).

Heute ist es sehr einfach, Ihre verbesserte Version zu veröffentlichen (z. B. auf github ) und teilen (Freiheit # 2).

Stellen Sie sicher, dass Sie die neueste Version des Programms file haben. Viele Distributionen verwenden das nicht (und vielleicht wurde der Fehler in Ihrer Distribution bereits vorgelagert behoben).

Ich bin nicht sicher, ob Ihr --correct_extension - Verhalten zu file gehört (ein Programm, mit dem Sie Ihre Daten abfragen, nicht ändern können. Aber wenn ja, sollte es wahrscheinlich --correct-extension Oder --rename-extension Geschrieben werden ... Und wenn Sie versuchen, dies zu implementieren, werden Sie möglicherweise feststellen, dass es seltsame Eckfälle gibt (was ist mit einer gezippten TAR-Datei?) oder eine komprimierte C-Quelldatei oder etwas, für das möglicherweise mehrere Dateierweiterungen erforderlich sind).

Beachten Sie, dass eine Datei (im Gegensatz zu Windows) unter Linux und Unix tatsächlich ein Inode ist (siehe Inode (7) ) und kann mehrere Namen (oder keine) haben und kann von mehreren Prozessen gleichzeitig geöffnet werden = Dateideskriptoren ) - oder keine, auch wenn die meisten Dateien nur einen Namen haben (siehe jedoch link (2) & stat ( 2) ). Da die Datei same den Namen foo.txt Und bar.gz Bezeichnen könnte, ist es wenig sinnvoll, Dateierweiterungen Bedeutung beizumessen. Siehe auch path_resolution (7) .

Wenn Sie also versuchen, Ihre correct-extension - Idee zu implementieren, werden Sie feststellen, dass es nicht so einfach zu implementieren (und sogar zu spezifizieren) ist und dass es dafür kein offensichtliches einfaches Verhalten gibt.

Wahrscheinlich ist Ihre Idee nicht sehr gut und kann nicht einfach umgesetzt werden auf Linux- und POSIX-Systemen (zumindest nicht in allen Fällen).

Ich empfehle daher, das Senden einer Feature-Anfrage zu vermeiden (in der ursprünglichen Form bedeutet dies Zeitverlust für Sie und die Entwickler von file). Oder arbeiten Sie viel daran, verbessern Sie die Spezifikationen und reichen Sie einen Patch ein ... Natürlich werden Sie viel Arbeit darauf verwenden (und ich denke wirklich nicht, dass es den Schmerz wert ist).

Vielleicht lesen Sie auch ein Unix-Programmierbuch (wie das alte [~ # ~] alp [~ # ~] oder etwas Neueres; und auch Intro ( 2) & syscalls (2) ) und Betriebssysteme: Drei einfache Teile .

23

Du fragst:

Wie kann man in GNU Linux) nach einer Funktion fragen?

und um das zu beantworten, ist es wichtig zu wissen, dass es an sich kein einziges "GNU Linux" gibt. Das GNU Projekt ist eine gemeinsame Anstrengung zur Entwicklung freier Software. Ein Teil dieser freien Software - zusammen mit großen Mengen von anderer freier und Open-Source-Software wird gesammelt von other Projekte: entweder kollaborative, offene Projekte wie Fedora * oder Debian oder Unternehmensanstrengungen mit unterschiedlichem Grad an Offenheit oder sogar Einzelpersonen. Diese Sammlungen heißen "Linux-Distributionen" oder "GNU/Linux-Distributionen" (dort gibt es eine politische Debatte, auf die ich nicht eingehen werde).

Wenn Sie an einer Funktionserweiterung interessiert sind, ist es im Allgemeinen am besten, mit dem Entwickler zusammenzuarbeiten, der die Software geschrieben hat - die Distributionen haben viel zu bieten von Arbeit zu tun, um nur die verschiedenen Software zu sammeln und es zusammenarbeiten zu lassen, und würde normalerweise bevorzugen diese Änderungen "Upstream" passieren.

Sie haben hier also das Richtige getan - Sie haben die dokumentierte Upstream-Quelle gefunden und versucht, dort Bericht zu erstatten.

Es scheint jedoch, dass die dokumentierten Kommunikationsmethoden für die Software, an der Sie interessiert sind, nicht funktionieren. In diesem Fall haben Sie mehrere Möglichkeiten:

  1. Versuchen Sie, andere Möglichkeiten zu finden, um die Entwickler der Software zu kontaktieren. In diesem Fall enthalten die meisten Distributionen den Befehl file, der ursprünglich von Ian Darwin geschrieben wurde und nominell unter http://www.darwinsys.com/file/ mit den von Ihnen angegebenen Mailinglisten gespeichert ist. habe erwähnt. Aber wie bei diesen Mailinglisten scheint die Hauptseite nicht erreichbar zu sein. In der heutigen Zeit ist das Überprüfen von GitHub ein guter zweiter Schritt, und ich fand https://github.com/file/file - mit der Aufschrift Nur-Lese-Spiegel des Datei-CVS-Repositorys , jede halbe Stunde aktualisiert. HINWEIS: Stellen Sie hier keine Pull-Anfragen und kommentieren Sie keine Commits. Senden Sie sie auf die übliche Weise an den Bug-Tracker oder an die Mailingliste. Das ist nicht sofort hilfreich, aber ich stelle fest, dass dort haben Änderungen an diesem Repo in der letzten Woche. Ein möglicher nächster Schritt ist es also, zu sehen, wer diese Commits ausgeführt hat, und sie zu kontaktieren.
  2. Sie können die für das Paket verantwortliche Person in der von Ihnen verwendeten Distribution fragen. Für file in Fedora siehe diese Seite . Da sie regelmäßig mit der Software arbeiten, haben sie möglicherweise andere Möglichkeiten, den Upstream zu kontaktieren. Abhängig von der Distribution geschieht dies am besten durch Einreichen eines Fehlers oder durch direkten Kontakt - Sie müssen die individuelle Kultur kennen. (In Fedora würde ich die Mailingliste entwickeln vorschlagen.)
  3. Wenn Sie eine kommerzielle Distribution wie Red Hat Enterprise Linux * verwenden, können Sie ein Support-Ticket einreichen. Als zahlender Kunde können Sie möglicherweise Ihren Lieferanten beeinflussen, um eine Lösung zu finden.
  4. Wenn alles andere fehlschlägt, ist das Projekt, an dem Sie interessiert sind, möglicherweise tot vorgelagert. In diesem Fall können Sie das Projekt "verzweigen" - erstellen Sie Ihre eigene Version und bauen Sie eine neue Upstream-Community darauf auf. Wenn Ihre Version beibehalten wird und die andere tot ist, werden die Distributionen wahrscheinlich folgen.

* Ich arbeite an Fedora. Und ich bin bei Red Hat angestellt.

11
mattdm

Dies ist ein Fehler in Ihrer Distribution. Wenn die Distribution veraltete Manpages versendet, sollten Sie einen Fehler gegen das Paket melden, das sie bereitgestellt hat. Wenn Sie Debian verwenden, können Sie ein Tool wie Reportbug verwenden, um dies zu vereinfachen.

4
A guest
identify -format %m file.gif[0]

% m Bilddateiformat (Dateimagie)

Die [0] bedeutet das erste Bild, was hilfreich sein kann, wenn Sie es versehentlich in einem Video verwenden, da es sonst ffmpeg-Bibliotheken verwendet, um eine temporäre Kopie jedes Bilds zu erstellen.

Dies funktioniert nur für Bilder. Ich weiß nicht, wie ich es für generische Dateien machen soll. ffmpeg gibt 'avc1' für eine zufällige mp4-Datei zurück (andere mp4-Dateien geben möglicherweise andere Zeichenfolgen zurück, und Sie müssen sie noch analysieren), und ich sehe keinen Weg, davon zu 'mp4' zu gelangen. 'avc1' ist nirgendwo in/usr/share/mime.

ffmpeg oder gleichwertig ffprobe listet einige Dateiformate auf, die der Demuxer zu Beginn seiner Ausgabe verwendet. Für eine mp4-Datei heißt es

Geben Sie # 0, mov, mp4, m4a, 3gp, 3g2, mj2 von ein. . .
[. . .]
Video: h264 (Haupt) (avc1/0x31637661)

für ein png heißt es

Geben Sie # 0, png_pipe, von ein. . .
[. . .]
Video: png, rgb24 (pc)

2
Misaki