справочные системы Linux

Программные средства разработки

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

справочные системы Linux

Непрочитанное сообщение Olej » 18 авг 2012, 16:18

Вопрос тех. документации Linux достаточно актуальный, на то есть разные причины:
1. хорошего уровня техническая документация отсутствует,
2. с одной стороны, это неизбежно из-за "колхозного" характера развития проектов GNU и Linux ...
3. а с другой стороны, потому, что ... если не "сокрытие", то уж "неразглашение" информации - это обязательная черта opensource как новой модели бизнеса, для тех брандов IT, которые поддерживают (финансово подогревают ;-) ) эту модель (IBM, Oracle, Google), см.: Бизнес-модели в IT производстве.

Но при отсутствии упорядоченной технической информации, в GNU/Linux есть множество источников разбросанной информации, откуда можно извлечь всё!
Если ... а). знать откуда извлекать ;-) и б). уметь оттуда извлекать.

Вся эта информация находится внутри самого проекта GNU/Linux в виде справочных систем.
Причём, не так важно, представлена эта справочная система в виде файлов в самой системе, или в виде URL на HTTP ресурс, где представлена та же информация.

У меня возникло намерение (и потребность) собрать в одно место перечисление справочных систем Linux ... потому, что об одних из них знают все - man-система, а о других просто забывают, или никогда и не слышали из ново-пришедших в мир Linux.

Кое-что о справочных системах я писал в проекте книги: Linux-инструменты для Windows-программистов, но на сегодня информации существенно больше, нужно бы дополнить ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: справочные системы Linux

Непрочитанное сообщение Olej » 18 авг 2012, 16:32

1. Система man.

Эту систему, как раз, знают все! :lol:
Система man - это не Linux-изобретение, она появилась чуть ли не с самого рождения UNIX, и присутствует в любой UNIX-like OS: *BSD, Solaris, MINIX, QNX ...

Вся справочная система man разбита на секции по принадлежности. Если не возникает неоднозначности (термин не встречается в нескольких секциях), номер секции можно не указывать, иначе номер секции указывается как параметр (номер секции может указываться всегда, это не будет ошибкой):

Код: Выделить всё

$ man 1 man
...       
The standard sections of the manual include: 
      1     User Commands 
      2     System Calls 
      3     C Library Functions 
      4     Devices and Special Files 
      5     File Formats and Conventions 
      6     Games et. Al. 
      7     Miscellanea 
      8     System Administration tools and Deamons 
Вот грубое разбиение всей справочной системы по секциям.

Результат вызова man с указанием секции и без указания может быть различным:

Код: Выделить всё

bash-4.2$ man syslog
...
- это будет вызов из секции 2 о системном вызове int syslog()

Код: Выделить всё

bash-4.2$ man 3 syslog
...
- а это буде вызов из секции 3 о библиотечном вызове void syslog()

Часто говоря о термине (команде, файле, ...) в скобках () указывают № секции man, где описывается этот термин:

Код: Выделить всё

logger(1), setlogmask(3), syslog.conf(5), syslogd(8)
То, какие страницы man будут присутствовать у вас в системе, в каком порядке они будут искаться, на каком языке представляться... - это всё настраиваемые вещи (можно настроить так, что при наличии обширных иерархий файлов man на любой запрос будет ответ: "отсутствует страница"). Есть несколько разных способов настройки путей поиска man. Один из них - переменная:

Код: Выделить всё

