상당히 오래된 데비안에 최신 버전의 mutt 설치하기

상당히 오래된 데비안에 최신 버전의 mutt 설치하기

나는 Debian 7이 설치된 컴퓨터를 가지고 있습니다(예, 시스템이 오래되었다는 것을 알고 있지만 지금은 최신 버전으로 업그레이드할 수 없습니다). 이번 릴리스의 저장소에는 mutt 버전 1.5.21이 있지만, 이 버전의 mutt에 도입된 OAuth2 지원이 곧 필요할 것이기 때문에 mutt가 최소 2.0.7이기를 바랍니다(Gmail에서는 IMAP을 사용한 비밀번호 전용 로그인을 취소하고 있습니다). ).

나는 Debian 7에 mutt >= 2.0.7에 대해 사전 구축된 백포트가 없다고 가정합니다(적어도 아무것도 찾지 못했습니다. 존재하는 경우 지적해 주십시오). 그래서 소스에서 컴파일해야 합니다. 하지만 업스트림 소스 코드에서 데비안 관련 변경 사항을 보존하고 싶습니다. 최신 데비안 버전의 소스 RPM을 가져와 내 시스템에서 컴파일할 수 있나요? 아니면 이것이 작동하지 않습니까?

답변1

소스에서 deb 패키지를 빌드하는 것은 상대적으로 쉽지만(RPM이 아닌 DEB 소스가 필요함) 라이브러리 종속성에 주의해야 합니다. 새로운 mutt에는 이전 Debian 설치에서는 사용할 수 없는 라이브러리 버전이 필요할 수 있습니다.

다음 패키지 페이지에서 패키지 요구 사항을 확인하세요.https://tracker.debian.org/pkg/mutt. 버전 관리 링크를 참고하세요. "box" 심볼릭 링크 제어 파일은 빌드 종속성을 나열합니다.

최신 버전 2.2.4-1에 필요

Build-Depends: debhelper-compat (= 12),
 docbook-xml,
 docbook-xsl,
 gawk,
 gettext,
 libgnutls28-dev,
 libgpgme11-dev,
 libidn2-dev,
 libkrb5-dev,
 libncurses5-dev,
 libncursesw5-dev,
 libgsasl-dev,
 libtokyocabinet-dev,
 pkg-config,
 w3m,
 xsltproc,
 zlib1g-dev

이러한 패키지 이름 중 일부에는 버전 번호가 포함되어 있습니다. 데비안 7에서 작동하나요? 그렇지 않다면 빌드 종속성 체인을 따라 반복적으로 반복하는 것은 악몽이 될 것이며 아마도 그럴 가치가 없을 것입니다. 데비안용으로 패키지된 다음으로 오래된 버전은 2.0.5인데, 이는 요구 사항에 충분하지 않습니다.

Debian 7에 필요한 라이브러리(libgnutls28-dev, libgpgme11-dev 등)가 있으면 다음 단계는 orig tar 파일(업스트림 소스 tarball), debian .dsc 파일 및 debian diff 파일(. debian.tar.xz ), 둘 다 패키지 페이지에서 사용 가능https://packages.debian.org/unstable/mutt.

이 3개 파일(체크섬의 경우 orig.tar.gz.asc도 가능)을 다운로드하면 다음을 사용하여 압축을 풉니다.

dpkg-source -x mutt_2.2.4-1.dsc

( 포장 dpkg-source상태 dpkg-dev)

그런 다음 소스 디렉터리(mutt-2.2.4)로 cd하세요. 모든 빌드 종속성이 올바른 경우 실행하기만 하면 됩니다.

dpkg-buildpackage

.deb 바이너리는 상위 디렉터리에 생성되며 수동으로 설치할 수 있습니다.

sudo dpkg -i mutt_2.2.4*.deb

종속성에 나열된 필수 라이브러리 버전을 빌드하는 데 문제가 있을 수 있습니다. 나는 이것이 Debian 7에서 작동할 것이라고 기대하지 않습니다(전체 라이브러리 체인을 다시 빌드하지 않고는 노력할 가치가 없다고 생각합니다).

Build-Depends: debhelper-compat (= 12)그 외에도 처리하기 쉬운 문제에 직면할 수도 있습니다 . debhelper-compat (= 12)숫자만 포함된 파일을 만들고 만듭니다 debhelper (>= 9~) .debian/compat9

좋은 측정을 위해서는 자신만의 버전 번호로 로컬 빌드에 태그를 지정하기 위해 자신만의 debian/changelog 항목을 만들어야 합니다. dch( 패키지 debchange에서 )를 사용할 수 있습니다.devscripts

답변2

드디어 그 일을 하게 됐어요.

첫째, 필요한 mutt 버전이 잘못되었습니다. 일부 웹사이트에서 얻은 정보가 잘못된 것으로 판명되었습니다. 독서하는 똥개변경 로그나는 OAUTHBEARER 인증 방법에 대한 지원이 mutt 1.11.0에 도입되었고(특히 Gmail과 관련된 몇 가지 중요한 버그가 1.11.4에서 수정됨) XOAUTH2에 대한 지원이 버전 2.0.0에 도입되었음을 발견했습니다. 하지만 Gmail의 경우 XOAUTH2가 필요하지 않습니다. OAUTHBAREER이면 충분합니다. 따라서 필요한 최소 mutt 버전은 실제로 1.11.4입니다.

