ivan 26.11.2010 10:36

Жизнь в консолиОффлайн-словарь dict (en-ru, ru-en, толковый)

Понадобился мне англо-русский словарь. Доступ в Интернет есть не всегда, а дома он появится только недели через 1-2 (да, и стоит ли лазить во всемирную паутину каждый раз, встретив незнакомое слово). Хотелось что-то простое, “без наворотов”. Выбирал сердцем (с). Сердце молча ритмично сокращалось&расширялось, поэтому пришлось брать первую попавшуюся программу. Ею оказалась связка dictd+dict.



1. В дефолтной Ubuntu 10.04 понадобиться скачать и установить следующие пакеты:
libmaa2 - утилита для работы maa (что это такое)
recode - утилита для преобразования кодировки символов в файлах
librecode - основа для recode
dictd - сервер словарей
dictzip - утилита для сжатия словарей
dict - программа-клиент
mueller7-dict - англо-русский словарь Мюллера (помимо англо-русского есть ещё куча двуязычных словарей (к сожалению, русский в их списке больше не присутствует), а также английские словари компьютерных терминов, жаргона, библейский терминов и т.д.).
mueller7accent - тот же самый словарь Мюллера, тОлько в словАх простАвлены ударЕния. Так что можно ставить любой по выбору. Я поставил этот.

Я искал и скачивал тут.

2. Установить пакеты в консоли: поскольку я скачивал вручную, то ставил через sudo dpkg -i все_указанные_пакеты через_пробелы (автодополнение имён клавишей рулит).

3. Несколько секунд и можно открыть файл настроек dict и закомментировать все сервера, кроме localhost (хотя, он всё равно в списке указан первым).

4. Далее вводим при необходимости в консоли:

1
dict  zabyl_eto_slovo



и запоминаем результат на будущее. Образец вывода:

$ dict table
1 definition found

From Mueller English-Russian Dictionary (with accents) :

table

1. _n.
1) стол; to be (или to sit) at table быть за столОм, обЕдать и т.п.
2) пИща, стол; едА, кУхня; to keep a good table имЕть хорОшую кУхню;
хорошО готОвить; unfit for table несъедОбный
3) Общество за столОм; to keep the table amused развлекАть гостЕй за
столОм
4) доскА (тж. для настольных игр)
5) плитА; дощЕчка; нАдпись на плитЕ, дощЕчке; скрижАль; the ten tables
_библ. дЕсять зАповедей
6) таблИца; расписАние; тАбель; table of contents оглавлЕние
7) плОская повЕрхность
8) гОрное платО, плоскогОрье (тж. tableland)
9) грань (драгоцЕнного кАмня)
10)_тех. стол (станка); планшАйба; рольгАнг
11)_архит. карнИз
12)_attr. столОвый; to lay on the table _парл. отложИть обсуждЕние
(законопроекта); to lie (up) on the table _парл. быть отлОженным, не
обсуждАться (о законопроекте); upon the table публИчно обсуждАемый;
общеизвЕстный; to take from the table _ам. вернУться к обсуждЕнию
(законопроекта); to turn the tables on (или upon) smb. бить
протИвника егО же орУжием; поменЯться ролЯми; under the table "под
столОм", пьЯный
2. _v.
1) класть на стол
2) предлагАть, выносИть на обсуждЕние
3) составлЯть таблИцы, расписАние
4) отклАдывать в дОлгий Ящик, положИть под сукнО


5. Далее нужно подключить русско-английский словарь. Родных таких dict-овских нет, но есть переформатированные словари от stardict (если я правильно всё понял). Скачал slovnyk.ru-en (русско-английский) и ozhegov (толковый словарь Ожегова).

6. Разархивировал их в папку словарей: /usr/share/dictd

7. Покурил маны и прописал добавленные словари в базу словарей dictd:

1
sudo dictdconfig -w



Проверил конфиг: новые словари прописаны.

8. Ввожу для проверки:

1
dict стол



выскакивает сообщение, что не найдено определений, то есть dict+dictd не видит добавленные русско-английский и русский толковый словари.

Внимание, вопрос: как заставить (без применения паяльника и выдирания ногтей) dict+dictd видеть русско-английский словарь? Или надо его снести и поставить sdcv (Stardict console version).

UPD: Вечером запустил dict, чтобы выложить здесь негативный результат его работы, но ВНЕЗАПНО всё само собой заработало. Может, после обновления списка словарей следует запускать dict с какой-нибудь специальной опцией? Не знаю.

Образец вывода на русское слово:

$ dict рис
6 definitions found

From Russian-English full dictionary :

рис
муж. rice
paddy (на корню, в шелухе) шелушеный рис
– brown rice дробленый рис – ground rice
м. rice

From Russian-English full dictionary :

рис.
fig

From Толковый словарь Ожегова :

рис
злак с белыми продолговатыми зернами, идущими в пищу
E.g. Плантации риса. Пирог с рисом.


From Толковый словарь Ожегова :

рис
(злак с белыми продолговатыми зернами, идущими в пищу, а также)
его зерна
E.g. Плантации риса. Пирог с рисом.


From slovnyk_ru-en :

"РИС"
PADDY

From slovnyk_ru-en :

"РИС"
RICE


Конфиг dict:
# /etc/dictd/dict.conf

# Written by Bob Hilliard
# 1998/03/20. Last revised Sun, 22 Nov 1998 18:10:04 -0500 This is
# the configuration file for /usr/bin/dict. In most cases only the
# server keyword need be specified.

# This default configuration will try to access a dictd server on the
# local host, failing that, it will try the public server. In many
# cases this will be slow, so you should comment out the line for the
# server that you don't want to use. To use any other server, enter
# its IP address in place of "dict.org".

# Refer to the dict manpage (man dict) for other options that could
# be inserted in here.

server localhost
#server dict.org
#server dict0.us.dict.org
#server alt0.dict.org


Список подключённых словарей /var/lib/dictd/db.list:
database mueller7accent
{
data /usr/share/dictd/mueller7accent.dict.dz
index /usr/share/dictd/mueller7accent.index
}
database sdict_ru-en
{
data /usr/share/dictd/sdict_ru-en.dict.dz
index /usr/share/dictd/sdict_ru-en.index
}
database ozhegov
{
data /usr/share/dictd/ozhegov.dict.dz
index /usr/share/dictd/ozhegov.index
}
database slovnyk_ru-en
{
data /usr/share/dictd/slovnyk_ru-en.dict.dz
index /usr/share/dictd/slovnyk_ru-en.index
}
database biology
{
data /usr/share/dictd/biology.dict.dz
index /usr/share/dictd/biology.index
}


Спасибо IamCrazy и urukhy.


Тэги: bash консоль словарь
+ 4 -
Похожие Поделиться

IamCrazy 26.11.2010 10:47 #
может, стоит уже показать конфиг/логи и пример запуска?
чтобы не гадать
ivan 26.11.2010 11:42 #
хорошо, выложу завтра утром
urykhy 26.11.2010 10:47 #
можно попробовать 'dictd -d nofork -d init' и посмотреть что он делает.
ivan 26.11.2010 11:43 #
ок, попробую. О результате отпишусь
ivan 26.11.2010 21:17 #
$ dictd -d nofork -d init
вот, что он делает

:I: 2268 starting dictd 1.11.2/rf on Linux 2.6.32-22-generic Fri Nov 26 23:15:56 2010
:I: Initializing 'mueller7accent'
:I: Opening indices
:I: "/usr/share/dictd/mueller7accent.index": flag_allchars=1
:I: "/usr/share/dictd/mueller7accent.index": flag_casesensitive=0
:I: "/usr/share/dictd/mueller7accent.index": flag_utf8=1
:I: "/usr/share/dictd/mueller7accent.index": flag_8bit=0
:I: .index
:I: Opening data
:I: alphabet: с,аkiыщиsqроyhшцеpnюнxveх.вmэкubтj3зr _пzgчждoямw'fdфг-бlьлйtcaу
:I: 'mueller7accent' initialized
:I: Initializing 'sdict_ru-en'
:I: Opening indices
:I: "/usr/share/dictd/sdict_ru-en.index": flag_allchars=0
:I: "/usr/share/dictd/sdict_ru-en.index": flag_casesensitive=0
:I: "/usr/share/dictd/sdict_ru-en.index": flag_utf8=1
:I: "/usr/share/dictd/sdict_ru-en.index": flag_8bit=0
:I: .index
:I: Opening data
:I: alphabet: саkiыщ4и2sqёроyhшц1еpnю9н7xveхвmэ6кubтjъ3зr пzgчж0дoя8мwfdфгбlьл5йtcaу
:I: 'sdict_ru-en' initialized
:I: Initializing 'ozhegov'
:I: Opening indices
:I: "/usr/share/dictd/ozhegov.index": flag_allchars=0
:I: "/usr/share/dictd/ozhegov.index": flag_casesensitive=0
:I: "/usr/share/dictd/ozhegov.index": flag_utf8=1
:I: "/usr/share/dictd/ozhegov.index": flag_8bit=0
:I: .index
:I: Opening data
:I: alphabet: ыткбулвгьэiмфнхaдbеюcжяоцчпшз1eирvащ2oъйс
:I: 'ozhegov' initialized
:I: Initializing 'slovnyk_ru-en'
:I: Opening indices
:I: "/usr/share/dictd/slovnyk_ru-en.index": flag_allchars=0
:I: "/usr/share/dictd/slovnyk_ru-en.index": flag_casesensitive=0
:I: "/usr/share/dictd/slovnyk_ru-en.index": flag_utf8=1
:I: "/usr/share/dictd/slovnyk_ru-en.index": flag_8bit=0
:I: .index
:I: Opening data
:I: alphabet: ыктбулвгьэмфнхдеюжяоцчпшзирёащъсй
:I: 'slovnyk_ru-en' initialized
:I: Initializing 'biology'
:I: Opening indices
:I: "/usr/share/dictd/biology.index": flag_allchars=0
:I: "/usr/share/dictd/biology.index": flag_casesensitive=0
:I: "/usr/share/dictd/biology.index": flag_utf8=1
:I: "/usr/share/dictd/biology.index": flag_8bit=0
:I: .index
:I: Opening data
:I: alphabet: саkiыщ4и2sроyшц1еnю9н7veхвэ6кbтъ3зr пgчж0дoя8мwfdфгбlьл5йtcaу
:I: 'biology' initialized
:I: mueller7acce 46204 796607 3072396 9303579
:I: sdict_ru-en 378937 15894359 8792607 31398804
:I: ozhegov 61463 1554496 2521863 9355351
:I: slovnyk_ru-e 157459 4058446 951806 4989314
:I: biology 3760 157709 85354 274351
dictd (net_open_tcp): Can't bind 2628/tcp to port 2628
Can't bind 2628/tcp to port 2628
net_open_tcp: Address already in use
net_open_tcp: Address already in use

urykhy 26.11.2010 21:40 #
ну собственно -
dictd (net_open_tcp): Can't bind 2628/tcp to port 2628
Can't bind 2628/tcp to port 2628
net_open_tcp: Address already in use
- это ответ.
возможно другой экземпляр dictd запущен.
как вариант - /etc/init.d/dictd restart - может быть всё взлетит.
lampslave 26.11.2010 12:25 #
А как Вам вот это: http://habrahabr.ru/blogs/nix/69041/ ?
ivan 26.11.2010 12:44 #
Это и есть "план Б" (см.последнюю строчку поста), но хочу всё же достичь цели, действуя по "плану А" (dict).
lampslave 26.11.2010 13:32 #
Упс... Опять я до конца не дочитал, извиняюсь :(
ivan 26.11.2010 14:53 #
ничего, бывает
PaulRed 26.11.2010 14:22 #
Лично я в повседневной жизни использую Goldendict.
Кстати не подскажете, где можно скачать словари lingvo, передаланые для stardict?
ivan 26.11.2010 14:54 #
Не обращал внимания. Может тут или тут что-то прояснится?
ivan 26.11.2010 14:57 #
вот ещё ссылка на торренты (искать внизу страницы "лингво")
PaulRed 26.11.2010 16:15 #
Большое спасибо. Правда, не знаю согласуется ли это с правилами ресурса:-)
ivan 26.11.2010 21:14 #
эээ... ммм... А мы тут плюшками балуемся ну, я дал ссылку на FAQ по Ubuntu на одном из сайтов, посвящённых этому дистрибутиву