News Leafsite

Обычно, если вы хотите читать новости в offline, на вашем компьютере должен быть установлен сервер новостей (INN или CNews). К тому же у вас должен быть доступ через nntp или uucp к серверу новостей вашего провайдера. На самом деле, эти пакеты содержат намного больше возможностей, чем вам может понадобиться, так что лучший выход - это поставить себе Leafnode.

Leafnode намного проще в использовании и намного меньше в размерах, но имеет несколько недостатков: медленно работает и при сбое может потерять некоторые сообщения. Вот почему вы не должны использовать его в качестве большого сервера новостей, но тем не менее, это подходящее решение для обычных пользователей, которые не хотят тратить много времени на настройку INN.

Где взять Leafnode?

Leafnode доступен на ftp://ftp.troll.no/pub/freebies/. Автор - Arnt Gulbrandsen, служащий Troll Tech AS. Последняя версия 1.4. Кроме того, Leafnode включен в состав некоторых дистрибутивов (например, Debian). Однако, убедитесь, что у вас, как минимум, версия 1.4, в которой были исправлены некоторые критические ошибки.

Как его установить?

Небольшая помощь в установке идет вместе с пакетом, но давайте сделаем это вместе :-) - Если Leafnode v1.4 входит в состав вашего дистрибутива, достаточно мудро будет использовать скомпилированную версию и пропустить шаги с 1 по 4.

1.) Убедитесь, что на вашем компьютере нет другого запущенного сервера новостей. Когда вы наберете $ telnet localhost nntp, то вы должны получить сообщение об ошибке. В противном случае, нужно деинсталлировать INN, CNews или другой сервер новостей, и закомментировать строчку nntp в файле /etc/inetd.conf.

2.) Убедитесь, что существует пользователь "news" - проверьте его в файле /etc/passwd. Если нет, создайте его (просто наберите $ adduser news или сделайте нечто подобное при помощи утилит, поставляемых с вашим дистрибутивом).

3.) Распакуйте исходные тексты: $ tar xfz leafnode-1.4.tar.gz и перейдите в каталог $ cd leafnode-1.4

4.) Скомпилируйте программу и установите ее $ make; make install

5.) Отредактируйте файл /usr/lib/leafnode/config (он может находиться в другом месте. Например, в /etc/leafnode, если вы используете готовую версию из вашего дистрибутива). Строка "server =" должна указывать на сервер новостей вашего провайдера.

6.) Отредактируйте файл /etc/nntpserver. Он должен содержать имя вашего компьютера (localhost или другое, выдаваемое командой hostname). Если в каком-нибудь файле запуска (/etc/profile или /.bash_profile) определяется соответствующая переменная окружения, вы должны установить ей аналогичное значение.

7.) Отредактируйте файл /etc/inetd.conf: Убедитесь, что в нем нет строки, начинающейся с "nntp" (закомментируйте ее символом "#", если это так). Затем добавьте следующую строчку: nntp stream tcp nowait news /usr/sbin/tcpd /usr/local/sbin/leafnode Когда кто-то (например вы :-) подключится к вашему компьютеру на порт NNTP в качестве сервера запустится leafnode.

8.) Подключитесь к Интернет и запустите программу "fetch" от пользователя root или news. Когда fetch запускается в первый раз, он скачивает список групп новостей вашего пройвадера. Это может занять некоторое время, в зависимости от скорости соединения и количества групп.

9.) Запустите вашу любимую программу чтения новостей (slrn, (r)tin и knews - не очень плохое начало) и подпишитесь на все группы, которые хотели бы получать. Причем не только подпишитесь, но и зайдите в них, даже если они пусты.

10.) Снова запустите fetch и загрузите все новости групп, на которые подписаны.

Как мне его поддерживать?

Теперь ваша система новостей запущена и работает, но можно сделать еще несколько вещей. Отредактируйте файл /usr/lib/leafnode/config, чтобы установить время устаревания групп, т.е. когда старые сообщения должны удаляться. Если вы читаете какие-нибудь группы с большим трафиком, стандартное время в 20 дней возможно окажется слишком большим для вас - 4 дня или одна неделя, я думаю, вас больше устроит. Можно изменить это значение для всех групп ("expire = n" хранит все группы n дней) или для каждой группы отдельно, написав groupexpire foo.bar n для хранения сообщений группы foo.bar n дней.

Установка времени сама по себе не удаляет старые сообщения - это производит программа texpire. Она может быть запущена, как задание, из cron или из командной строки. Если ваш компьютер работает круглосуточно, можно добавить следующую строку в файл crontab пользователя news (чтобы изменить его, войдите как news и наберите "crontab -e" или наберите как root "crontab -u news -e"):

0 19 * * * /usr/local/sbin/texpire

Эта строка заставляет cron запускать texpire каждый день в 19:00 (man crontab). Если ваш компьютер работает не круглосуточно, то нужно время от времени самому запускать texpire, когда заметите, что fetch начал работать слишком медленно.

Как он работает?

Leafnode - "самый настоящий" NNTP сервер, т.е. вы можете также войти в него с другого компьютера (через Internet, локальную сеть и т.п.). Каждый раз, когда вы входите в группу, программа чтения новостей запрашивает ее у leafnode. Если группа не существует, leafnode создает пустой файл, названный согласно группе, в каталоге /var/spool/news/interesting.groups. Когда вы запустите fetch в следующий раз, он загрузит сообщения группы. Если группа новостей не посещалась определенное время, leafnode перестанет загружать ее статьи и удалит ее имя из /var/spool/news/interesting.groups. Аналогично, если вы случайно подписались на группу новостей с большим трафиком, то можно самостоятельно удалить оттуда свой файл, если не хотите загружать сообщения этой группы в течении следующей недели.

Недели для Вас не достаточно? Вы хотите уйти в отпуск на три недели и продолжать получать новости? К сожалению, в leafnode нет опции для настройки этого, но вы можете отредактировать файл leafnode.h и перекомпилировать leafnode. Просто установите время в секундах в константах TIMEOUT_LONG и TIMEOUT_SHORT. Другое, более простое решение определить задание для cron, выполняющееся каждую ночь "touch /var/spool/news/interesting.groups/*".

Если вы хотите узнать список всех доступных групп, загляните в файл /usr/lib/leafnode/groupinfo, где найдете короткое описание к каждой группе.

Если хотите снова загрузить список групп новостей (например, захотите почитать новую группу), просто удалите файл /var/spool/news/active.read. Fetch создаст его и получит новый список. Впрочем, вам не нужно следить за этим постоянно, т.к. fetch время от времени делает это сам.

Какой программой чтения новостей мне пользоваться?

Под Linux нет *настоящей* программы чтения новостей, впрочем, как нет и *настоящего* текстового редактора. Я пользуюсь emacs в режиме GNU, т.к. это самый гибкий редактор под Linux. Многие пользуются trn, nn и др., так что можете попробовать любую программу на свой вкус. Только одной программой не стоит пользоваться - Netscape. Он большой, нестабильный, с маленькими возможностями и иногда создает корявые сообщения. Впрочем, вам выбирать.

В любом случае, knews - это неплохая отправная точка, чтобы набрать первый опыт. Он очень дружественен и легок в понимании.

Где мне получить дополнительную информацию?

Кое-какая документация идет вместе с пакетом Leafnode (почитайте файлы INSTALL и README, да и исходные тексты тоже очень интересны). Если вы хотите больше узнать о "профессиональных" и "больших" серверах новостей, посмотрите INN FAQ (идущий вместе с пакетом INN). Для того чтобы узнать информацию о вашей программе чтения новостей, наберите "man имя_программы", или посмотрите другие файлы в каталоге /usr/doc.

Если у вас есть вопросы относительно систем новостей, просто спросите об этом в соответствующей конференции (посмотрите в иерархии news.software.*).

Если у вас есть вопросы относительно этого HOWTO, просто напишите мне (sutok@gmx.de).