export MANPATH=/usr/share/man/ru:/usr/share/man:/home/olej/solarisstudio12.3/man
И это поместить в один из файлов: $HOME/.bash, /etc/rc.d/rc.local, /etc/profile, /etc/profile.d/*
В показанном примере:
- определено 3 фаловых иерархии поиска man;
- сначала поиск будет производится среди русскоязычных страниц man;
- только если предыдущий поиск неудачный, поиск продолжится среди оригинальных системных страниц man;
- ...

Интерактивные (через браузер) собрания man в сети (часто свежее файловых + с лучшей системой поиска):
- http://linux.die.net/man/

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: справочные системы Linux

Непрочитанное сообщение Olej » 18 авг 2012, 16:36

2. Справочная система info

Иерархическая древовидная (менюшная в текстовом режиме) система справки.

Код: Выделить всё

$ info info
-----Info: (*manpages*)ifconfig, строк: 169
--Top-------------------------------------------
Добро пожаловать в Info версии 4.8. ? -- справка, m выбирает пункт меню. 
File: info.info,  Node: Top,  Next: Getting Started,  Up: (dir)
Info: An Introduction
*********************
The GNU Project distributes most of its on-line manuals in the "Info
format", which you read using an "Info reader".  You are probably using
an Info reader to read this now.
...
Это система не дублирует man, в ней есть вещи, отсутствующие в man.

Кроме того, эта система иерархичная, древовидная, "менюшная", с последовательным уточнением (что иногда хорошо, а иногда и плохо ;-) ) - позволяющая дойти до тонких деталей.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: справочные системы Linux

Непрочитанное сообщение Olej » 18 авг 2012, 16:41

3. Подсказки apropos ("кстати")

Ищет все упоминания любого заказанного вами термина, где он упоминается во всей иерархии man:

Код: Выделить всё

bash-4.2$ apropos /proc
slabinfo (5)         - сводная таблица использования блоков кэша (slab) ядра
nfsiostat (8)        - Emulate iostat for NFS mount points using /proc/self/mountstats
proc_flush_task (9)  - Remove dcache entries for task from the /proc dcache.
proc_scsi_read (9)   - handle read from /proc by calling host's proc_info command
proc_scsi_write (9)  - handle writes to /proc/scsi/scsi
proc_scsi_write_proc (9) - Handle write to /proc by calling host's proc_info
scsi_exit_devinfo (9) - remove /proc/scsi/device_info & the scsi_dev_info_list
scsi_proc_host_add (9) - Add entry for this host to appropriate /proc dir
scsi_proc_host_rm (9) - remove this host's entry from /proc
scsi_proc_hostdir_add (9) - Create directory in /proc for a scsi host
scsi_proc_hostdir_rm (9) - remove directory in /proc for a scsi host
В скобках, как обычно, указывается секция man, где встречен ваш термин.
После этого просто набираете: man ...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: справочные системы Linux

Непрочитанное сообщение Olej » 18 авг 2012, 16:47

4. База данных терминов whatis

Достаточно похожая на apropos (но результаты разные) система поиска терминов.

Код: Выделить всё

$ whatis ifconfig
ifconfig             (8) - configure a network interface
Вот вам секция, а дальше - man ...

Базу данных поиска нужно предварительно сформировать!

Код: Выделить всё

# makewhatis
...
Это действие :
- делается с правами root;
- потребует заметно продолжительного времени (несколько минут, или десятков даже ... не думайте, что ваша программа зависла ;-) );
- делается всего один раз ... или освежается - когда у вас на диске накопится изрядное количество новых иерархий файлов man.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: справочные системы Linux

Непрочитанное сообщение Olej » 18 авг 2012, 18:25

5. Встроенная справка программ.

Хорошим стилем у программистов UNIX считается включение краткой (а иногда и не очень) в исполнимый код программ. Этой же практики придерживаются и разработчики используемых в Linux GNU утилит, и других программ...

Обычно это опции (ключи) --help, --version:

Код: Выделить всё

$ rlogin --help
usage: rlogin host [-option] [-option...] [-k realm ] [-t ttytype] [-l username]
       where option is e, 7, 8, noflow, n, a, x, f, F, c, 4, PO, or PN

Код: Выделить всё

$ gcc --version
gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
Copyright (C) 2006 Free Software Foundation, Inc.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: справочные системы Linux

Непрочитанное сообщение Olej » 18 авг 2012, 18:33

6. Поиск исполнимых программ и связанных с ними файлов.

Иногда нужно быстро восстановить месонахождение (путь) исполнимой программы, или таким образом определить установлена ли такая программа.
Для этого есть команда which:

Код: Выделить всё

bash-4.2$ which java
/opt/oracle/jdk1.7.0_05/bin/java
Команда ищет файл программы на путях, перечисленных в переменной $PATH.

Другая команда, whereis, пытается найти в файловой системе все исходные, бинарные файлы и man-секции, относящиеся к указанной программе; whereis не пользуется $PATH, она ищет файлы по своим критериям (имеет много модифицирующих опций). Сравните:

Код: Выделить всё

bash-4.2$ whereis java
java: /bin/java /usr/bin/java /etc/java /lib/java /usr/lib/java /usr/share/java /opt/oracle/jdk1.7.0_05/bin/java /opt/oracle/jdk1.7.0_05/jre/bin/java /usr/share/man/man1/java.1.gz
После такого поиска можно начинать пользоваться man.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: справочные системы Linux

Непрочитанное сообщение Olej » 18 авг 2012, 18:53

7. Справочник по коду ядра Linux.

Очень часто бывает нужен, иногда совсем коротко, для уточнения констант, вызовов API...
Можно, конечно (как иногда советуют):
- download с kernel.org архив исходных кодов ядра *.tar.bzi2 в /usr/src ...
- разархивировать там...
И при случае искать там поиском...
... до тех пор, пока не появится новая версия ядра, и начинаем делать всё по-новой...

Но умные люди создали интернет-справочники по коду ядра:
1. http://lxr.free-electrons.com/source/
2. http://lxr.linux.no/
3. http://www.mjmwired.net/kernel/Documentation - документация по ядру

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

Ответить

Вернуться в «Инструменты программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя