Гид по технологиям

Установка и запуск GNU Dico — локальный DICT‑сервер в Linux

• 6 min read • Инструменты • Обновлено 21 Nov 2025
GNU Dico: локальный DICT‑сервер в Linux
GNU Dico: локальный DICT‑сервер в Linux

Кратко

Dico — современная реализация протокола DICT, которая позволяет поднять лёгкий локальный «онлайн» словарь в Linux. В этой инструкции показано, как установить GNU Dico, загрузить базу GCIDE, настроить автозапуск через systemd, подключить словарь к Emacs и обеспечить базовую безопасность сервера.

Важно: DICT — текстовый протокол без шифрования. Для публичного доступа используйте туннели, VPN или фильтры доступа.

Содержание

  • Что такое онлайн-словарь и зачем он нужен
  • Установка GNU Dico
  • Получение базы словарей (GCIDE)
  • Настройка и запуск GNU Dico
  • Автозапуск через systemd
  • Интеграция с GNU Emacs
  • Частые вопросы (FAQ)
  • Дополнительно: безопасность, чек‑листы, альтернативы и глоссарий

Что такое онлайн-словарь и зачем он нужен

DICT‑серверы — это сетевые демоны, которые читают словарные базы и возвращают определения по запросу. В отличие от веб‑словарей, DICT‑серверы:

  • работают по простому текстовому протоколу (обычно на порту 2628),
  • могут быть очень лёгкими и потреблять минимум ресурсов,
  • легко интегрируются с редакторами и клиентами (например, Emacs, dico),
  • удобны для локального хранения и офлайн‑доступа к словарям.

Коротко: хороший вариант для тех, кто хочет держать свою словарную коллекцию под контролем и быстро получать определения из редактора или терминала.

Страница бумажного словаря, крупный план.

Что ещё полезно знать

  • DICT обычно слушает TCP‑порт 2628.
  • На одной машине можно поднять несколько баз и модули обработки.
  • Dico совместим с GNU Emacs через пакет dictionary.el.

Установка GNU Dico

Пошагово: подготовка зависимостей, сборка и установка из исходников.

  1. Получите зависимости (пример для Debian/Ubuntu):
sudo apt update
sudo apt install wget gcc make m4 m4-doc python3 libltdl-dev libdico2 zlib1g-dev
  1. Скачайте исходники Dico:
wget https://ftp.gnu.org/gnu/dico/dico-2.11.tar.xz
  1. Распакуйте архив:
tar xvJf ./dico-2.11.tar.xz
cd ./dico-2.11
  1. Подготовьте конфигурацию сборки и соберите пакет:
./configure
make
  1. Установите бинарники в систему:
sudo make install

После установки в системе появится исполняемый файл dicod (демон) и клиент dico.

Терминал: сборка и установка GNU Dico.

Получение базы словарей (GCIDE)

GCIDE — свободная GNU‑библиотека словарных записей. Она часто используется как примерная база для DICT‑серверов.

  1. Скачайте GCIDE:
wget ftp://ftp.gnu.org/gnu/gcide/gcide-0.53.tar.xz
  1. Распакуйте архив:
tar xvJf ./gcide-0.53.tar.xz
  1. Скопируйте данные в общесистемный каталог /usr/local/share:
sudo cp -rv ./gcide-0.53/usr/local/share/ /usr/local/share/

Папка результата обычно будет /usr/local/share/gcide-0.53 или похожая — обратите внимание на точный путь после копирования.

Терминал: процесс загрузки и распаковки GCIDE.

Важно: при работе с несколькими версиями словарей проверяйте, что конфигурация dicod ссылается на корректный каталог базы.

Настройка и запуск GNU Dico

После установки и размещения базы можно подготовить конфигурационный файл и запустить демон.

  1. Перейдите в каталог конфигурации и создайте файл:
cd /usr/local/etc/
sudo touch ./dicod.conf
sudo chown $(whoami) ./dicod.conf
  1. Откройте файл в предпочитаемом редакторе и добавьте конфигурацию. Ниже — адаптированная версия, совместимая с GCIDE:
