Apa cara yang benar untuk meminta fitur di GNU Linux?


35

Saya mencoba mengirim laporan bug untuk file aplikasi, / usr / bin / file

Tetapi berkonsultasi dengan pria itu dan mengirim email

BUGS Silakan laporkan bug dan kirim tambalan ke pelacak bug di http://bugs.gw.com/ atau milis di ⟨file@mx.gw.com⟩ (kunjungi http://mx.gw.com/mailman/ daftar info / file terlebih dahulu untuk berlangganan).

Membuat saya mengetahui bahwa alamat surat tidak ada.

Apakah ada cara lain untuk berkomunikasi dengan komunitas? Semoga pertanyaan di sini sudah menjadi bagian dari itu :)

Jadi inilah email saya:

kemungkinan kegagalan fitur: --extensionopsi sepertinya tidak menghasilkan apa-apa

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

Akan berguna untuk dengan mudah dapat menggunakan output ini untuk mengubah nama file ke ekstensi yang benar.

sesuatu seperti file --likely_extensionhanya akan menampilkan ekstensi yang terdeteksi atau kesalahan jika deteksi terlalu rendah

seperti itu:

$ file --likely_extension "ab.gif"
gif

meskipun lebih baik akan menjadi --correct_extensionpilihan:

$ file --correct_extension "ab.jpg"

$ ls
ab.gif

Tyvm untuk aplikasi ini :)


8
Bagian kedua dari deskripsi masalah Anda adalah permintaan fitur murni yang mungkin bertentangan dengan filosofi desain yang dipegang oleh beberapa penulis alat unix - lakukan satu hal saja, lakukan dengan baik. Seseorang mungkin ingin mempertahankan fungsionalitas file (1) tetapi tidak suka harus mempertahankan builtin nama bas (1) dan mv (1) fungsionalitas :)
rackandboneman

3
Tuliskan ........
JoelFan

Anda ingin fitur melakukan apa yang sudah dapat dicapai dengan menggunakan alat yang sudah umum didukung (seperti awk)? Penulis perangkat lunak mungkin cenderung memberi tahu Anda, atau paling tidak memikirkan, The Linux Philosophy . Setelah Anda memiliki patch yang berfungsi, Anda akan dianggap lebih serius.
TOOGAM

Di v5.25, file --extension tidak bekerja untuk beberapa jenis file (seperti .jpg). Mungkin itu tidak "bekerja" fir .gif karena tidak ada ekstensi file yang valid.
RonJohn

2
Sebagai contoh, pada sistem saya: file --extension calf.jpg flower.gifoutput: calf.jpg: jpeg/jpg/jpe/jfifdan flower.gif:menunjukkan kemungkinan ekstensi lain untuk file-file tersebut (tidak ada dalam kasus file GIF). Perhatikan bahwa filehanya tebakan yang terpelajar pada jenis file - ia menggunakan seperangkat heuristik untuk melakukan itu. Itu tidak mendeteksi ekstensi dari nama. Jika saya mengganti nama calf.jpguntuk calf.txtitu masih file JPEG dan filememberitahu saya bahwa ketika saya menjalankannya file calf.txtjuga memberi tahu saya bahwa ekstensi yang mungkin adalah jpeg/jpg/jpe/jfifketika saya menjalankanfile --extension calf.txt .
Dijeda sampai pemberitahuan lebih lanjut.

Jawaban:


48

Anda mengikuti prosedur yang benar untuk mengajukan masalah atau permintaan tambahan: jika dokumentasi program menyebutkan cara melakukannya, ikuti instruksi tersebut.

Sayangnya sering terjadi bahwa proyek mati, atau bahwa instruksi dalam versi yang Anda miliki tidak lagi akurat. Dalam kasus ini, segalanya menjadi sedikit lebih sulit. Salah satu pendekatan umum yang mungkin adalah mengajukan bug dengan distribusi Anda; sukses di sana bisa agak hit-or-miss ... (Saya harus menyebutkan bahwa biasanya lebih baik melaporkan bug ke distribusi dari mana Anda mendapatkan paket Anda, jika Anda menggunakan sebuah paket; ini terutama benar jika paket tersebut dikemas versi lebih tua dari versi "hulu" saat ini, dan jika Anda belum memeriksa apakah masalah masih ada di sana.)

Untuk filesecara khusus, dokumentasi resmi telah diperbarui untuk menyebutkan bahwa bug tracker dan mailing list yang turun, dan juga menyediakan alamat email langsung untuk pemelihara saat ini, yang bisa Anda gunakan untuk menghubungi dia.


23

Selain jawaban Stephen Kitt , Anda dapat mempertimbangkan (terutama jika Anda adalah pengembang sendiri, dan jika program - filedalam kasus Anda - memiliki kode sumber yang tidak terlalu sulit untuk dipahami) mengambil kode sumber dari program itu (mungkin dari Anda distribusi) - karena ini adalah perangkat lunak bebas - dan menambalnya, dan juga mengirim tambalan.

Jika Anda meluangkan waktu untuk mempelajari kode sumber , Anda mungkin akan membuat laporan bug yang lebih baik.

Jika Anda membutuhkan lebih banyak waktu untuk mengusulkan perbaikan patch , Anda cenderung dianggap lebih serius (dan IMHO Anda bertindak lebih dalam semangat perangkat lunak bebas).

Jadi gunakan kebebasan yang disediakan oleh perangkat lunak bebas : pelajari kode sumbernya (kebebasan # 1) dan tingkatkan (kebebasan # 3).

Hari ini sangat mudah untuk mempublikasikan (misalnya di github ) versi Anda yang ditingkatkan dan membagikannya (kebebasan # 2).

Pastikan untuk memiliki rilis terbaru file program ini. Banyak distribusi tidak menggunakan itu (dan mungkin bug di distro Anda sudah diperbaiki di hulu).

Saya tidak yakin --correct_extensionperilaku Anda termasuk dalam file(yang merupakan program untuk meminta , bukan mengubah, data Anda). Tetapi jika ya, mungkin harus dieja--correct-extension atau --rename-extension... Dan setelah Anda mencoba menerapkannya, Anda mungkin menemukan bahwa ada kasus sudut aneh (bagaimana dengan file tar gzip, atau file sumber C terkompresi, atau sesuatu yang mungkin perlu beberapa ekstensi file).

Perhatikan bahwa (bertentangan dengan Windows) di Linux & Unix file sebenarnya adalah inode (lihat inode (7) ) dan dapat memiliki beberapa nama (atau tidak ada), dan dapat dibuka oleh beberapa proses sekaligus (baca tentang deskriptor file ) - atau tidak ada, bahkan jika sebagian besar file hanya memiliki satu nama (tetapi lihat tautan (2) & stat (2) ). Karena file yang sama dapat dinamai foo.txtdan bar.gztidak masuk akal untuk mementingkan ekstensi file. Lihat juga path_resolution (7) .

Jadi, jika Anda mencoba menerapkan correct-extensionide Anda, Anda akan menemukan bahwa itu tidak sesederhana untuk diimplementasikan (dan bahkan untuk menentukan), dan bahwa tidak ada perilaku sederhana yang jelas untuk itu.

Mungkin, ide Anda tidak terlalu bagus, dan tidak dapat dengan mudah diimplementasikan pada sistem Linux dan POSIX (setidaknya, tidak untuk semua kasus).

Jadi saya sarankan untuk menghindari mengirimkan permintaan fitur (dalam bentuk awal, itu adalah waktu yang hilang untuk Anda, dan untuk pengembang file). Atau yang lain, banyak mengerjakannya, meningkatkan spesifikasinya, dan mengirimkan tambalan .... Tentu saja Anda akan menghabiskan banyak pekerjaan untuk itu (dan saya benar-benar tidak berpikir itu sepadan dengan rasa sakitnya).

Mungkin juga membaca beberapa buku pemrograman Unix (seperti ALP lama , atau sesuatu yang lebih baru; dan juga intro (2) & syscalls (2) ) dan Sistem Operasi: Tiga Potongan Mudah .


10
Bagaimana saya bisa melupakan itu - memang, cara terbaik untuk "meminta" fitur adalah dengan mengimplementasikannya!
Stephen Kitt

2
+1 untuk menunjukkan yang filememberikan informasi, dan tidak mengubah apa pun. Juga, gagasan bahwa "ekstensi" file dengan cara apa pun menunjukkan aplikasi apa yang harus digunakan untuk membukanya sangat berorientasi Windows. Linux selalu mengikuti pendekatan "angka ajaib" dengan meletakkan tanda tangan khusus pada beberapa byte pertama file, dan kemudian membiarkan namanya menjadi apa saja. Sebagai analogi, saya adalah file dalam sistem Windows, saya harus menjadi "Monty Harder.human" agar apa pun untuk mengetahui siapa saya, tetapi Linux melihatnya sebagai bagian dari konten saya, dan namanya adalah tidak dibatasi.
Monty Harder

1
Jika Anda dapat menemukan kode sumber yang benar, Anda juga dapat menemukan committer.
Thorbjørn Ravn Andersen

2
@StephenKitt Bahkan sebelum Linux, Unix memiliki shebang dan filedengan magicfile, jadi saya tidak tahu bagaimana "retro-fitted" itu. Pendekatan MacOS meletakkan jenis file eksplisit dalam file metadata ("fork resource"), yang disimpan di dalam file tetapi dalam wadah yang terpisah.
Monty Harder

2
@ l0b0 Saya mengerti maksud Anda, tetapi saya pikir sangat membantu untuk mengatakan bahwa cara terbaik (tidak hanya ) untuk meminta fitur melibatkan penerapannya sendiri, jika Anda bisa. Orang yang tidak memiliki keterampilan pemrograman yang diperlukan dapat dengan aman mengabaikan hal ini, tetapi orang yang melakukannya akan merasakan manfaatnya.
David Z

11

Anda bertanya:

Apa cara yang benar untuk meminta fitur di GNU Linux?

dan untuk menjawab itu, penting untuk mengetahui bahwa tidak ada yang namanya "GNU Linux", per se. Proyek GNU adalah upaya kolaboratif untuk mengembangkan perangkat lunak bebas. Beberapa perangkat lunak bebas - bersama dengan jumlah besar lainnya perangkat lunak bebas dan open source - dikumpulkan oleh lainnya proyek: baik kolaboratif, proyek terbuka seperti Fedora * atau Debian, atau upaya perusahaan dengan berbagai tingkat keterbukaan, atau bahkan individu. Koleksi-koleksi ini disebut "Distribusi Linux" atau "Distribusi GNU / Linux" (ada perdebatan politik di sana yang tidak akan saya bahas).

Secara umum, jika Anda tertarik pada peningkatan fitur , hal terbaik yang harus dilakukan adalah bekerja dengan pengembang yang menulis perangkat lunak - distribusinya memiliki banyak pekerjaan yang harus dilakukan untuk hanya mengumpulkan berbagai perangkat lunak dan membuatnya bekerja bersama, dan biasanya lebih suka perubahan itu terjadi "hulu".

Jadi, Anda melakukan hal yang benar di sini - Anda menemukan sumber hulu yang terdokumentasi dan mencoba melaporkan di sana.

Namun, tampaknya metode komunikasi terdokumentasi untuk perangkat lunak yang Anda minati tidak berfungsi. Dalam hal ini, Anda memiliki beberapa opsi:

  1. Cobalah mencari cara lain untuk menghubungi pengembang perangkat lunak. Dalam hal ini, sebagian besar distro menyertakan fileperintah yang awalnya ditulis oleh Ian Darwin dan secara nominal bertempat di http://www.darwinsys.com/file/ , dengan milis yang telah Anda sebutkan. Tapi seperti milis itu, situs utama tampaknya turun. Di zaman sekarang ini, memeriksa GitHub adalah langkah kedua yang baik, dan saya menemukan https://github.com/file/file - yang mengatakan mirror Read-only file dari repositori file CVS, diperbarui setiap setengah jam. CATATAN: jangan membuat permintaan tarik di sini, atau mengomentari komitmen apa pun, mengirimkannya dengan cara biasa ke pelacak bug atau ke milis. Itu tidak segera membantu, tetapi saya perhatikan di sana memilikitelah berubah pada repo itu dalam seminggu terakhir. Jadi, satu langkah selanjutnya yang mungkin dilakukan adalah melihat siapa yang melakukan itu dan menghubungi mereka.
  2. Anda bisa bertanya kepada orang yang bertanggung jawab atas paket di distro yang Anda gunakan. Untuk filedi Fedora, lihat halaman ini . Karena mereka bekerja dengan perangkat lunak secara teratur, mereka mungkin memiliki cara lain untuk menghubungi bagian hulu. Tergantung pada distro, ini paling baik dilakukan dengan mengajukan bug atau melalui kontak langsung - Anda perlu mengetahui budaya masing-masing. (Di Fedora, saya akan menyarankan milis devel .)
  3. Jika Anda menggunakan distribusi komersial, seperti Red Hat Enterprise Linux *, Anda dapat mengajukan tiket dukungan. Sebagai pelanggan yang membayar, Anda mungkin dapat memengaruhi vendor Anda untuk menemukan solusi.
  4. Jika semuanya gagal, proyek yang Anda minati mungkin mati di hulu . Dalam hal ini, Anda dapat "bercabang" dengan proyek - buat versi Anda sendiri, dan bangun komunitas hulu baru di sekitarnya. Jika versi Anda dipertahankan dan yang lain sudah mati, kemungkinan distribusi akan mengikuti.

* Saya bekerja di Fedora. Dan saya dipekerjakan oleh Red Hat.


2
"Penting untuk mengetahui bahwa tidak ada yang namanya" GNU Linux "" - Secara khusus, penting untuk menyadari bahwa Linux tidak ada hubungannya dengan GNU dan GNU tidak ada hubungannya dengan Linux. Meminta fitur Linux dari proyek GNU atau meminta fitur untuk utilitas GNU dari pengembang Linux kemungkinan besar akan diabaikan begitu saja.
Jörg W Mittag

3
Atau meminta fitur untuk utilitas non-GNU dari salah satunya.
user253751

4

Ini adalah bug dalam distribusi Anda. Jika distribusi adalah pengiriman halaman manual yang kedaluwarsa, Anda harus mengajukan bug terhadap paket yang menyediakannya. Jika Anda menggunakan debian, Anda bisa menggunakan alat seperti reportbug untuk membuatnya lebih sederhana.


3
Tidak, ini bukan bug dalam distribusi: halaman manual hulu masih memberikan informasi yang sama.
Stephen Kitt

1
Bagaimanapun, pengelola paket dalam distribusi harus tahu cara mengajukan bug dengan pengelola asli paket
Vincent Fourmond

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

% m format file gambar (keajaiban file)

[0] berarti bingkai pertama, yang dapat membantu jika Anda tidak sengaja menggunakannya pada video karena jika tidak menggunakan pustaka ffmpeg untuk membuat salinan sementara dari setiap frame.

Ini hanya berfungsi untuk gambar. Saya tidak tahu bagaimana melakukannya untuk file generik. ffmpeg mengembalikan 'avc1' untuk file mp4 acak (file mp4 lainnya dapat mengembalikan string yang berbeda, dan Anda masih harus menguraikannya), dan saya tidak melihat cara untuk mendapatkannya dari ke 'mp4'. 'avc1' tidak di mana pun di / usr / share / mime.

ffmpeg, atau setara ffprobe, mencantumkan beberapa format file yang digunakan demuxer pada awal outputnya. Untuk file mp4 katanya

Masukan # 0, mov, mp4, m4a, 3gp, 3g2, mj2, dari. . .
[. . .]
Video: h264 (Utama) (avc1 / 0x31637661)

untuk png katanya

Masukkan # 0, png_pipe, dari. . .
[. . .]
Video: png, rgb24 (pc)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.