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


35

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

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

バグバグを報告し、http: //bugs.gw.com/ のバグトラッカーまたは⟨file@mx.gw.com⟩のメーリングリストにパッチを送信してくださいhttp://mx.gw.com/mailman/にアクセスして ください) listinfo / file first subscribe)。

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

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

だからここに私のメールがあります:

機能障害の可能性:--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 :)


8
問題の説明の2番目の部分は、一部のUNIXツールの作成者が保持している設計哲学に反する可能性のある純粋な機能要求です。誰かがfile(1)の機能を維持したいが、組み込みのbasename(1)とmv(1)の機能を維持する必要があることに
resする

3
それを書く........
ジョエルファン

既存の一般的にサポートされているツール(awkなど)を使用して既に達成できることを機能で実行したいですか?ソフトウェアの作者は、Linux Philosophyについてあなたに知らせたい、または少なくとも考えたいと思うかもしれません。作業用パッチを入手したら、もっと真剣に受け止められます。
-TOOGAM

v5.25では、file --extension ありません(.jpgのような)いくつかのファイルタイプの仕事を。他の有効なファイル拡張子がないため、fir .gifが「機能しない」のかもしれません。
ロンジョン

2
例として、私のシステムでは、file --extension calf.jpg flower.gifoutputs:calf.jpg: jpeg/jpg/jpe/jfifおよびflower.gif:それらのファイルに可能な他の拡張子を表示します(GIFファイルの場合はなし)。fileファイルの種類については経験に基づいた推測のみを行うことに注意してください-一連の発見的手法を使用してこれを行います。名前から拡張子を検出していません。名前を変更calf.jpgするcalf.txtと、まだJPEGファイルであり、file実行file calf.txtすると、拡張子がjpeg/jpg/jpe/jfif実行される可能性があることも通知されますfile --extension calf.txt
追って通知があるまで一時停止します。

回答:


48

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

残念ながら、プロジェクトが終了したり、バージョンの指示が正確ではなくなったりすることがよくあります。これらの場合、事態は少し難しくなります。一般的なアプローチの1つは、ディストリビューションにバグを報告することです。しかし、成功するのはかなり大丈夫です...(パッケージを使用している場合、パッケージを入手したディストリビューションにバグを報告する方が通常良いことを言及する必要があります。バージョンは現在の「上流」バージョンよりも古いため、問題がまだ存在するかどうかを確認していない場合)

file詳しくは、公式ドキュメントには、バグトラッカーやメーリングリストがダウンしていることを言及するように更新されました、そしてそれはまた、あなたが彼に連絡するために使用することができ、現在のメンテナのための直接の電子メールアドレスを提供します。


23

スティーブンキットの答えに加えて、(特にあなたが開発者であり、プログラムが(file場合によっては)理解しにくいソースコードを持っている場合)そのプログラムのソースコードをフェッチすることを検討できます(おそらく、配布)-それはフリーソフトウェアであるため -パッチを適用し、パッチを送信します。

ソースコード調べるのに時間をかけるなら、おそらくより良いバグレポートを作成するでしょう。

修正パッチ提案するのにもっと時間をかけると、あなたはもっと真剣に考えられるでしょう(そして、私見あなたはフリーソフトウェアの精神でもっと行動しているでしょう)。

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

現在、改良版を公​​開(例:githubで)して共有するのは非常に簡単です(自由#2)。

fileプログラムの最新リリースを必ず入手してください。多くのディストリビューションはそれを使用していません(そしておそらくディストリビューションのバグは既にアップストリームで修正されています)。

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

(Windowsとは反対に)LinuxとUnixでは、ファイルは実際にはinodeinode(7)を参照)であり、複数の名前を持つ(または持たない)ことができ、一度に複数のプロセスで開くことができます(ファイル記述子について読みます)-ほとんどのファイルに名前が1つしかない場合でも(ただし、link(2)およびstat(2)を参照)。以来、同じファイルが名前を付けることができfoo.txtそしてbar.gzそれは多くの意味がファイル拡張子を重視することはありません。path_resolution(7)もご覧ください。

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

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

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

おそらく、いくつかのUnixプログラミングの本(古いALPなど、またはintro(2)syscalls(2))やオペレーティングシステム:Three Easy Piecesも読んでください。


10
どうすればそれを忘れることができますか?実際、機能を「求める」最良の方法はそれを実装することです!
スティーブンキット

2
file情報を提供し、何も変更しないことを指摘するための+1 。また、ファイルの「拡張子」は何らかの方法でファイルを開くために使用するアプリケーションを示すという概念は、非常にWindows指向です。Linuxは常に、ファイルの最初の数バイトに独特の署名を付け、名前を何でも許可する「マジックナンバー」アプローチを採用しています。類推として、私はWindowsシステムのファイルであり、自分が何であるかを知るためには「Monty Harder.human」である必要がありますが、Linuxはそれをコンテンツの一部として認識し、その名前は制約なし。
モンティハーダー

1
正しいソースコードを見つけることができれば、コミッターも見つけることができます。
するThorbjörnRavnアンデルセン

2
@StephenKittでもLinuxの前に、Unixのはshebangsを持っていたfileとのmagicファイルので、私は「レトロフィット」は、それがどのように知りません。MacOSのアプローチでは、ファイルメタデータ(「リソースフォーク」)に明示的なファイルタイプを配置します。これは、ファイル内に格納されますが、別のコンテナーに格納されます。
モンティハーダー

2
@ l0b0あなたの意見はわかりますが、機能をリクエストする最良のだけでなく)方法は、可能であれば自分で実装することです。必要なプログラミングスキルを持たない人はこれを安全に無視できますが、持っている人は便利だと思うでしょう。
デビッドZ

11

あなたが尋ねる:

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

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

一般に、機能強化に興味がある場合、ソフトウェアを作成した開発者と協力することが最善です。ディストリビューションには、さまざまなソフトウェアを収集して連携させるために多くの作業が必要です。これらの変更は「上流」で行われることを好みます。

そこで、あなたはここで正しいことをしました。文書化された上流のソースを見つけて、そこに報告しようとしました。

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

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

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


2
「「GNU Linux」のようなものは一つもないことを知っておくことが重要です。特に、LinuxはGNUとは無関係であり、GNUはLinuxとは無関係であることを認識することが重要です。GNUプロジェクトにLinux機能を要求したり、Linux開発者にGNUユーティリティの機能を要求したりすることは、ほとんどの場合無視されます。
ヨルグWミットタグ

3
または、これらのいずれかから非GNUユーティリティの機能を要求します。
user253751

4

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


3
いいえ、これはディストリビューションのバグではありません。アップストリームのマニュアルページでも同じ情報が提供されます。
スティーブンキット

1
いずれにせよ、ディストリビューションのパッケージのメンテナーは、パッケージの元のメンテナーにバグを
報告

2
identify -format %m file.gif[0]

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

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

これは画像に対してのみ機能します。汎用ファイルに対してそれを行う方法がわかりません。ffmpegは、ランダムなmp4ファイルに対して 'avc1'を返します(他の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)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.