capability (mime,xversion);
timing yes;
pidfile /var/run/dicod/dicod.pid;
module-load-path ("/usr/local/lib/dico");

load-module gcide;
database {
   name "gcide";
   handler "gcide dbdir=/usr/local/share/gcide-0.53 suppress-pr";
   languages-from "en";
   languages-to "en";
}

user dicod;
max-children 18;
inactivity-timeout 5;

server-info 

Сохраните файл и закройте редактор.

  1. Создайте системного пользователя для демона (если ещё нет):
sudo groupadd dicod || true
sudo useradd -s /usr/sbin/nologin -d /var/lib/dicod -g dicod dicod || true
  1. Создайте каталог для pid‑файла и выставьте владельца:
sudo mkdir -p /run/dicod
sudo chown -R dicod:dicod /run/dicod
  1. Запустите dicod в режиме переднего плана для отладки:
sudo dicod --foreground
  1. В отдельном терминале запустите клиентскую утилиту dico и подключитесь к локальному серверу:
dico
.open localhost
word

Если всё настроено верно, вы увидите определение слова из GCIDE.

Терминал: подключение dico к локальному серверу.

Критерии приёмки

  • dicod запускается без ошибок в режиме foreground.
  • dico .open localhost возвращает корректную запись из GCIDE.
  • В логе нет ошибок загрузки модулей и путей к базе.

Автозапуск через systemd

Создайте простую unit‑конфигурацию systemd, чтобы dicod автоматически стартовал при загрузке.

  1. Создайте файл сервиса:
cat <<'EOF' > personal-dicod.service
[Unit]
Description=A basic GNU Dico Daemon Service

[Service]
ExecStart=/usr/local/bin/dicod -f --stderr
User=dicod
PIDFile=/var/run/dicod/dicod.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

sudo cp ./personal-dicod.service /etc/systemd/system/
  1. Перезапустите демон systemd и включите сервис:
sudo systemctl daemon-reload
sudo systemctl enable personal-dicod.service
sudo systemctl start personal-dicod.service
sudo systemctl status personal-dicod.service
  1. Проверьте логи через journalctl, если потребуется:
sudo journalctl -u personal-dicod.service -b

Терминал: systemd unit для dicod и проверка статуса.

Совет: если планируете публичный доступ, ограничьте интерфейс прослушивания (listen address) и используйте брандмауэр или туннель.

Интеграция с GNU Emacs

Dico легко подключить к Emacs через пакет dictionary.el.

  1. Установите пакет: Alt+X → package-install → dictionary.

  2. Настройте сервер: Alt+X → customize-variable → dictionary-server, введите localhost.

  3. Сохраните настройки (Apply and Save).

  4. Поиск: Alt+X → dictionary-search, введите слово — результат будет взят с локального dicod.

Emacs: установка и настройка dictionary.el.

Полезно: Emacs можно настроить так, чтобы поиск слов происходил горячей клавишей или контекстным меню.

Частые вопросы

dicod немедленно завершает работу при запуске

Частая причина — проблемы с pid‑файлом или правами пользователя. Проверьте, существует ли пользователь dicod и группа:

sudo groupadd dicod && sudo useradd -s /usr/sbin/nologin -d /var/lib/dicod -g dicod dicod

Проверьте конфигурацию на синтаксические ошибки:

dicod -t

Посмотрите логи systemd или запуск в foreground для деталей.

Можно ли использовать другую базу словарей, не GCIDE?

Да. Нужно скачать нужную базу и в dicod.conf добавить соответствующий module/database‑блок. Для баз типа dict.org необходимо обеспечить совместимый модуль и формат данных.

Пакет dictionary.el отсутствует в моём репозитории Emacs

Добавьте MELPA Stable или MELPA в package‑archives (пример для init.el):

(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)

Затем обновите список пакетов и установите dictionary.

Дополнительно: безопасность, чек‑листы, альтернативы и справочные материалы

Факт‑бокс

  • Стандартный порт DICT: 2628/TCP.
  • Примерное значение max-children в конфиге выше: 18.
  • GCIDE — свободная англоязычная база, релиз в архиве: gcide-0.53.

Безопасность и приватность

  • DICT передаёт данные в открытом виде. Для публичного доступа используйте:
    • SSH‑туннель: ssh -L 2628:localhost:2628 yourserver
    • VPN между клиентом и сервером
    • TLS‑терминирование на прокси (если прокси поддерживает)
  • Ограничьте прослушивание только на localhost, если сервер нужен вам одному.
  • Используйте брандмауэр (ufw/iptables) для блокировки нежелательных адресов.
  • При обработке личных данных убедитесь в соответствии с местными правилами приватности (GDPR при работе с данными граждан ЕС).

Чек‑лист по ролям

Администратор:

  • Установил бинарник dicod и удостоверился в правах файла.
  • Создал пользователя dicod и каталог /run/dicod.
  • Настроил systemd unit и включил автозапуск.
  • Настроил брандмауэр и проверил логи.

Разработчик/энтузиаст:

  • Проверил работу dico с локальным сервером.
  • Добавил дополнительные словари в module-load-path.
  • Настроил сборку/пакетизацию для развёртывания.

Emacs‑пользователь:

  • Установил dictionary.el через package-install.
  • Указал dictionary-server = localhost.
  • Проверил поиск из Emacs (dictionary-search).

Мини‑методология установки (шаблон действий)

  1. Подготовка ОС и зависимостей.
  2. Сборка и установка dico/dicod.
  3. Размещение баз (GCIDE или другие).
  4. Настройка dicod.conf и тестовый запуск.
  5. Создание systemd‑сервиса.
  6. Интеграция с клиентами (Emacs) и проверка.
  7. Настройка безопасности и резервного копирования конфигураций.

Когда это не подходит

  • Нужна массовая онлайн‑индексация и быстрый отклик для миллионов запросов — лучше выбрать полнофункциональный веб‑сервис или специализированную систему поиска.
  • Если требуется шифрование на уровне приложения и сложная аутентификация — добавьте прослойку (reverse proxy с TLS) или используйте VPN.

Альтернативы

  • SDCV — терминальная программа с поддержкой словарей, проще в установке для локального использования.
  • Веб‑решения и публичные API (Merriam‑Webster, Oxford) — подходят для интеграций, но обычно платные.

Краткий глоссарий (1‑строчные определения)

  • DICT: протокол для запроса словарных записей по сети.
  • dicod: демон GNU Dico, серверная часть.
  • dico: клиентская утилита для протокола DICT.
  • GCIDE: GNU Collaborative International Dictionary of English — открытая англоязычная база.
  • pidfile: файл, содержащий PID работающего демона.
  • systemd: система инициализации и менеджер сервисов в современных Linux.

Пример принятия решения — диаграмма

flowchart TD
  A[Нужен локальный словарь?] -->|Да| B{Будет доступ извне?}
  B -->|Нет| C[Поднять на localhost]
  B -->|Да| D[Ограничить доступ: firewall + VPN]
  D --> E{Требуется шифрование?}
  E -->|Да| F[Использовать SSH туннель/VPN/Proxy TLS]
  E -->|Нет| G[Открытая публикация 'не рекомендуется']
  C --> H[Интегрировать с Emacs]
  F --> H

Короткое резюме

GNU Dico — удобный и лёгкий способ поддерживать локальную копию словаря и получать определения из терминала или редактора. Установка и настройка включают сборку из исходников, размещение базы (например, GCIDE), конфигурацию dicod.conf и настройку автозапуска через systemd. Для публичного доступа обязательно добавьте уровень защиты (VPN/SSH/брандмауэр).

Image credit: Unsplash. All alterations and screenshots by Ramces Red.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро