Emacs를 USENET 리더로 사용하는 방법: Gnus

USENET은 분산형 글로벌 메시징 시스템입니다. 100,000개 이상의 그룹이 다양한 주제와 전문 분야에 대해 이야기하는 첫 번째 글로벌 소셜 네트워크로 간주됩니다. 이는 USENET이 관심 있는 독자를 위한 지식과 토론의 훌륭한 저장소가 되게 합니다.
목차
- Gnus란?
- Emacs에서 뉴스 리더를 사용하는 이유
- Gnus 설치하기
- USENET 그룹을 읽기 위해 Gnus 설정하기
- 기본 사용법
- 자주 묻는 질문
또한 읽어보세요: Emacs를 사용하여 EMMS로 음악 재생하기
Gnus란?
최근 몇 년 동안 USENET이 감소했음에도 불구하고 여전히 토론을 하고 뉴스를 공유하기 위해 사용하는 사람들이 있습니다. 요즘 대부분의 USENET 사용자들은 Google Groups 웹사이트를 통해 네트워크와 인터페이스합니다. 그러나 Emacs를 사용하고 있다면, 이를 통해 USENET 뉴스 그룹을 볼 수 있는 방법이 있습니다.

Gnus는 뉴스 그룹을 읽기 위해 설계된 Emacs 패키지입니다. 뉴스 읽기를 쉽고 편리하게 만들어주는 많은 강력한 기능을 갖춘 풍부한 프로그램입니다. 또한 Emacs 내부에 있기 때문에 사용자는 게시물 내의 텍스트를 쉽게 조작하고 Emacs 시스템의 나머지 부분과 함께 사용할 수 있습니다.
Emacs에서 뉴스 리더를 사용하는 이유
Emacs는 항상 확장성의 주방 싱크대라고 칭송받아 왔습니다. 많은 패키지와 추가 기능이 있을 뿐만 아니라, 텍스트 편집 외부에서 Emacs의 기본 기능을 확장하는 것도 매우 쉽습니다.
Emacs는 상호 운용성의 아이디어에 기반하여 작동합니다. 이 아이디어는 Emacs가 패키지를 사용하여 텍스트를 생성하고 다양한 방식으로 변경할 수 있는 완전한 환경을 형성할 수 있게 합니다.

예를 들어, Emacs에는 자체 파일 관리자인 dired가 포함되어 있습니다. dired는 디렉토리 구조를 탐색하고 파일을 열 수 있게 해주는 간단한 Emacs 패키지입니다. 그러나 다른 파일 관리자와 달리 dired는 결과를 텍스트로 표시합니다.
Org Mode를 사용하여 일기를 작성하는 경우, 해당 텍스트를 복사하여 Org 파일 내에서 dired에서 정교한 링크를 생성할 수 있습니다.

Emacs가 패키지의 텍스트 출력을 다른 패키지의 입력으로 사용할 수 있는 능력 덕분에 Gnus와 같은 뉴스 리더는 Emacs 생태계에서 매우 귀중합니다.
예를 들어, 뉴스 게시물에서 텍스트의 일부를 복사한 다음 해당 텍스트를 Org Mode에 넣고 일기 항목, 일정 게시물 또는 아이디어 캡처로 추가할 수 있습니다.
또한 읽어보세요: 더 나은 생산성을 위한 유용한 Emacs 패키지 5가지
Gnus 설치하기
Gnus는 19.32 버전 이후 모든 기본 Emacs 설치에 포함되어 있습니다. 최근 버전의 Emacs를 사용하고 있다면 이미 Gnus가 포함되어 있을 가능성이 높습니다.

Alt + X를 눌러 gnus를 입력하면 시스템에 Gnus가 설치되어 있는지 확인할 수 있습니다. 이렇게 하면 기본 설정되지 않은 Gnus 버전이 로드됩니다.
USENET 그룹을 읽기 위해 Gnus 설정하기
Gnus의 초기 설정은 비교적 간단합니다. init.el 파일에서 몇 가지 옵션만 설정하면 .newsrc 파일을 생성할 수 있습니다.
.newsrc 파일은 홈 디렉토리에 위치한 뉴스 그룹 리더를 위한 표준 파일입니다. 이 파일의 주요 목적은 USENET 서버에서 사용 가능한 모든 그룹과 구독된 그룹을 기록하는 것입니다.
또한 .newsrc 파일은 이미 읽은 모든 게시물을 추적하는 상태 파일 역할도 합니다.

.newsrc 파일을 생성하려면 다음 명령을 실행하세요:
touch/home/$USER/.newsrc또한 읽어보세요: Leafnode를 오프라인 USENET 서버로 설정하는 방법
초기 구성
완료되면 Emacs의 구성 파일인 init.el 파일을 설정할 수 있습니다. 기본적으로 이 파일은 “/home/$USER/.emacs.d/” 또는 “/home/$USER/.config/emacs”에 있습니다.
Gnus를 올바르게 초기화하려면 init.el 파일에 다음 줄을 추가해야 합니다:
(setq user-full-name '"yourusername")
(setq user-mail-address '"[email protected]")
(setq gnus-select-method '(nntp "news.eternal-september.org"))- user-full-name은 Emacs에서 사용자 이름을 설정하는 일반 옵션입니다. 이는 뉴스 게시물을 보낼 때 Gnus가 “From” 헤더에 표시할 이름이 됩니다.
- user-mail-address는 일반 옵션입니다. user-full-name과 유사하게, Gnus가 “From” 헤더에 이 이메일을 표시하도록 지시합니다. 제 경우에는 유효하지 않은 이메일 주소를 사용했습니다.
- 마지막 옵션인 gnus-select-method는 Gnus 전용 옵션으로, 뉴스 리더가 연결할 서비스와 서버를 지정합니다. 제 경우에는 “news.eternal-september.org”를 서버로 선택한 nntp 서비스를 선택했습니다.

또한 읽어보세요: 유용하고 흥미로운 Bash 프롬프트 8가지
원격 USENET 인증
중요한 점은 인증이 필요한 USENET 공급자를 사용하는 경우, authinfo 파일에 계정 세부정보를 제공해야 한다는 것입니다. 이 파일은 Gnus가 USENET 서버 세부정보와 사용자 이름 및 비밀번호를 읽는 곳입니다.

하나를 생성하려면 Ctrl + X, Ctrl + F를 누르고 Emacs에 /home/$USER/.authinfo를 입력하세요. 이 명령은 홈 디렉토리에 .authinfo 파일을 생성하고 버퍼에서 엽니다.
.authinfo 파일의 일반 구문은 다음과 같습니다:
machine news.domain.name login yourusername force yes password yourpasswordgoeshere- machine 변수는 다른 머신이나 서버에 연결하고 있음을 나타냅니다.
- domain 이름 필드는 Gnus에게 연결하려는 머신의 주소임을 알려줍니다.
- login 필드는 USENET 계정의 사용자 이름을 입력하는 곳입니다.
- “force yes” 옵션은 서버가 요구하지 않더라도 Gnus가 인증하도록 지시합니다.
- 마지막으로 password 변수는 USENET 계정의 비밀번호를 포함합니다.
로컬 USENET 서버 사용하기
또한 Gnus는 로컬 스풀 파일에서 소스를 가져올 수 있습니다. 이는 새로운 뉴스 그룹을 로컬 머신에 자동으로 다운로드하는 서비스가 있는 경우 유용합니다.
이를 위해 “gnus-select-method” 함수의 nntp 설정을 변경해야 합니다:
(setq gnus-select-method '(nnspool ""))그러나 Leafnode를 로컬 USENET 서버로 사용하는 경우, 이를 NNTP 서버로 설정해야 합니다. 이는 Leafnode가 일반 “/var/spool/” 디렉토리보다 USENET 서버처럼 작동하기 때문입니다.
같은 머신에서 실행 중인 Leafnode 서버를 사용하려면 다음을 입력할 수 있습니다:
(setq gnus-select-method '(nntp "localhost"))이제 Alt + x를 눌러 Gnus를 실행하고 명령 버퍼에 gnus를 입력하세요. 이렇게 하면 Gnus가 로드되고 원격 USENET 서버에서 사용 가능한 모든 그룹을 가져옵니다.
또한 읽어보세요: Linux에서 루트 비밀번호 재설정하는 방법
기본 사용법
Gnus가 로드되면 빈 화면이 표시됩니다. 이는 기본적으로 Gnus가 구독되지 않은 뉴스 그룹과 읽은 뉴스 그룹을 숨기기 때문입니다.
Shift + 6을 눌러 USENET 서버에서 사용 가능한 모든 뉴스 그룹 목록을 볼 수 있습니다. 이 경우 Eternal September의 모든 사용 가능한 뉴스 그룹이 표시되었습니다.

USENET 그룹 구독하기
여기에서 U를 눌러 특정 뉴스 그룹을 구독하거나 구독 해제할 수 있습니다. 이렇게 하면 Gnus를 처음 시작할 때 해당 그룹이 시작 화면에 표시됩니다.
예를 들어, 저는 서버 화면에서 “alt.religion.emacs”와 “alt.folklore.computers” 두 그룹을 구독했습니다. Gnus를 다시 로드하니 이 두 그룹이 탐색할 수 있는 메인 화면에 표시되었습니다.

또한 읽어보세요: Linux에서 SFTP 서버 설정하는 방법
버퍼 이동
그곳에서 Enter를 눌러 뉴스 그룹으로 들어가고, Ctrl + N 및 Ctrl + P와 같은 표준 Emacs 이동 키를 사용하여 그룹 내의 다양한 게시물을 스크롤할 수 있습니다.

게시물을 열려면 Enter 또는 Tab 키를 누르고, 게시물 내에서 위아래로 스크롤하려면 Backspace 및 Space 키를 사용하세요.
Emacs의 검색 기능(Ctrl + S 및 Ctrl + R)을 사용하여 게시물을 빠르게 찾아보세요.
USENET 게시물 작성 및 답변하기
뉴스 그룹 내에서 새 게시물을 작성하려면 A를 눌러 메시지 편집기를 열고 게시물의 세부정보를 작성할 수 있습니다.

작성이 완료되면 Ctrl + C를 두 번 눌러 해당 뉴스 그룹에 메시지를 전송하세요.
그러나 그룹 내 게시물에 답변하려면 Shift + S, Shift + F를 누를 수 있습니다. 이렇게 하면 Gnus가 원본 게시물이 이미 인용된 메시지 편집기로 이동하는 “Followup” 버퍼를 시작합니다.

새 메시지를 게시하는 것과 유사하게, Ctrl + C를 두 번 눌러 해당 게시물에 대한 후속 메시지를 전송할 수 있습니다.
팁: Emacs 내에서 이메일을 사용하는 방법을 알아보세요.
스코어 파일을 통한 필터링
Gnus는 스코어 파일을 사용하는 강력하면서도 사용하기 쉬운 필터링 시스템을 가지고 있습니다. 이는 특정 패턴이나 기준을 충족할 때 게시물이 자동으로 “삭제”되는 일반적인 킬 파일과 다릅니다.
스코어 파일은 사용자가 특정 게시물의 내부 점수를 점진적으로 줄이거나 늘릴 수 있게 하여 Gnus가 어떤 게시물을 우선시하고 어떤 게시물을 숨기거나 원격 서버에서 가져오지 않을지를 알려줍니다.
필터링 유형
또한 Gnus는 기능이 풍부한 필터링 시스템을 가지고 있습니다. 사용자가 특정 필터의 다양한 부분을 제어하고 미세 조정할 수 있습니다.

예를 들어, 특정 게시물의 점수를 낮추고 싶다면 해당 게시물을 강조 표시하고 L을 누르면 됩니다. 이렇게 하면 명령 버퍼에 게시물의 점수를 기준으로 할 속성을 묻는 작은 메뉴가 나타납니다.
속성 목록은 방대하지만 가장 중요한 속성은 다음과 같습니다:
- A: 작성자의 이름에 대해 점수를 매깁니다.
- S: 주제 텍스트에 대해 점수를 매깁니다.
- L: 줄 수에 대해 점수를 매깁니다.
- B: 텍스트 본문에 대해 점수를 매깁니다.
제 경우에는 게시물의 작성자를 기준으로 점수를 매기고 싶어서 A를 눌렀습니다.
필터 일치 방법
그곳에서 Gnus는 이 점수에서 구현하고자 하는 문자열 일치 유형을 묻습니다. 정확, 부분 문자열, 퍼지 및 정규 표현식 중에서 선택할 수 있습니다:
- 정확: 전체 문자열을 사용하여 텍스트를 일치시킵니다.
- 부분 문자열: 문자열의 일부를 사용하여 텍스트를 일치시킵니다. 이는 게시물이 전체 텍스트와 일치할 필요가 없음을 의미합니다.
- 퍼지: 이전 게시물에 기반한 예측 모델을 사용합니다. 이는 기호, 숫자 및 텍스트를 모호하게 만드는 모든 형태를 사용하여 부분 문자열 일치를 우회하려는 창의적인 게시자에게 특히 유용합니다.
- 정규 표현식: 텍스트를 필터링하기 위해 보다 전통적인 정규 표현식을 사용합니다.

제 경우에는 부분 문자열을 선택했으므로 S를 눌렀습니다.
또한 읽어보세요: Arch Linux를 위한 훌륭한 AUR 헬퍼 5가지
필터 지속 시간
마지막으로 Gnus는 이 점수가 임시, 영구 또는 즉각적인지 여부를 묻습니다.
- 임시: 점수가 설정된 날짜에 만료됩니다. 이는 특정 게시물이나 게시자의 점수를 제한된 기간 동안 낮추거나 높이고 싶을 때 유용합니다.
- 영구: 점수가 만료되지 않습니다. 이는 그룹에 난입할 수 있는 스팸 게시자를 필터링하는 데 유용합니다.
- 즉각적: Gnus가 현재 버퍼에 점수를 적용하되 점수 파일에 추가하지 않습니다. 이는 지금 게시물을 필터링하고 싶지만 지속적으로 점수를 매기고 싶지 않을 때 유용합니다.

제 경우에는 이 필터를 영구적으로 하고 싶어서 P를 눌렀습니다.
축하합니다! 이제 Gnus를 Emacs의 뉴스 리더로 사용하는 방법에 대한 기본적인 이해를 갖추었습니다. 또한 인증된 USENET 서버에 연결하는 방법과 스코어 파일 및 필터링을 올바르게 활용하는 방법에 대한 기본적인 아이디어도 갖추게 되었습니다.
그러나 이러한 모든 이야기가 Emacs에 대해 더 배우고 싶게 만들었다면, Doom Emacs 설치 방법을 배워야 합니다.
또한 읽어보세요: Doom Emacs란 무엇이며 어떻게 설치하나요?
자주 묻는 질문
메시지를 작성했는데 더 이상 보내고 싶지 않습니다. 게시물이나 후속 조치를 취소하려면 어떻게 해야 하나요?
알려지지 않았지만, 현재 작성 중인 게시물을 취소할 수 있을지도 모릅니다. 그렇게 하려면 Ctrl + C, Ctrl + D를 누르세요.
Gnus에 여러 USENET 서버를 추가할 수 있나요?
네! init.el 파일에 또 다른 “gnus-select-method” 변수를 추가하기만 하면 됩니다.
예를 들어, init.el 파일은 다음과 같이 보일 수 있습니다:
(setq user-full-name '"ramcesred") (setq user-mail-address '"[email protected]") (setq gnus-select-method '(nntp "news.eternal-september.org")) (setq gnus-select-method '(nntp "nntp.aioe.org")) (setq gnus-select-method '(nntp "localhost"))
완료되면 Emacs를 다시 로드하여 Gnus 구성을 새로 고치세요.
기사를 읽었는데 이제 메인 화면 목록에서 사라졌습니다. 제가 적극적으로 따르고 있는 특정 게시물을 고정할 수 있나요?
네! gnus-summary-tick-article-forward 함수를 사용하여 그렇게 할 수 있습니다. 해당 게시물이 선택된 상태에서 U 키를 눌러 이 함수를 액세스할 수 있습니다.
그러나 이 기능은 단지 이 한 기사를 “고정”할 뿐입니다. 해당 스레드 내의 다른 모든 답글은 기본적으로 표시되지 않습니다. 그렇게 하려면 Shift + A, Shift + T를 눌러 해당 주제에 대한 전체 스레드를 재구성하세요.