감사해요협회@Stephen Kitt가 기여했습니다. 데비안용으로 패키지된 다양한 버전의 mutt를 찾을 수 있었고 내 시스템에서 문제 없이 컴파일된 가장 높은 버전은 다음과 같았습니다.1.14.4-1. (내 시스템에는 debhelper 9가 있음) 제외하고 debhelper (>= 10)그것이 의존하는 모든 라이브러리가 내 시스템에 있거나 설치될 수 있습니다( libgnutls28-devwheezy-backports에서 설치될 수 있는 것처럼).

빌드에는 데비안 7에서는 사용할 수 없는 automake 1.16도 필요하다는 것이 밝혀졌습니다. 이것은 단지 스크립트이고 특정 종속성이 없기 때문에 후속 데비안 릴리스 중 하나에 대한 패키지를 설치할 수 있었습니다.

빌드 프로세스는 문제 없이 진행되었습니다. 이후 버전에서는 그렇지 않습니다.1.14.4-2) - 이는 debhelper-compat (= 12)일부 automake 관련 오류에 따라 달라지며 빌드가 실패합니다. 아마도 수정될 수 있지만 올바르게 빌드된 버전이 있었기 때문에 문제를 더 이상 조사하지 않았습니다.

그러나 새로 만든 똥개를 실제로 작동시키는 것은 또 다른 이야기입니다. 첫째, GPG 지원이 작동하지 않는 것으로 나타났습니다. 이는 (이전 것과는 반대로) 새 mutt가 libgpgme기본적으로 사용되기를 원하기 때문입니다. 이는 set crypt_use_gpgme=yes배포판에서 제공하는 기본 구성 파일에 이를 설정하여 달성됩니다(그리고 저는 여전히 이전 구성 파일을 사용하고 있습니다). 이 설정을 사용하면 GPG 지원이 작동하지만 libgpgme버전 1.4.3(빌드를 최소 버전 1.4.0으로 업그레이드해야 함)을 사용 gpg2하고 설치 중에 종속성으로 가져오기 때문에 만족스럽지 않습니다 . 내 로케일 에서는 gpg2화면에서 비밀번호를 요청할 때 문자 인코딩이 완전히 중단됩니다. 여기에 이미지 설명을 입력하세요. 이건 정말 추악해 보이고, 이 화면이 한 번이라도 나타나면 mutt는 종료 시 화면을 제대로 정리하지 않고 터미널에 mutt 출력의 남은 부분이 남게 되며 Linux는 중간 어딘가에 메시지를 표시합니다...

libgpgme그래서 나는 "클래식" GPG 지원( set crypt_use_gpgme=no내장 프로그램의 기본값) 을 사용하고 다시 전환하고 싶지 않지만 , 앞서 언급했듯이 이것은 작동하지 않습니다. 알아내는 데 많은 시간이 걸렸지만 문서에 언급되지 않은 변경된 또 다른 기본값이 있습니다. 새로운 mutt는 gpg-agent실행될 것으로 예상하지만(일반적으로 GUI가 아닌 시스템의 경우는 해당되지 않음) 실제로는 실행되지 않습니다. GPG에 별도로 비밀번호를 요청하고 Left 로 남겨두세요 . 이전 동작을 복원하려면 구성 파일에 다른 설정을 추가 gpg-agent해야 합니다 .set pgp_use_gpg_agent=no

그런 다음 정말 짜증나는 이전 mutt의 UI 동작에서 몇 가지 차이점을 발견했습니다. 첫째, 키 누르기를 사용하여 v첨부 파일을 표시하고 text/html 부분에서 Enter 키를 누르면 내부 뷰어에 원시 HTML로 표시됩니다. old mutt는 w3m그것을 표시하기 위해 mailcap 파일(예: )에 지정된 브라우저를 호출합니다 . 둘째, 키를 사용하여 M메시지를 폴더로 이동할 때 커서는 항상 마지막으로 사용한 폴더가 아닌 폴더 목록의 맨 위에 있습니다. 세 개의 폴더 화면이 있고 매번 필요한 폴더로 스크롤해야 하는 것은 정말 짜증나는 일입니다.

이 동작을 일으킨 이전 mutts에는 두 가지 특정 패치가 있었지만 이후 버전에서는 표시되지 않은 것으로 나타났습니다. 이 패치를 소스 코드에 통합하고 다시 빌드해야 합니다.

이것은 mutt 자체의 경우입니다. 하지만 실제 과제는 mutt_oauth2.py실제로 Google에서 인증 토큰을 가져오는 도우미 스크립트입니다. Python 3.7로 작성되었으며 해당 버전의 많은 기능을 사용합니다. Debian 7에서 사용할 수 있는 최고 Python 버전은 3.2입니다. 따라서 Python 3.2와 호환되도록 스크립트를 변경하려면 많은 작업이 필요합니다(여기서 설명하기에는 너무 많습니다).

그러나 결국 성공했습니다 :)

관련 정보