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

Получение базы словарей (GCIDE)
GCIDE — свободная GNU‑библиотека словарных записей. Она часто используется как примерная база для DICT‑серверов.
- Скачайте GCIDE:
wget ftp://ftp.gnu.org/gnu/gcide/gcide-0.53.tar.xz- Распакуйте архив:
tar xvJf ./gcide-0.53.tar.xz- Скопируйте данные в общесистемный каталог /usr/local/share:
sudo cp -rv ./gcide-0.53/usr/local/share/ /usr/local/share/Папка результата обычно будет /usr/local/share/gcide-0.53 или похожая — обратите внимание на точный путь после копирования.

Важно: при работе с несколькими версиями словарей проверяйте, что конфигурация dicod ссылается на корректный каталог базы.
Настройка и запуск GNU Dico
После установки и размещения базы можно подготовить конфигурационный файл и запустить демон.
- Перейдите в каталог конфигурации и создайте файл:
cd /usr/local/etc/
sudo touch ./dicod.conf
sudo chown $(whoami) ./dicod.conf- Откройте файл в предпочитаемом редакторе и добавьте конфигурацию. Ниже — адаптированная версия, совместимая с 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 Сохраните файл и закройте редактор.
- Создайте системного пользователя для демона (если ещё нет):
sudo groupadd dicod || true
sudo useradd -s /usr/sbin/nologin -d /var/lib/dicod -g dicod dicod || true- Создайте каталог для pid‑файла и выставьте владельца:
sudo mkdir -p /run/dicod
sudo chown -R dicod:dicod /run/dicod- Запустите dicod в режиме переднего плана для отладки:
sudo dicod --foreground- В отдельном терминале запустите клиентскую утилиту dico и подключитесь к локальному серверу:
dico
.open localhost
wordЕсли всё настроено верно, вы увидите определение слова из GCIDE.

Критерии приёмки
- dicod запускается без ошибок в режиме foreground.
- dico .open localhost возвращает корректную запись из GCIDE.
- В логе нет ошибок загрузки модулей и путей к базе.
Автозапуск через systemd
Создайте простую unit‑конфигурацию systemd, чтобы dicod автоматически стартовал при загрузке.
- Создайте файл сервиса:
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/- Перезапустите демон systemd и включите сервис:
sudo systemctl daemon-reload
sudo systemctl enable personal-dicod.service
sudo systemctl start personal-dicod.service
sudo systemctl status personal-dicod.service- Проверьте логи через journalctl, если потребуется:
sudo journalctl -u personal-dicod.service -b
Совет: если планируете публичный доступ, ограничьте интерфейс прослушивания (listen address) и используйте брандмауэр или туннель.
Интеграция с GNU Emacs
Dico легко подключить к Emacs через пакет dictionary.el.
Установите пакет: Alt+X → package-install → dictionary.
Настройте сервер: Alt+X → customize-variable → dictionary-server, введите localhost.
Сохраните настройки (Apply and Save).
Поиск: Alt+X → dictionary-search, введите слово — результат будет взят с локального dicod.

Полезно: 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).
Мини‑методология установки (шаблон действий)
- Подготовка ОС и зависимостей.
- Сборка и установка dico/dicod.
- Размещение баз (GCIDE или другие).
- Настройка dicod.conf и тестовый запуск.
- Создание systemd‑сервиса.
- Интеграция с клиентами (Emacs) и проверка.
- Настройка безопасности и резервного копирования конфигураций.
Когда это не подходит
- Нужна массовая онлайн‑индексация и быстрый отклик для миллионов запросов — лучше выбрать полнофункциональный веб‑сервис или специализированную систему поиска.
- Если требуется шифрование на уровне приложения и сложная аутентификация — добавьте прослойку (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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента