GNU Linux'ta bir özellik istemek için doğru yolu nedir?


35

/ Usr / bin / file uygulama dosyası için bir hata raporu göndermeye çalışıyorum

Ama adama danışmak ve bir e-posta göndermek

HATALAR Lütfen hataları rapor edin ve http://bugs.gw.com/ adresindeki hata izleyiciye ya da ⟨file@mx.gw.com⟩ adresindeki e-posta listesine yamalar gönderin ( http://mx.gw.com/mailman/ adresini ziyaret edin. listinfo / file ilk abone olmak için).

Bana posta adresinin olmadığını öğrendi.

Topluluğa iletişim kurmanın başka bir yolu var mı? Umarım buradaki soru zaten bunun bir parçası :)

İşte benim e-postam:

olası özellik hatası: --extensionseçenek hiçbir şey çıkmıyor

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

Bir dosyayı doğru uzantısına göre yeniden adlandırmak için bunun çıktısını kolayca kullanabilmek faydalı olacaktır.

dosya gibi bir şey --likely_extension, yalnızca algılanan çok düşükse olası algılanan uzantıyı veya hatayı verir

bunun gibi:

$ file --likely_extension "ab.gif"
gif

daha iyi olsa da bir --correct_extensionseçenek olurdu :

$ file --correct_extension "ab.jpg"

$ ls
ab.gif

Bu uygulama için Tyvm :)


3
Posta listesine ve hata izleyicisine bir şey oldu: github.com/file/file-tests/issues/5
dsstorefile1

8
Problem tanımınızın ikinci kısmı, bazı unix aracı yazarlarının sahip olduğu tasarım felsefesine aykırı olabilecek saf bir özellik isteğidir - sadece bir şeyi yapın, iyi yapın. Birisi dosya (1) 'in işlevselliğini korumak isteyebilir ancak yerleşik ad (1) ve mv (1) işlevselliğini sürdürmek zorunda
kalmayabilir.

3
Yazma ........
JoelFan

Mevcut yaygın olarak desteklenen araçları (awk gibi) kullanarak zaten başarılabilecekleri yapmak için bir özellik mi istiyorsunuz? Yazılım yazarı, Linux Felsefesi hakkında sizi bilgilendirmeye ya da en azından düşünmeye meyilli olabilir . Bir çalışma yamanız olduğunda, daha ciddiye alınacaksınız.
TOOGAM

2
Örnek olarak, sistemimde: file --extension calf.jpg flower.gifçıkışlar: calf.jpg: jpeg/jpg/jpe/jfifve flower.gif:bu dosyalar için olası diğer uzantıları gösteriliyor (GIF dosyası durumunda yok). Not filesadece dosya türü bir tahminde alır - bu bunu sezgisel kümesi kullanır. Adın uzantısını tespit etmiyor. Ben yeniden adlandırırsanız calf.jpgiçin calf.txthala bir JPEG dosyası var ve fileben çalıştırdığınızda söylüyor file calf.txtbunu da mümkündür uzantıları gösteriyor bana jpeg/jpg/jpe/jfifben çalıştırdığınızda file --extension calf.txt.
sonraki duyuruya kadar duraklatıldı.

Yanıtlar:


48

Bir sorunu veya geliştirme isteğini dosyalamak için doğru prosedürü uyguluyorsunuz: bir programın dokümantasyonu nasıl yapılacağından bahsediyorsa, bu talimatları izleyin.

Ne yazık ki, çoğu zaman projelerin ölmesi veya sahip olduğunuz sürümdeki talimatların artık doğru olmadığı anlaşılmaktadır. Bu gibi durumlarda işler biraz zorlaşıyor. Muhtemel bir genel yaklaşım, dağıtımınıza bir hata yazmaktır; başarı olsa da çok etkilenebilir veya kaçırılabilir ... ( bir paket kullanıyorsanız, paketinizi aldığınız dağıtıma bir hata bildirmenin genellikle daha iyi olduğunu söylemeliyim ; paket kullanıyorsanız bu doğrudur) sürüm, geçerli "yukarı akış" sürümünden daha eski ve sorunun hala orada olup olmadığını kontrol etmediyseniz,)

İçin fileözel olarak resmi belgeler hata izleyici ve posta listesi aşağı olduğunu belirtmek için güncellendi ve aynı zamanda onunla temasa kullanabilirsiniz geçerli sürdürücü, için doğrudan e-posta adresi sağlar.


23

Stephen Kitt'in cevabına ek olarak , (özellikle kendiniz bir geliştirici iseniz ve programın - filesizin durumunuzda - kaynak kodunun anlaşılması zor olmayan) o programın kaynak kodunu (belki de dağıtım) - özgür bir yazılım olduğu için - ve yamayı ekleyerek bir yama da gönderir.

Eğer için zaman ayırın Eğer kaynak kodunu çalışma , muhtemelen daha iyi bir hata raporu yapacağız.

Bir düzeltme eki önermek için daha fazla zaman ayırırsanız , daha ciddi olarak düşünülmeniz muhtemeldir (ve IMHO, özgür yazılım ruhuyla daha fazla hareket ediyorsunuz).

Bu yüzden özgür yazılımın sağladığı özgürlüğü kullanın : kaynak kodunu çalışın (özgürlük # 1) ve geliştirin (özgürlük # 3).

Bugün , gelişmiş sürümünüzü yayınlamak (örneğin, github'ta ) ve sürümünüzü paylaşmak çok kolaydır (özgürlük # 2).

fileProgramın en son sürümüne sahip olduğunuzdan emin olun . Pek çok dağıtım bunu kullanmıyor (ve belki de dağıtımınızdaki hata önceden belirlenmiş).

--correct_extensionDavranışınızın ait olduğundan emin değilim file(bu, verilerinizi sorgulamanın değil, verilerinizin değiştirilmesinin sorgulanacağı bir programdır ). Ama eğer öyleyse, büyük olasılıkla yazılmalı --correct-extensionveya --rename-extension... Ve bunu bir kez uygulamaya çalıştığınızda, garip köşe davaları olduğunu keşfedebilirsiniz (peki ya bir zzip tar dosyası veya sıkıştırılmış bir C kaynak dosyası ya da birkaç dosya uzantısına ihtiyacınız var).

Linux ve Unix bir dosya üzerinde (Windows aykırı) aslında bir olduğunu Bildirimi o inode (bkz ) düğüm (7 ) ve çeşitli isimlere sahip olabilir (ya da hiç) ve edilebilmektedir açılmış (yaklaşık okumak aynı anda birden fazla süreçler tarafından dosya tanımlayıcıları ) - veya hiç biri, çoğu dosyanın yalnızca bir adı olsa bile (ancak, bağlantıya (2) ve stat (2) bakın ). Yana aynı dosya adlandırılabilir foo.txtve bar.gzbu anlamda bir çok dosya uzantıları önem verilmesi yapmaz. Ayrıca bakınız path_resolution (7) .

Bu nedenle, correct-extensionfikrinizi uygulamaya çalışırsanız, uygulamanın kolay olmadığını (ve hatta tanımlamanın) olmadığını ve bunun için bariz basit bir davranış olmadığını keşfedeceksiniz.

Muhtemelen, fikriniz çok iyi değildir ve Linux ve POSIX sistemlerinde kolayca uygulanamaz (en azından her durumda değil).

Bu nedenle, bir özellik isteği göndermemek için bile kaçınmanızı öneririm (ilk haliyle, sizin için ve geliştiricilerin için zaman kaybıdır file). Ya da, üzerinde çok çalışın, özelliklerini geliştirin ve bir yama gönderin .... Tabii ki bunun için çok çalışacaksınız (ve gerçekten acıya değeceğini sanmıyorum).

Belki de bazı Unix programlama kitaplarını (eski ALP gibi veya daha yeni bir şey; ve ayrıca intro (2) & syscalls (2) ) ve İşletim Sistemleri: Üç Kolay Adet .


10
Bunu nasıl unutabilirim ki - gerçekten, bir özellik için “istemek” için en iyi yol onu uygulamaktır!
Stephen Kitt,

2
fileBilgi sağlayan ve hiçbir şeyi değiştirmeyen işaret için +1 . Ayrıca, bir dosyanın "uzantısı" nın herhangi bir şekilde açılması için hangi uygulamanın / uygulamaların kullanılması gerektiğini gösterdiği fikri çok Windows odaklı. Linux her zaman bir dosyanın ilk birkaç baytına belirgin bir imza atma ve ardından ismin bir şey olmasına izin verme "sihirli sayı" yaklaşımını izlemiştir. Benzetme yoluyla, bir Windows sistemindeki bir dosyam vardı, ne olduğumu bilmek için bir şeyin "Monty Harder.human" olması gerekirdi, ama Linux bunu içeriğimin bir parçası olarak görüyor ve adı kısıtsız.
Monty Harder

1
Doğru kaynak kodunu bulabilirseniz, alıcıyı da bulabilirsiniz.
Thorbjørn Ravn Andersen

2
@StephenKitt Hatta Linux önce, Unix shebangs vardı ve filebirlikte magicdosyanın, bu yüzden "retro donatılmış" ne kadar bilmiyorum. MacOS'un yaklaşımı, dosyanın içinde ama ayrı bir kapta depolanan meta meta verilerine ("kaynak çatalı") açık bir dosya türü koydu.
Monty Harder

2
@ l0b0 Amacınızı anlıyorum ama bir özellik talep etmenin en iyi ( yalnızca değil ) yolunun mümkünse kendiniz uygulamak olduğunu söylemenin faydası olduğunu düşünüyorum . Gerekli programlama becerisine sahip olmayan insanlar bunu güvenli bir şekilde görmezden gelebilirler, ancak bunu yapanlar yararlı bulacaktır.
David Z,

11

Sen sor:

GNU Linux'ta bir özellik istemek için doğru yolu nedir?

ve buna cevap vermek için, "GNU Linux" gibi tek bir şey olmadığını bilmek önemlidir. GNU Projesi, özgür yazılım geliştirmek için ortak bir çabadır. Bu ücretsiz yazılımların bir kısmı - diğer büyük miktarda ücretsiz ve açık kaynaklı yazılımla birlikte - başka projeler tarafından toplanır : ya işbirlikçi, Fedora * veya Debian gibi açık projeler ya da farklı derecelerde açıklık ve hatta bireyler ile kurumsal çalışmalar. Bu koleksiyonlara "Linux Dağıtımları" veya "GNU / Linux dağıtımları" denir (girmeyeceğim bir politik tartışma var).

Genel olarak, özellik geliştirme ile ilgileniyorsanız , yapılacak en iyi şey yazılımı yazan geliştiriciyle çalışmaktır - dağıtımların yalnızca çeşitli yazılımları toplamak ve birlikte çalışmasını sağlamak için yapacak çok işi vardır ve normalde ediyorum tercih "akıntıya" gerçekleşmesi bu değişiklikleri.

Yani, burada doğru olanı yaptınız - belgelenmiş yukarı akış kaynağını bulup orada rapor etmeye çalıştınız.

Ancak, ilgilendiğiniz yazılım parçası için belgelenen iletişim yöntemlerinin çalışmadığı anlaşılıyor. Bu durumda, birkaç seçeneğiniz vardır:

  1. Yazılımın geliştiricileri ile iletişim kurmanın başka yollarını bulmaya çalışın. Bu durumda, çoğu dağıtım, fileasıl olarak Ian Darwin tarafından yazılmış ve sözde posta listelerinde belirtilen , http://www.darwinsys.com/dosya/ adresinde belirtilen komutu içerir . Ancak bu e-posta listelerinde olduğu gibi, ana site kapalı gibi görünüyor. Bu gün ve yaşta GitHub'u kontrol etmek iyi bir ikinci adım ve https://github.com/file/file dosyasını buldum - ki bu da her yarım saatte bir CVS deposunun Salt Okunur aynası olduğunu söylüyor . NOT: burada çekme istekleri yapmayın, herhangi bir taahhütte bulunmayın, hata izleyiciye veya posta listesine normal yollarla gönderin. Yani hemen yararlı değil, ama orada olduğunu fark varGeçtiğimiz hafta o depoda değişiklikler yapıldı. Dolayısıyla, bir sonraki hareketin bu taahhütleri kimin yaptığını görmek ve onlarla iletişim kurmaktır.
  2. Kullandığınız dağıtımda paketten sorumlu olan kişiye sorabilirsiniz. İçin fileFedora içinde, bkz bu sayfayı . Yazılımla düzenli olarak çalıştıkları için, yukarı akış ile iletişim kurmanın başka yolları olabilir. Dağıtıma bağlı olarak, bu en iyi şekilde bir hatayı dosyalamak ya da doğrudan temas yoluyla yapmaktır - bireysel kültürü bilmeniz gerekir. (Fedora'da, devel posta listesini öneririm .)
  3. Red Hat Enterprise Linux * gibi ticari bir dağıtım kullanıyorsanız, bir destek bileti verebilirsiniz. Ücretli bir müşteri olarak, bir çözüm bulmak için satıcınızı etkileyebilirsiniz.
  4. Eğer diğerleri başarısız olursa, ilgilendiğiniz proje daha önce bitmiş olabilir . Bu durumda, projeyi "çatallayabilir" - kendi versiyonunuzu oluşturabilir ve çevresinde yeni bir yukarı akış topluluğu oluşturabilirsiniz. Sürümünüz korunur ve diğeri ölürse, dağıtımların takip etmesi muhtemeldir.

* Fedora üzerinde çalışıyorum. Ve ben Red Hat tarafından işe alındım.


2
“GNU Linux” diye tek bir şey olmadığını bilmek önemlidir ”- Özellikle, Linux'un GNU ile ilgisi olmadığını ve GNU'nun Linux ile ilgisi olmadığını bilmek önemlidir. GNU projesinden bir Linux özelliği istemek veya bir Linux geliştiricisinden bir GNU yardımcı programı için bir özellik istemek büyük olasılıkla göz ardı edilecektir.
Jörg W Mittag

3
Veya GNU olmayan bir kuruluş için bu özelliklerden herhangi birinin bir özelliğini istemek.
user253751 0

4

Bu, dağıtımınızdaki bir hatadır. Dağıtım, tarihi geçmiş man sayfalarını gönderiyorsa, sağlanan pakete karşı bir hata vermelisiniz. Eğer debian kullanıyorsanız, bunu kolaylaştırmak için reportbug gibi bir araç kullanabilirsiniz.


3
Hayır, bu dağıtımda bir hata değildir: yukarı akış sayfası yine de aynı bilgileri sağlar.
Stephen Kitt,

1
Her durumda, dağıtımdaki paketin
sağlayıcısı

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

% m resim dosyası formatı (dosya büyüsü)

[0], bir videoyu yanlışlıkla kullanırsanız, aksi takdirde her karenin geçici bir kopyasını almak için ffmpeg kitaplıklarını kullandığı için yardımcı olabilecek ilk kare anlamına gelir.

Bu sadece görüntüler için çalışır. Genel dosyalar için nasıl yapılacağını bilmiyorum. ffmpeg, rastgele bir mp4 dosyası için 'avc1'i döndürür (diğer mp4 dosyaları farklı dizeler döndürür ve yine de onu ayrıştırmanız gerekir) ve bundan' mp4 'e ulaşmanın bir yolunu göremiyorum. 'avc1', / usr / share / mime içinde hiçbir yerde değildir.

ffmpeg veya eşdeğerde ffprobe, demuxer'ın çıktının başında kullandığı bazı dosya biçimlerini listeler. Bir mp4 dosyası için diyor ki

Giriş # 0, mov, mp4, m4a, 3gp, 3g2, mj2, den. . .
[. . .]
Video: h264 (Ana) (avc1 / 0x31637661)

png için diyor ki

0 #, png_pipe girişi. . .
[. . .]
Video: png, rgb24 (adet)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.