GNU Linux에서 기능을 요청하는 올바른 방법은 무엇입니까?


35

앱 파일 / usr / bin / file에 대한 버그 보고서를 보내려고합니다.

하지만 그 사람을 상담하고 이메일을 보내

버그 http://bugs.gw.com/ 또는 ⟨file@mx.gw.com⟩ ( 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 :)


3
메일 링리스트와 버그 추적기에 문제가 발생했습니다 : github.com/file/file-tests/issues/5
dsstorefile1

8
문제 설명의 두 번째 부분은 순수한 기능 요청으로, 일부 유닉스 도구 제작자가 보유한 디자인 철학에 반할 수 있습니다. 한 가지만 수행하십시오. 누군가 file (1)의 기능을 유지하고 싶지만 내장 된 basename (1) 및 mv (1) 기능을 유지해야하는 것을 원망합니다.
rackandboneman

3
작성 ........
JoelFan

기존의 일반적으로 지원되는 도구 (awk와 같은)를 사용하여 이미 수행 할 수있는 기능을 원하는 기능이 필요하십니까? 소프트웨어 제작자는 The Linux Philosophy에 대해 알고 있거나 적어도 생각하고 싶어하는 경향이있을 수 있습니다 . 패치가 작동하면 더 진지하게 받아 들여집니다.
TOOGAM

2
예를 들어, 내 시스템에서 : file --extension calf.jpg flower.gifoutputs : calf.jpg: jpeg/jpg/jpe/jfifflower.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프로그램 의 최신 릴리스가 있어야 합니다. 많은 배포판에서이를 사용하지 않습니다 (아마도 배포판의 버그가 이미 업스트림으로 수정되었을 수 있습니다).

귀하의 --correct_extension행동 file( 귀하의 데이터를 변경하지 않고 쿼리 하는 프로그램)이 속 하는지 확실 하지 않습니다. 하지만 않는 경우, 아마 철자해야 --correct-extension하거나 --rename-extension... 그리고 당신이 구현하려고하면, 당신은 이상한 코너 케이스 (가 있음을 발견 할 수있는 무엇을 gzip으로 압축 된 tar 파일 또는 압축 된 C 소스 파일, 또는 어떤 힘에 대한 여러 파일 확장자가 필요합니다).

Linux 및 Unix에서 (Windows와 달리) 파일은 실제로 inode 이며 ( inode (7) 참조 ) 여러 이름을 가질 수 있거나 한 번에 여러 프로세스에서 수 있습니다 ( 파일 설명자 에 대해 읽음 )- 또는 대부분의 파일에 하나의 이름 만있는 경우에도 해당되지 않습니다 (그러나 link (2) & stat (2) 참조 ). 때문에 같은 파일의 이름은 수 foo.txtbar.gz는 많은 의미가 파일 확장자에 중요성을 첨부하지 않습니다. path_resolution (7) 도 참조하십시오 .

따라서 correct-extension아이디어를 구현하려고 시도하면 구현하기 가 간단하지 않으며 심지어 명시하기도 쉽지 않으며 그에 대한 명백한 간단한 동작이 없다는 것을 알 수 있습니다.

아마도 귀하의 아이디어는 그리 좋지는 않으며 Linux 및 POSIX 시스템에서 (적어도 모든 경우가 아님) 쉽게 구현할 수는 없습니다 .

따라서 기능 요청을 제출하지 않는 것이 좋습니다 (초기 양식의 경우 개발자 및 개발자에게는 시간이 손실 됨 file). 그렇지 않으면 많은 작업을하고 사양을 개선하며 패치를 제출해야합니다. 물론 많은 작업을하게 될 것입니다.

아마도 유닉스 프로그래밍 서적 (예 : 오래된 ALP 또는 더 새로운 것)과 intro (2) & syscalls (2 ) 및 운영 체제 : Three Easy Pieces를 읽을 수도 있습니다 .


10
내가 기능을“구하는”가장 좋은 방법은 그것을 구현하는 것입니다.
Stephen Kitt

2
file정보 를 제공하고 아무것도 변경하지 않음 을 지적하기 위해 +1 . 또한, 어떤 방식 으로든 파일의 "확장자"는 파일을 여는 데 사용해야하는 응용 프로그램을 나타내는 개념은 매우 Windows 지향적입니다. 리눅스는 항상 파일의 처음 몇 바이트에 고유 한 서명을 한 다음 이름이 무엇이든 허용하는 "매직 넘버"접근 방식을 따르고 있습니다. 비 유적으로, 나는 Windows 시스템의 파일이었습니다. 내가 무엇인지 알기 위해서는 "Monty Harder.human"이어야합니다. 그러나 Linux는 그것을 내 콘텐츠의 일부로보고 있으며 이름은 제약이 없습니다.
Monty Harder

1
올바른 소스 코드를 찾을 수 있으면 커미터를 찾을 수도 있습니다.
Thorbjørn Ravn Andersen

2
@StephenKitt 심지어 리눅스 전에, 유닉스 shebangs을했고 filemagic파일, 그래서 나는 "역 장착은"그것이 방법을 모르겠어요. MacOS의 접근 방식은 파일 메타 데이터 ( "리소스 포크")에 명시적인 파일 형식을 지정합니다.이 형식은 파일 내에 있지만 별도의 컨테이너에 저장됩니다.
Monty Harder

2
@ l0b0 나는 당신의 점을 볼 수 있지만 나는 그것이라고하는 것이 도움이 생각하십니까 가장 (하지 당신이 할 수있는 경우) 방법, 기능이 스스로를 구현하는 것을 포함한다 요청할 수 있습니다. 필요한 프로그래밍 기술이없는 사람들은 이것을 무시해도되지만, 유용한 사람들은 유용 할 것입니다.
David Z

11

물어:

GNU Linux에서 기능을 요청하는 올바른 방법은 무엇입니까?

"GNU Linux"와 같은 것이 없다는 것을 아는 것이 중요합니다. GNU 프로젝트는 자유 소프트웨어를 개발하기위한 공동 노력입니다. 이 무료 소프트웨어 중 일부는 다른 많은 무료 및 오픈 소스 소프트웨어 와 함께 공동 프로젝트, Fedora * 또는 Debian과 같은 공개 프로젝트 또는 다양한 개방도를 가진 기업 노력 또는 개인까지의 다른 프로젝트에 의해 수집됩니다 . 이 컬렉션을 "Linux 배포판"또는 "GNU / Linux 배포판"이라고합니다 (내가 다루지 않을 정치적 논쟁이 있습니다).

일반적으로 기능 향상에 관심이있는 경우 가장 좋은 방법은 소프트웨어를 작성한 개발자와 함께 작업하는 것입니다. 배포판은 다양한 소프트웨어를 수집하고 함께 작동하고 정상적으로 작동시키기 위해해야 ​​할 일이 많습니다. 것 선호 "상류"일이 변경 사항을.

그래서 당신은 여기서 옳은 일을했습니다. 문서화 된 업스트림 소스를 발견하고 거기서보고하려고했습니다.

그러나 관심있는 소프트웨어의 문서화 된 통신 방법이 작동하지 않는 것 같습니다. 이 경우 몇 가지 옵션이 있습니다.

  1. 소프트웨어 개발자에게 연락 할 수있는 다른 방법을 찾으십시오. 이 경우 대부분의 배포판에는 fileIan Darwin이 처음 작성하고 명목상 http://www.darwinsys.com/file/에 보관 된 명령과 언급 한 메일 목록이 포함됩니다. 그러나 이러한 메일 목록과 마찬가지로 기본 사이트는 다운 된 것으로 보입니다. 요즘 GitHub를 확인하는 것이 좋은 두 번째 단계이며, https://github.com/file/file파일 CVS 저장소의 읽기 전용 미러 라고 하며 30 분마다 업데이트됩니다. 참고 : 여기서 풀 요청을하거나 커밋에 주석을 달거나 버그 추적 기나 메일 링리스트에 일반적인 방법으로 제출하지 마십시오. 그 즉시 도움이 아니지만, 내가 거기 것을 알 수 있다지난 주에 해당 리포지토리로 변경되었습니다. 따라서 다음으로 가능한 조치는 누가 그 커밋을 수행했는지 확인하고 연락하는 것입니다.
  2. 사용하는 배포판에서 패키지 담당자에게 문의 할 수 있습니다. 들어 file페도라에서 볼 이 페이지를 . 소프트웨어와 정기적으로 작업하므로 업스트림에 연락 할 수있는 다른 방법이있을 수 있습니다. 배포판에 따라 버그를 제출하거나 직접 연락하여 개별 문화를 알아야합니다. (Fedora에서는 devel 메일 링리스트를 제안합니다 .)
  3. Red Hat Enterprise Linux *와 같은 상용 배포판을 사용하는 경우 지원 티켓을 제출할 수 있습니다. 유료 고객은 공급 업체에 영향을 주어 솔루션을 찾을 수 있습니다.
  4. 다른 모든 방법이 실패하면 관심있는 프로젝트가 업스트림 상태 일 수 있습니다 . 이 경우 프로젝트를 "포크 (fork)"할 수 있습니다. 자신 만의 버전을 만들고 그 주위에 새로운 업스트림 커뮤니티를 구축 할 수 있습니다. 버전이 유지되고 다른 버전이 죽은 경우 배포판이 이어질 수 있습니다.

* 저는 Fedora에서 일합니다. 그리고 저는 Red Hat에 고용되어 있습니다.


2
"GNU Linux"와 같은 것이 없다는 것을 아는 것이 중요합니다. 특히 Linux는 GNU와 관련이 없으며 GNU는 Linux와 관련이 없음을 인식하는 것이 중요합니다. GNU 프로젝트에서 Linux 기능을 요구하거나 Linux 개발자에게 GNU 유틸리티 기능을 요구하는 것은 단순히 무시 될 것입니다.
Jörg W Mittag

3
또는 비 GNU 유틸리티의 기능 중 하나를 요구합니다.
user253751

4

이것은 배포판의 버그입니다. 배포판이 구식 인 맨 페이지를 배송하는 경우 제공 한 패키지에 대해 버그를 신고해야합니다. 데비안을 사용하는 경우 reportbug와 같은 도구를 사용하여 더 간단하게 만들 수 있습니다.


3
아니요, 이것은 배포판의 버그가 아닙니다. 업스트림 매뉴얼 페이지는 여전히 동일한 정보를 제공합니다.
Stephen Kitt

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.