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

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

응용 프로그램 파일 /usr/bin/file에 대한 오류 보고서를 보내려고 합니다.

근데 그 남자한테 상담하고 이메일을 보내

버그 버그를 보고하고 버그 추적기에 패치를 보내주십시오.http://bugs.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 :)

답변1

문제 또는 개선 요청을 제출하기 위한 올바른 절차를 따르고 있습니다. 프로그램 설명서에 이를 수행하는 방법이 언급되어 있으면 해당 지침을 따르십시오.

불행하게도 프로젝트가 종종 종료되거나 현재 버전의 지침이 더 이상 정확하지 않습니다. 이러한 상황에서는 상황이 조금 더 어려워질 수 있습니다. 가능한 일반적인 접근 방식 중 하나는 배포판에 버그를 신고하는 것입니다. 그러나 성공 여부는 다소 불투명할 수 있습니다. (일반적으로 버그를 보고하는 것이 더 낫다는 점을 언급하고 싶습니다.허점패키지를 사용하는 경우 패키지를 받은 배포판을 방문하세요. 패키지 버전이 현재 "업스트림" 버전보다 오래되었고 문제가 여전히 존재하는지 확인하지 않은 경우 특히 그렇습니다. )

구체적으로 file,공식 문서버그 추적기와 메일링 리스트가 폐쇄되었음을 언급하도록 업데이트되었으며, 현재 관리자에게 연락하는 데 사용할 수 있는 직접 이메일 주소도 제공합니다.

답변2

또한스티븐 키트의 답변, 당신은 (특히 당신이 개발자이고 프로그램( file당신의 경우)에 이해하기 어렵지 않은 소스 코드가 있는 경우) 프로그램의 소스 코드(아마도 배포판에서)를 얻는 것을 고려할 수 있습니다.무료 소프트웨어-패치하고 패치를 보내십시오.

시간을 내시면소스코드 연구, 더 나은 버그 보고서를 제출할 수 있습니다.

시간을 더 보내면수정 제안, 당신은 더 심각하게 간주될 수 있습니다(당신은 자유 소프트웨어의 정신으로 더 많이 행동합니다).

그래서주어진 자유를 활용하라무료 소프트웨어:소스 코드 연구(무료 #1) 및그것을 개선하다(자유 #3).

오늘날에는 쉽게 출판됩니다(예:깃허브) 개선된 버전 및공유하다(자유 #2).

file최신 버전의 프로그램이 있는지 확인하세요 . 많은 배포판에서는 이를 사용하지 않습니다(배포판의 버그가 업스트림에서 수정되었을 수도 있습니다).

--correct_extension당신의 행동이 아래에 해당하는지 잘 모르겠습니다 file. (이것은 프로그램입니다.묻다, 데이터를 변경하는 대신). 그러나 만약 그렇다면, 그것은 아마도 --correct-extensionor 로 철자가 되어야 할 것 --rename-extension입니다. 일단 그것을 구현하려고 하면, 여러 파일이 필요한 이상한 코너 케이스(gzip으로 압축된 tar 파일, 압축된 C 소스 파일 등)가 있다는 것을 알게 될 것입니다. 확장명).

Windows와 달리 Linux 및 Unix의 파일은 실제로인덱스 노드(바라보다인덱스 노드(7)) 그리고여러 이름을 가질 수 있음(또는 그렇지 않음), 그리고 될 수 있습니다열려 있는동시에 여러 프로세스를 통해(읽기파일 설명자) - 또는 없음, 대부분의 파일에 이름이 하나만 있는 경우에도 마찬가지입니다.링크(2)&통계(2)). ~부터동일한파일 이름을 지정할 수 foo.txt있으며 bar.gz파일 확장자에 집중하는 것은 의미가 없습니다. 당신은 또한 볼 수 있습니다경로 해상도(7).

따라서 아이디어를 구현하려고 하면 correct-extension구현(또는 지정)이 그렇게 간단하지 않으며 명백하고 간단한 동작도 없다는 것을 알게 될 것입니다.

어쩌면 당신의 아이디어가 별로 좋지 않고 구현하기 쉽지 않을 수도 있습니다.Linux 및 POSIX 시스템(적어도 모든 경우는 아님).

따라서 기능 요청을 제출하는 것조차 피하는 것이 좋습니다(초기 형식에서는 귀하와 개발자 모두에게 시간 손실이 됩니다 file). 아니면, 많은 작업을 하고, 사양을 개선하고, 패치를 제출하세요... 물론 많은 노력을 들일 것입니다(정말 고통을 받을 가치가 없다고 생각합니다).

아마도 Unix 프로그래밍 책을 읽을 수도 있습니다.알칼리성 포스파타제, 또는 더 새로운 것;소개(2)&시스템 호출(2)) 그리고운영 체제: 세 가지 간단한 부분.

답변3

물어:

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

이 질문에 대답하려면 "GNU Linux" 자체가 존재하지 않는다는 사실을 아는 것이 중요합니다. GNU 프로젝트는 자유 소프트웨어를 개발하기 위한 공동 노력입니다. 이러한 무료 소프트웨어 중 일부 - 그리고 많은 것다른무료 및 오픈 소스 소프트웨어 - 수집기다른프로젝트: Fedora* 또는 Debian과 같은 공동 작업, 개방형 프로젝트, 다양한 수준의 개방성을 갖춘 기업 활동 또는 개인도 가능합니다. 이러한 컬렉션을 "Linux 배포판" 또는 "GNU/Linux 배포판"이라고 합니다(여기서는 정치적인 논쟁이 있으므로 다루지는 않겠습니다).

일반적으로 관심이 있으시면특징기능을 향상시키기 위한 가장 좋은 방법은 소프트웨어를 작성한 개발자와 협력하는 것입니다. 배포판은 다양한 소프트웨어를 수집하고 함께 작동하도록 하기 위해 해야 할 일이 많습니다.선호하다이러한 변경 사항은 "업스트림"에서 발생합니다.

따라서 귀하는 여기서 옳은 일을 했습니다. 기록의 업스트림 소스를 찾아 거기에 보고하려고 시도한 것입니다.

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

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

* 저는 Fedora에서 작업합니다. 저는 Red Hat에 근무하고 있습니다.

답변4

identify -format %m file.gif[0]

%m 이미지 파일 형식(파일 매직)

[0]은 첫 번째 프레임을 나타내며 실수로 비디오에 사용한 경우 도움이 될 수 있습니다. 그렇지 않으면 ffmpeg 라이브러리를 사용하여 각 프레임의 임시 복사본을 만듭니다.

이는 이미지에만 작동합니다. 일반 파일로 이 작업을 수행하는 방법을 모르겠습니다. ffmpeg는 임의의 mp4 파일에 대해 "avc1"을 반환하지만(다른 mp4 파일은 다른 문자열을 반환할 수 있으므로 여전히 구문 분석해야 함) 해당 파일에서 "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)

관련 정보