Почему в справочном хранилище Ubuntu есть разные версии справочной страницы?

Почему есть две или более разных версий man-страницы в http://manpages.ubuntu.com

Например, если посмотреть на man-страницу at , вы можете найти два, один из которых предоставляется пакетом manpages-posix [ref] . И еще один, который предоставляется самим пакетом at [ref] .
То же самое относится и к другим пакетам, таким как ls.1 и ls.1posix и ls.1plan9 .

Из быстрого поиска я понял, что posix означает, что это стандарт, определенный IEEE для поддержания совместимости между различными ОС [ref] .

Так есть ли в Ubuntu собственная реализация программы?

6
задан 13 April 2017 в 15:25

2 ответа

POSIX предусматривает, что много команд доступны (см. объем Shell & Utilities), и что они работают определенным способом. Вот те команды:

admin alias ar asa at awk basename batch bc bg break c99 cal cat cd cflow chgrp chmod chown cksum cmp colon comm command compress continue cp crontab csplit ctags cut cxref date dd delta df diff dirname dot du echo ed env eval ex exec exit expand export expr false fc fg file find fold fort77 fuser gencat get getconf getopts grep hash head iconv id ipcrm ipcs jobs join kill lex link ln locale localedef logger logname lp ls m4 mailx make man mesg mkdir mkfifo more mv newgrp nice nl nm nohup od paste patch pathchk pax pr printf prs ps pwd qalter qdel qhold qmove qmsg qrerun qrls qselect qsig qstat qsub read readonly renice return rm rmdel rmdir sact sccs sed set sh shift sleep sort split strings strip stty tabs tail talk tee test time times touch tput tr trap true tsort tty type ulimit umask unalias uname uncompress unexpand unget uniq unlink unset uucp uudecode uuencode uustat uux val vi wait wc what who write xargs yacc zcat

GNU coreutils (что поставка GNU/дистрибутивов Linux) содержит все эти команды, но они разрабатывали далеко от стандартной основы POSIX со временем. Некоторое предложение лучшие функции. Некоторая работа немного отличающимися способами. Эти coretils версии что стандарт man страницы обслуживают.

Но все еще желательно записать сценарии, которые работают над многими платформами. Например, если Вы пытались использовать расширенную coreutil функциональность grep на OSX Вы столкнулись с синтаксическими ошибками. И это - то, почему знание, как версия POSIX работает, желательно. Установка manpages-posix и Вы знаете все.

Также важно знать этот материал, если Вы - планирование улучшения GNU coreutils.

Plan9 отличается все снова и снова. Это никогда не разрабатывалось, чтобы быть совместимым POSIX. Это борется за сумму совместимости POSIX через слой эмуляции, и страницы справочника для него снова, там как документация для сообщения то, что можно использовать.

10
ответ дан 13 April 2017 в 15:25

Больше использования страниц POSIX

Помимо того, что сказал Оли о написании переносимых скриптов (и взлом на coreutils ), существуют две другие ситуации, когда руководство по POSIX страницы могут пригодиться:

1. Вы настроили (более) POSIX-совместимое поведение.

Если вы установите переменную среды POSIXLY_CORRECT (на что угодно, она может даже быть пустой), многие утилиты GNU и некоторые другие программы будут вести себя так, как указано в POSIX, даже если разработчики не видели причин, по которым пользователи, скорее всего, захотят это поведение.

Это не заставляет вашу систему вести себя как настоящая POSIX-совместимая ОС. Ядро Linux, GNU libc и многие пользовательские инструменты специально разработаны для обеспечения совместимости с POSIX , только если это более полезно, чем вредно . Это одна из причин, по которой системы GNU / Linux, такие как Ubuntu, не считаются системами Unix.

На поведение ls большое влияние оказывает , но не зависит от того, установлен ли POSIXLY_CORRECT. (Вы можете убедиться в этом, проверив исходный код, скажем, в 13.04: ls-ls.c , ls.h и ls.c ) не ссылаются на эта переменная среды.)

Но некоторые другие утилиты затронуты. Например, утилита df печатает информацию об использовании диска для всех подключенных устройств. Обычно Ubuntu df (разработчик GNU coreutils) показывает это в блоках по 1 килобайт. Если установлено значение POSIXLY_CORRECT, оно отображается в 512 блоках (то есть в полкилобайтах). Такое поведение требуется стандартом POSIX, но , вероятно, бесполезно для большинства пользователей , поэтому оно не используется по умолчанию.

ek@Kip:~$ df
Filesystem      1K-blocks       Used Available Use% Mounted on
/dev/sda8        15481840   11816640   2878768  81% /
udev              1020748         12   1020736   1% /dev
tmpfs              412840       5156    407684   2% /run
none                 5120          0      5120   0% /run/lock
none              1032100        240   1031860   1% /run/shm
none               102400         32    102368   1% /run/user
/dev/sda6          245679     159043     73529  69% /boot
/dev/sda9        31458256   10024972  19835284  34% /home
/dev/sdd1      1922859824 1687175656 138008496  93% /media/ek/Noether
/dev/sdc1      1922859824 1700447368 124736784  94% /media/ek/Baker
/dev/sdb1      1922859824 1782944724  42239428  98% /media/ek/Spinoza

ek@Kip:~$ POSIXLY_CORRECT= df
Filesystem     512B-blocks       Used Available Use% Mounted on
/dev/sda8         30963680   23573440   5817376  81% /
udev               2041496         24   2041472   1% /dev
tmpfs               825680      10312    815368   2% /run
none                 10240          0     10240   0% /run/lock
none               2064200        480   2063720   1% /run/shm
none                204800         64    204736   1% /run/user
/dev/sda6           491358     318086    147058  69% /boot
/dev/sda9         62916512   20049944  39670568  34% /home
/dev/sdd1       3845719648 3374351312 276016992  93% /media/ek/Noether
/dev/sdc1       3845719648 3400894736 249473568  94% /media/ek/Baker
/dev/sdb1       3845719648 3565889448  84478856  98% /media/ek/Spinoza

2. Нет «обычной» man-страницы для интересующей вас команды / темы.

Иногда доступна только справочная страница POSIX. Например, команда cd - это только оболочка , встроенная в . Он предоставляется разными оболочками и ведет себя немного по-разному от оболочки к оболочке (при этом разные оболочки иногда заставляют cd принимать разные опции командной строки ).

Интерактивная оболочка по умолчанию в Ubuntu - bash, и вы можете получить информацию о cd в man bash . Но если вам нужна страница справочника только для cd, ну, нет исполняемого файла cd (нет единой, пригодной для использования в глобальном масштабе, независимой от оболочки команды cd).

Но команда cd является обязательной частью стандарта POSIX - оболочки должны ее реализовывать, и стандарт POSIX «знает» о том, что ей требуется. Таким образом, возможна man-страница POSIX для cd, и она существует.

Поиск по cd на manpages.ubuntu.com показывает страницу руководства POSIX и еще две . Кстати, это еще один пример нескольких страниц руководства с одним и тем же именем. Какие другие? Одной из является команда cd на языке Tcl . Другой - это драйвер CD-ROM в операционной системе FreeBSD. Страницы руководств по FreeBSD иногда полезны для пользователей Ubuntu, поэтому можно установить целую их коллекцию, включая man 4 cd (не одна из страниц справочника FreeBSD, скорее всего, будет полезна для пользователей Ubuntu, не использующих также FreeBSD). [тысяча сто шестьдесят шесть]

Почему План 9?

Вы можете удивиться, почему в Ubuntu вообще есть страницы руководства по Плану 9 . В конце концов, в отличие от Ubuntu (и многих других ОС, таких как FreeBSD), Plan 9 даже не является операционной системой в стиле Unix - , хотя, как говорит Оли, есть некоторые сходства.

Причина этого заключается в том, что пользовательские инструменты Plan 9 (базовый набор инструментов, очень приблизительно соответствующий coreutils) были портированы на Unix-подобные системы, поэтому их можно запускать в таких ОС, как Ubuntu. Они и их справочные страницы предоставляются пакетом 9base .

Некоторые (не все) инструменты Plan 9, доступные для Ubuntu, имеют то же имя, что и инструменты Ubuntu, и выполняют те же или похожие функции.

Одна из причин наличия инструментов Plan 9 в Ubuntu заключается в том, что некоторые из них не соответствуют напрямую ни одному из инструментов Ubuntu (но могут все еще нуждаться в инструментах, которые это делают, для совместимости).

Другая причина - поддержка программного обеспечения, которое зависит от инструментов Plan 9. Например, менеджер окон wmii раньше был упакован для Ubuntu (и доступен в официальных источниках программного обеспечения Ubuntu); этот пакет wmii2 зависел от 9base.

0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

Похожие вопросы: