web-dev-qa-db-ja.com

GNU Linuxで機能を要求する正しい方法は何ですか?

アプリファイル/ usr/bin/fileのバグレポートを送信しようとしています

しかし、男性に相談してメールを送る

バグ http://bugs.gw.com/ のバグトラッカーまたは⟨[email protected]⟩のメーリングリストにバグを報告し、パッチを送信してください(- httpにアクセス) ://mx.gw.com/mailman/listinfo/file 最初に購読する)。

メールアドレスが存在しないことを知りました。

コミュニティと通信する別の方法はありますか?うまくいけば、このここの質問はすでにその一部です:)

これが私のメールです:

機能の失敗の可能性:--extensionオプションは何も出力しないようです

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

これの出力を使用してファイルの名前を正しい拡張子に簡単に変更できると便利です。

ファイルのようなもの--likely_extensionは、検出が低すぎる場合にのみ検出された可能性のある拡張子またはエラーを出力します

このように:

$ file --likely_extension "ab.gif"
gif

--correct_extensionオプション:

$ file --correct_extension "ab.jpg"

$ ls
ab.gif

このアプリのTyvm :)

36
fullmooninu

問題または機能強化のリクエストを提出するための正しい手順に従っています。プログラムのドキュメントにその方法が記載されている場合は、それらの指示に従ってください。

残念ながら、プロジェクトが終了したり、使用しているバージョンの指示が正確でなくなったりすることがよくあります。これらの場合、状況は少し難しくなります。一般的なアプローチの1つは、ディストリビューションにバグを報告することです。ただし、成功または失敗の可能性もあります...(通常、バグをあなたが入手したディストリビューションに報告することをお勧めしますパッケージを使用している場合は、パッケージ元。パッケージ化されたバージョンが現在の「上流」バージョンよりも古い場合で、問題がまだそこに存在するかどうかを確認していない場合は特にそうです。)

具体的にはfileについて、 公式ドキュメント が更新され、バグトラッカーとメーリングリストがダウンしていること、および現在のメンテナに直接メールアドレスを提供できるようになりました。彼に連絡するために使用します。

48
Stephen Kitt

Stephen Kitt's answer に加えて、(特にあなた自身が開発者であり、プログラム(あなたの場合はfile)がそれほど難しくないソースコードを持っている場合)を検討できます。そのプログラムのソースコードを(おそらくディストリビューションから)取得します。これは free software であるため、パッチを適用し、パッチを送信します。

時間をかけてソースコードを研究すると、バグレポートが改善されます。

修正パッチを提案するためにもっと時間がかかる場合、あなたはより真剣に考えられている可能性があります(そして私見はフリーソフトウェアの精神でより行動している)。

