วิธีที่ถูกต้องในการขอฟีเจอร์ใน GNU Linux คืออะไร?


35

ฉันกำลังพยายามส่งรายงานข้อผิดพลาดสำหรับไฟล์แอป / usr / bin / ไฟล์

แต่ให้คำปรึกษากับชายคนนั้นและส่งอีเมล

BUGS กรุณารายงานข้อผิดพลาดและส่งแพตช์ไปที่ตัวติดตามบั๊กที่http://bugs.gw.com/ หรือรายชื่อผู้รับจดหมายที่⟨file@mx.gw.com⟩ (ไปที่ http://mx.gw.com/mailman/ listinfo / ไฟล์ก่อนที่จะสมัคร)

ทำให้ฉันค้นหาที่อยู่อีเมลไม่มีอยู่

มีวิธีอื่นในการสื่อสารกับชุมชนหรือไม่ หวังว่านี่คำถามนี้เป็นส่วนหนึ่งของมัน :)

ดังนั้นนี่คืออีเมลของฉัน:

คุณสมบัติที่เป็นไปได้ล้มเหลว: --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 สำหรับแอพนี้ :)


3
มีบางอย่างเกิดขึ้นกับรายชื่อผู้รับจดหมายและตัวติดตามข้อผิดพลาด: github.com/file/file-tests/issues/5
dsstorefile1

8
ส่วนที่สองของคำอธิบายปัญหาของคุณคือคำขอคุณลักษณะที่บริสุทธิ์ซึ่งอาจตอบโต้ปรัชญาการออกแบบที่จัดทำโดยผู้เขียนเครื่องมือยูนิกซ์บางคน - ทำสิ่งเดียวเท่านั้นทำได้ดี ใครบางคนอาจต้องการที่จะรักษาฟังก์ชั่นของไฟล์ (1) แต่ไม่ต้องรักษาฟังก์ชั่น
เบสใน

3
เขียน ........
JoelFan

คุณต้องการให้ฟีเจอร์ทำสิ่งที่สามารถทำได้โดยใช้เครื่องมือที่มีอยู่ในปัจจุบัน (เช่น awk) ผู้เขียนซอฟต์แวร์อาจจะมีแนวโน้มที่จะแจ้งให้คุณทราบเกี่ยวกับหรืออย่างน้อยจะคิดเกี่ยวกับลินุกซ์ปรัชญา เมื่อคุณมีแพทช์ที่ใช้งานได้แล้วคุณจะจริงจังมากขึ้น
TOOGAM

2
ตัวอย่างเช่นในระบบของฉัน: file --extension calf.jpg flower.gifเอาต์พุต: 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

คุณกำลังทำตามขั้นตอนที่ถูกต้องในการยื่นปัญหาหรือการร้องขอการปรับปรุง: ถ้าเอกสารของโปรแกรมกล่าวถึงวิธีการทำเช่นนั้นทำตามคำแนะนำเหล่านั้น

น่าเสียดายที่มันเกิดขึ้นบ่อยครั้งเมื่อโครงการตายหรือคำแนะนำในเวอร์ชันที่คุณไม่แม่นยำอีกต่อไป ในกรณีเหล่านี้สิ่งต่าง ๆ ยากขึ้นเล็กน้อย วิธีการทั่วไปที่เป็นไปได้วิธีหนึ่งคือการยื่นข้อบกพร่องด้วยการแจกจ่ายของคุณ ความสำเร็จอาจจะค่อนข้างฮิต - หรือ - พลาดแม้ว่า ... (ฉันควรจะพูดถึงว่ามันจะดีกว่าที่จะรายงานข้อผิดพลาดในการกระจายคุณได้รับแพคเกจของคุณจากถ้าคุณใช้แพคเกจนี้เป็นจริงโดยเฉพาะอย่างยิ่งถ้าบรรจุ เวอร์ชันเก่ากว่าเวอร์ชั่น“ อัปสตรีม” ปัจจุบันและหากคุณยังไม่ได้ตรวจสอบว่าปัญหายังคงมีอยู่หรือไม่)

สำหรับfileเฉพาะเอกสารอย่างเป็นทางการได้รับการปรับปรุงจะพูดถึงว่าติดตามข้อผิดพลาดและรายชื่อที่ส่งจะลดลงและก็ยังมีที่อยู่อีเมลโดยตรงสำหรับผู้ดูแลในปัจจุบันซึ่งคุณสามารถใช้เพื่อติดต่อกับเขา


23

นอกเหนือจากคำตอบของ Stephen Kittคุณสามารถพิจารณา (โดยเฉพาะอย่างยิ่งถ้าคุณเป็นนักพัฒนาเองและถ้าโปรแกรม - fileในกรณีของคุณ - มีซอร์สโค้ดที่ไม่ยากเกินไปที่จะเข้าใจ) การดึงซอร์สโค้ดของโปรแกรมนั้น (อาจมาจาก การกระจาย) - เนื่องจากเป็นซอฟต์แวร์เสรี - และทำการแพตช์และยังส่งแพตช์

หากคุณใช้เวลาศึกษาซอร์สโค้ดคุณอาจทำรายงานข้อผิดพลาดได้ดีขึ้น

หากคุณใช้เวลามากขึ้นในการเสนอแพตช์การแก้ไขคุณมีแนวโน้มที่จะได้รับการพิจารณาอย่างจริงจังมากขึ้น (และ IMHO ที่คุณดำเนินการมากขึ้นด้วยจิตวิญญาณของซอฟต์แวร์เสรี)

ดังนั้นใช้ซอฟต์แวร์เสรีที่ให้บริการฟรี : ศึกษาซอร์สโค้ด (Freedom # 1) และปรับปรุง (Freedom # 3)

วันนี้มันเป็นเรื่องง่ายมากที่จะเผยแพร่ (เช่นในGitHub ) รุ่นปรับปรุงของคุณและแบ่งปัน (เสรีภาพ # 2)

ตรวจสอบให้แน่ใจว่าได้เปิดตัวfileโปรแกรมล่าสุด หลายดิสทริบิวชันไม่ได้ใช้สิ่งนั้น (และบางทีข้อผิดพลาดใน distro ของคุณได้รับการแก้ไขแล้ว)

ฉันไม่แน่ใจว่า--correct_extensionพฤติกรรมของคุณเป็นของfile(ซึ่งเป็นโปรแกรมที่จะสอบถามไม่เปลี่ยนแปลงข้อมูลของคุณ) แต่ถ้าเป็นเช่นนั้นก็น่าจะเป็นตัวสะกด--correct-extensionหรือ --rename-extension... และเมื่อคุณลองใช้มันคุณอาจค้นพบว่ามีมุมแปลก ๆ (สิ่งที่เกี่ยวกับไฟล์ gzipped tar หรือไฟล์ต้นฉบับ C บีบอัดหรือสิ่งที่อาจจะบีบอัด ต้องการนามสกุลไฟล์หลายอัน)

โปรดสังเกตว่า (ตรงกันข้ามกับ Windows) บน Linux & Unix ไฟล์เป็นinode (ดูinode (7) ) และสามารถมีชื่อหลายชื่อ (หรือไม่มี) และสามารถเปิดได้หลายกระบวนการพร้อมกัน (อ่านเกี่ยวกับfile descriptors ) - หรือไม่มีแม้ว่าไฟล์ส่วนใหญ่จะมีเพียงชื่อเดียว (แต่เห็นลิงค์ (2) & stat (2) ) เนื่องจากสามารถตั้งชื่อไฟล์เดียวกันfoo.txtและbar.gzไม่สมเหตุสมผลที่จะแนบความสำคัญกับไฟล์นามสกุล ดูเพิ่มเติมpath_resolution (7)

ดังนั้นหากคุณลองนำcorrect-extensionความคิดของคุณไปใช้คุณจะพบว่ามันไม่ง่ายเลยที่จะนำไปใช้ (และแม้กระทั่งเพื่อระบุ) และไม่มีพฤติกรรมง่ายๆที่ชัดเจนสำหรับสิ่งนั้น

อาจเป็นไปได้ว่าความคิดของคุณไม่ดีมากและไม่สามารถนำไปใช้กับระบบ Linux และ POSIX ได้ง่าย (อย่างน้อยก็ไม่ใช่สำหรับทุกกรณี)

ดังนั้นฉันขอแนะนำให้หลีกเลี่ยงแม้แต่การส่งคำขอคุณสมบัติ (ในรูปแบบเริ่มต้นมันเป็นการเสียเวลาสำหรับคุณและสำหรับนักพัฒนาของfile) หรือทำอย่างใดอย่างหนึ่งกับมันมากปรับปรุงข้อกำหนดและส่งแพทช์ .... แน่นอนคุณจะต้องใช้เวลามากในการทำงาน (และฉันไม่คิดว่ามันจะคุ้มค่ากับความเจ็บปวด)

บางทีอาจจะยังอ่านหนังสือการเขียนโปรแกรมระบบปฏิบัติการยูนิกซ์ (เหมือนเก่าALPหรือสิ่งที่ใหม่และยังบทนำ (2)และsyscalls (2) ) และระบบปฏิบัติการ: สามชิ้นง่าย


10
ฉันจะลืมได้อย่างไร - วิธีที่ดีที่สุดในการ "ถาม" สำหรับคุณสมบัติคือการนำไปใช้!
Stephen Kitt

2
+1 สำหรับการชี้ให้เห็นว่าfileให้ข้อมูลและไม่เปลี่ยนแปลงอะไรเลย นอกจากนี้ความคิดที่ว่า "ส่วนขยาย" ของไฟล์ในทางใดทางหนึ่งบ่งชี้ว่าแอปพลิเคชันใดที่ควรใช้ในการเปิดเป็นแบบ Windows ลินุกซ์ได้ทำตามวิธี "เลขกล" ในการใส่ลายเซ็นที่โดดเด่นในสองสามไบต์แรกของไฟล์แล้วปล่อยให้ชื่อนั้นเป็นอะไรก็ได้ โดยวิธีการเปรียบเทียบฉันเป็นไฟล์ในระบบ Windows ฉันต้องเป็น "Monty Harder.human" เพื่อให้ทุกอย่างรู้ว่าฉันเป็นอะไร แต่ Linux เห็นว่าเป็นส่วนหนึ่งของเนื้อหาของฉันและชื่อคือ ไม่มีข้อ จำกัด
Monty Harder

1
หากคุณสามารถค้นหาซอร์สโค้ดที่ถูกต้องคุณยังสามารถค้นหาคอมมิชชันได้
Thorbjørn Ravn Andersen

2
@StephenKitt แม้กระทั่งก่อนที่ลินุกซ์, Unix มี shebangs และfileกับmagicไฟล์เพื่อให้ผมไม่ทราบวิธีการ "ย้อนยุคพอดี" มันเป็น วิธีการของ MacOS ให้ใส่ประเภทไฟล์ที่ชัดเจนลงในข้อมูลเมตาของไฟล์ ("ตัวแยกทรัพยากร") ซึ่งถูกเก็บไว้ภายในไฟล์ แต่อยู่ในที่เก็บแยกต่างหาก
Monty Harder

2
@ l0b0 ฉันเห็นประเด็นของคุณ แต่ฉันคิดว่ามันมีประโยชน์ที่จะบอกว่าวิธีที่ดีที่สุด (ไม่เพียง แต่ ) ในการขอคุณลักษณะที่เกี่ยวข้องกับการใช้งานด้วยตัวคุณเองถ้าคุณทำได้ ผู้ที่ไม่มีทักษะการเขียนโปรแกรมที่จำเป็นสามารถเพิกเฉยต่อสิ่งนี้ได้อย่างปลอดภัย แต่ผู้ที่ทำเช่นนั้นจะมีประโยชน์
David Z

11

คุณถาม:

วิธีที่ถูกต้องในการขอฟีเจอร์ใน GNU Linux คืออะไร?

และเพื่อตอบว่าสิ่งสำคัญคือต้องรู้ว่าไม่มีสิ่งใดเช่น "GNU Linux" ตามลำดับ โครงการ GNU เป็นความร่วมมือในการพัฒนาซอฟต์แวร์ฟรี ซอฟต์แวร์ฟรีบางตัว - รวมถึงซอฟต์แวร์ฟรีและโอเพ่นซอร์สอื่น ๆจำนวนมากถูกรวบรวมโดยโครงการอื่น ๆ : ไม่ว่าจะเป็นการทำงานร่วมกัน, โครงการเปิดเช่น Fedora * หรือ Debian, หรือความพยายามขององค์กรที่มีระดับการเปิดกว้างที่แตกต่างกันหรือแม้แต่บุคคล คอลเล็กชันเหล่านี้เรียกว่า "การกระจาย Linux" หรือ "การกระจาย GNU / Linux" (มีการอภิปรายทางการเมืองที่นั่นซึ่งฉันจะไม่เข้าไป)

โดยทั่วไปหากคุณสนใจที่จะปรับปรุงคุณสมบัติสิ่งที่ดีที่สุดที่ควรทำคือทำงานร่วมกับนักพัฒนาที่เขียนซอฟต์แวร์ - การแจกจ่ายมีงานมากมายที่ต้องทำเพื่อรวบรวมซอฟต์แวร์ต่างๆและทำให้ทำงานร่วมกันได้ตามปกติ จะต้องการการเปลี่ยนแปลงเหล่านั้นจะเกิดขึ้น "ต้นน้ำ"

ดังนั้นคุณทำสิ่งที่ถูกต้องที่นี่ - คุณพบแหล่งต้นน้ำที่บันทึกไว้และพยายามรายงานที่นั่น

อย่างไรก็ตามปรากฏว่าวิธีการสื่อสารที่เป็นเอกสารสำหรับชิ้นส่วนของซอฟต์แวร์ที่คุณสนใจไม่ทำงาน ในกรณีนั้นคุณมีหลายทางเลือก:

  1. ลองค้นหาวิธีอื่น ๆ ในการติดต่อผู้พัฒนาซอฟต์แวร์ ในกรณีนี้ distros ส่วนใหญ่จะรวมfileคำสั่งที่เขียนโดย Ian Darwin และตั้งอยู่ในนามที่http://www.darwinsys.com/file/พร้อมกับรายชื่อผู้รับจดหมายที่คุณพูดถึง เช่นเดียวกับรายการส่งเมลไซต์หลักดูเหมือนจะไม่ทำงาน ในวันนี้และอายุการตรวจสอบ GitHub เป็นขั้นตอนที่สองที่ดีและฉันพบhttps://github.com/file/file - ซึ่งระบุว่า มิเรอร์อ่านอย่างเดียวของที่เก็บไฟล์ CVS อัปเดตทุกครึ่งชั่วโมง หมายเหตุ: อย่าทำการร้องขอการดึงที่นี่หรือแสดงความคิดเห็นใด ๆ ส่งวิธีการปกติในการติดตามข้อผิดพลาดหรือรายการจดหมาย ที่ไม่เป็นประโยชน์ทันที แต่ผมสังเกตเห็นว่ามีมีได้รับการเปลี่ยนแปลงไปที่ซื้อคืนในสัปดาห์ที่ผ่านมา ดังนั้นสิ่งต่อไปที่เป็นไปได้คือดูว่าใครทำแล้วติดต่อกับพวกเขา
  2. คุณสามารถขอให้ผู้รับผิดชอบสำหรับบรรจุภัณฑ์ใน distro ที่คุณใช้ สำหรับfileใน Fedora ให้ดูหน้านี้ เนื่องจากทำงานกับซอฟต์แวร์เป็นประจำพวกเขาอาจมีวิธีอื่นในการติดต่อต้นน้ำ สิ่งนี้ทำได้ดีที่สุดโดยการยื่นข้อผิดพลาดหรือติดต่อโดยตรง - คุณต้องการรู้วัฒนธรรมของแต่ละบุคคล (ใน Fedora ฉันขอแนะนำรายการส่งจดหมายของ Devel )
  3. หากคุณใช้การแจกจ่ายเชิงพาณิชย์เช่น Red Hat Enterprise Linux * คุณสามารถยื่นตั๋วการสนับสนุนได้ ในฐานะลูกค้าที่ชำระเงินคุณอาจมีอิทธิพลต่อผู้ขายของคุณเพื่อค้นหาวิธีแก้ไข
  4. หากสิ่งอื่นล้มเหลวโครงการที่คุณสนใจอาจตายไป ในกรณีนี้คุณสามารถ "แยก" โครงการ - สร้างเวอร์ชันของคุณเองและสร้างชุมชนอัปสตรีมใหม่รอบ ๆ หากเวอร์ชันของคุณได้รับการบำรุงรักษาและเวอร์ชั่นอื่นนั้นตายไปแล้วอาจเป็นไปได้ว่าการแจกแจงจะตามมา

* ฉันทำงานกับ Fedora และฉันจ้าง Red Hat


2
"สิ่งสำคัญคือต้องรู้ว่าไม่มีสิ่งเดียวเช่น" GNU Linux "" - โดยเฉพาะอย่างยิ่งสิ่งสำคัญคือต้องตระหนักว่า Linux ไม่มีส่วนเกี่ยวข้องกับ GNU และ GNU ไม่มีส่วนเกี่ยวข้องกับ Linux การขอคุณสมบัติลีนุกซ์จากโครงการ GNU หรือการขอคุณสมบัติสำหรับยูทิลิตี้ GNU จากนักพัฒนาลีนุกซ์มักจะถูกละเลย
Jörg W Mittag

3
หรือขอคุณสมบัติสำหรับยูทิลิตี้ที่ไม่ใช่ GNU จากทั้งสองอย่าง
user253751

4

นี่เป็นจุดบกพร่องในการแจกจ่ายของคุณ หากการแจกจ่ายเป็นการจัดส่ง man-page ที่ล้าสมัยคุณควรยื่นข้อผิดพลาดกับแพ็คเกจที่ให้ หากคุณใช้เดเบียนคุณสามารถใช้เครื่องมือเช่น reportbug เพื่อทำให้สิ่งนี้ง่ายขึ้น


3
ไม่นี่ไม่ใช่ข้อผิดพลาดในการแจกจ่าย: หน้าต้นน้ำยังคงให้ข้อมูลเดียวกัน
Stephen Kitt

1
ไม่ว่าในกรณีใดผู้ดูแลแพคเกจในการแจกจ่ายควรทราบวิธีการจัดทำบั๊กกับผู้ดูแลแพ็คเกจเดิม
Vincent Fourmond

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

รูปแบบไฟล์รูปภาพ% m (ไฟล์มายากล)

[0] หมายถึงเฟรมแรกซึ่งสามารถช่วยถ้าคุณใช้มันในวิดีโอโดยไม่ตั้งใจเพราะมันใช้ไลบรารี ffmpeg เพื่อทำสำเนาชั่วคราวของแต่ละเฟรม

ใช้งานได้กับรูปภาพเท่านั้น ฉันไม่รู้ว่าจะทำอย่างไรกับไฟล์ทั่วไป ffmpeg ส่งคืน 'avc1' สำหรับไฟล์ mp4 แบบสุ่ม (ไฟล์ mp4 อื่น ๆ อาจส่งคืนสตริงที่แตกต่างกันและคุณยังต้องแยกวิเคราะห์มัน) และฉันไม่เห็นวิธีที่จะได้รับจาก 'mp4' 'avc1' ไม่ได้อยู่ที่ / usr / share / mime

ffmpeg หรือ ffprobe ที่เทียบเท่าแสดงรายการรูปแบบไฟล์บางส่วนที่ demuxer ใช้เมื่อเริ่มต้นเอาต์พุต สำหรับไฟล์ mp4 มันบอกว่า

อินพุต # 0, mov, mp4, m4a, 3gp, 3g2, mj2 จาก . .
[ . .]
วิดีโอ: h264 (หลัก) (avc1 / 0x31637661)

สำหรับ png มันบอกว่า

ป้อน # 0, png_pipe จาก . .
[ . .]
วิดีโอ: png, rgb24 (พีซี)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.