したがって、フリーソフトウェアによって提供される自由を使用します:ソースコードを調べます (freedom#1)と改善(freedom#3).

今日、改良されたバージョンを(たとえば github で)公開し、それを共有すること(freedom#2)は非常に簡単です。

fileプログラムの最新リリースがあることを確認してください。多くのディストリビューションはそれを使用していません(おそらく、ディストリビューションのバグはすでに上流で修正されています)。

あなたの--correct_extensionの振る舞いはfileに属します(これはqueryへのプログラムであり、データの変更ではありません)。しかし、もしそうなら、それはおそらく綴られるべきです--correct-extensionまたは--rename-extension ...そして、それを実装しようとすると、奇妙なコーナーケース(gzipされたtarファイル、圧縮されたCソースファイル、またはいくつかのファイル拡張子が必要になる可能性があるもの)があることに気付く場合があります。

LinuxおよびUnixの(Windowsとは対照的に)ファイルは実際には inodeinode(7) を参照)および 複数の名前を付けることができる であることに注意してください。 (またはなし)、および opened 一度に複数のプロセスで( file descriptors について読む)またはなし、ほとんどのファイルの名前が1つだけの場合でも(ただし、- link(2)stat(2) )。 sameファイルはfoo.txtおよびbar.gzファイル拡張子を重要視することはあまり意味がありません。 path_resolution(7) も参照してください。

したがって、correct-extensionアイデア、実装する(そして指定する)のはそれほど簡単ではなく、そのための明白な単純な動作はないことがわかります。

おそらく、あなたのアイデアはあまり良くなく、LinuxとPOSIXシステムで簡単に実装することはできません(少なくとも、すべての場合ではありません)。

ですから、機能のリクエストを提出することさえ避けることをお勧めします(最初のフォームでは、あなたとfileの開発者にとっては時間の損失です)。それ以外の場合は、多くの作業を行い、仕様を改善して、パッチを送信します。もちろん、それには多くの作業を費やします(そして、私は本当に苦労する価値はないと思います)。

おそらく、Unixプログラミングの本(古い [〜#〜] alp [〜#〜] 、または何か新しいもの、そして intro(2) &- syscalls(2) )および オペレーティングシステム:3つの簡単な部分

23

あなたが尋ねる:

GNU Linuxで機能を要求する正しい方法は何ですか?

それに答えるためには、「GNU Linux」自体は存在しないことを知っておくことは重要です。 GNUプロジェクトは、フリーソフトウェアを開発するための共同作業です。そのフリーソフトウェアの一部-大量のその他フリーおよびオープンソースソフトウェアとともに—otherプロジェクトによって収集されます:Fedora *やDebianなどの協調的でオープンなプロジェクト、またはさまざまな程度のオープン性を持つ企業の取り組み、あるいは個人でも。これらのコレクションは「Linuxディストリビューション」と呼ばれます"または" GNU/Linuxディストリビューション "(私が触れない政治的な議論があります)。

一般に、feature拡張に興味がある場合、ソフトウェアを作成した開発者と協力することをお勧めします—ディストリビューションにはたくさんありますさまざまなソフトウェアを収集してそれを一緒に動作させるために行うべき作業の数であり、通常、これらの変更は(上流/下流で)発生する優先です。

したがって、ここで正しいことを行いました。文書化されたアップストリームソースを見つけて、そこに報告しようとしました。

ただし、目的のソフトウェアの文書化された通信方法が機能していないようです。その場合、いくつかのオプションがあります。

  1. ソフトウェアの開発者に連絡する他の方法を見つけてください。この場合、ほとんどのディストリビューションには、元々はIan Darwinによって記述され、名目上は http://www.darwinsys.com/file/ に格納されているfileコマンドが含まれています。 veは述べた。しかし、それらのメーリングリストのように、メインサイトはダウンしているようです。この時代、GitHubをチェックすることは2番目のステップとして適切であり、私は https://github.com/file/file を見つけました—これはの読み取り専用ミラーを示していますファイルCVSリポジトリ。30分ごとに更新されます。注:ここでプルリクエストを作成したり、コミットにコメントしたり、通常の方法でバグトラッカーやメーリングリストに送信したりしないでください。すぐには役に立たないが、そこにがあることに気づく過去1週間にそのリポジトリに変更が加えられました。したがって、次の移動の可能性の1つは、それらのコミットを誰が行ったかを確認し、それらに連絡することです。
  2. 使用するディストリビューションのパッケージの責任者に尋ねることができます。 Fedoraのfileについては、 このページ を参照してください。彼らは定期的にソフトウェアを使っているので、上流に連絡する他の手段を持っているかもしれません。ディストリビューションによって異なりますが、これはバグを報告するか直接連絡することによって行うのが最善です。つまり、個々の文化を知る必要があります。 (Fedoraでは、 develメーリングリスト をお勧めします。)
  3. Red Hat Enterprise Linux *などの商用ディストリビューションを使用している場合は、サポートチケットを提出できます。有料の顧客として、あなたはベンダーに影響を与えて解決策を見つけることができるかもしれません。
  4. 他のすべてが失敗した場合、興味のあるプロジェクトはdeadアップストリームかもしれません。その場合、プロジェクトを「フォーク」して、独自のバージョンを作成し、その周りに新しいアップストリームコミュニティを構築できます。あなたのバージョンが維持されていて、他のバージョンが死んでいる場合、それはおそらくディストリビューションに従うでしょう。

*私はFedoraで作業しています。そして、私はRed Hatに雇われています。

11
mattdm

これはディストリビューションのバグです。ディストリビューションが古くなったmanページを出荷している場合、それを提供したパッケージに対してバグを報告する必要があります。 debianを使用している場合は、reportbugなどのツールを使用してこれを簡単にすることができます。

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

%m画像ファイル形式(ファイルマジック)

[0]は最初のフレームを意味します。誤ってビデオで使用すると、ffmpegライブラリを使用して各フレームの一時的なコピーを作成するのに役立ちます。

これは画像に対してのみ機能します。汎用ファイルでそれを行う方法がわかりません。 ffmpegはランダムなmp4ファイルに対して「avc1」を返します(他のmp4ファイルは異なる文字列を返す可能性があり、それを解析する必要があります)。それから「mp4」に取得する方法がわかりません。 「avc1」は/ usr/share/mimeのどこにもありません。

ffmpeg、または同等のffprobeは、デマルチプレクサが出力の開始時に使用するいくつかのファイル形式をリストします。 mp4ファイルの場合

入力#0、mov、mp4、m4a、3gp、3g2、mj2 、. 。 。
[。 。 。]
ビデオ:h264(メイン)(avc1/0x31637661)

それが言うPNGの

入力#0、png_pipe 、. 。 。
[。 。 。]
ビデオ:png、rgb24(pc)

2
Misaki