Por que existem versões diferentes de uma página man no Repositório de Manuais do Ubuntu?

6

Por que existem duas ou mais versões diferentes de uma página de manual no link

Por exemplo, olhando para a manpage de at , você pode encontrar dois, um que é fornecido pelo manpages-posix package [ref] . E outra que é fornecida pelo pacote at [ref] .
O mesmo é válido para outros pacotes, bem como ls.1 e ls.1posix e ls.1plan9 .

O que eu entendi de uma pesquisa rápida é que posix significa que é um padrão especificado pelo IEEE para manter a compatibilidade entre diferentes SO [ref] .

O Ubuntu também tem sua própria implementação de um programa?

    
por Dan 06.09.2013 / 10:56

2 respostas

10

POSIX estipula que um número de comandos está disponível (veja o volume Shell & amp; Utilities) e que eles trabalham em um certo caminho. Aqui estão esses comandos:

  

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 % co_d % 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

GNU coreutils (distribuições GNU / Linux) contém todos esses comandos, mas eles se desenvolveram longe da base POSIX padrão ao longo do tempo. Alguns oferecem melhores recursos. Alguns trabalham de maneiras ligeiramente diferentes. Essas versões de coretils são o que o padrão zcat páginas fornece.

Mas ainda é desejável escrever scripts que funcionem em muitas plataformas. Por exemplo, se você tentou usar a funcionalidade estendida do coreutil de man no OSX, ocorreria erros de sintaxe. E é por isso que saber como a versão POSIX funciona é desejável. Instale grep e você sabe de tudo.

Também é essencial conhecer essas coisas se você estiver planejando melhorar os Núcleo Central do GNU.

O Plan9 é diferente novamente. Nunca foi projetado para ser compatível com POSIX. Ele busca uma quantidade de compatibilidade POSIX por meio de uma camada de emulação e as páginas do manual para ele estão, novamente, como documentação para que você saiba o que pode usar.

    
por Oli 06.09.2013 / 11:11
3

Mais usos de Man pages do POSIX

Além do que Oli disse sobre como escrever scripts portáteis (e hacking em coreutils ), existem duas outras situações em que as páginas de manual do POSIX podem ser úteis:

1. Você configurou (mais) um comportamento compatível com POSIX.

Se você definir a variável de ambiente POSIXLY_CORRECT (para qualquer coisa, ela pode ficar em branco), muitos utilitários GNU e alguns outros programas se comportarão da maneira especificada pelo POSIX, mesmo quando os desenvolvedores não vêem motivos que os usuários provavelmente querem esse comportamento.

Isso não faz o seu sistema se comportar como um sistema operacional verdadeiramente compatível com POSIX. O kernel do Linux, o GNU libc e muitas ferramentas de usuário são todas deliberadamente projetadas para serem compatíveis com POSIX somente quando isso é mais útil do que prejudicial . Esta é uma das razões pelas quais os sistemas GNU / Linux, como o Ubuntu, são amplamente considerados como sistemas Unix.

O comportamento de ls é afetado por muitas coisas a>, mas não é afetado pelo fato de POSIXLY_CORRECT estar ou não definido. (Você pode verificar isso verificando o código fonte em, digamos, 13.04: ls-ls.c , ls.h e ls.c não faz referência a essa variável de ambiente.

Mas alguns outros utilitários são afetados. Por exemplo, o utilitário df imprime informações de uso de disco para todos os dispositivos montados. Normalmente, o df do Ubuntu (fornecido pelo GNU coreutils) mostra isso em blocos de 1 kilobyte. Com POSIXLY_CORRECT set, mostra em blocos 512B (isto é, meio kilobyte). Esse comportamento é exigido pelo padrão POSIX, mas provavelmente não é útil para a maioria dos usuários , portanto não é o padrão.

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. Não há uma página de manual "regular" para o comando / tópico em que você está interessado.

Às vezes, a página de manual do POSIX é a única disponível. Por exemplo, o comando cd é um shell embutido apenas. Ele é fornecido por shells diferentes e se comporta de maneira um pouco diferente de shell para shell (em que shells diferentes às vezes fazem cd aceitar diferentes opções de linha de comando ).

O shell interativo padrão no Ubuntu é bash e você pode obter informações sobre cd em man bash . Mas se você quiser uma página de manual apenas para cd , bem, não há nenhum executável cd (nenhum comando global% utilizável, independente de shell cd ).

Mas o comando cd é uma parte necessária do padrão POSIX - os shells devem implementá-lo, e o padrão POSIX "sabe" sobre o que é necessário. Portanto, uma uma página de manual POSIX para cd é possível e existe.

Procurando por cd em manpages.ubuntu.com mostra a página de manual do POSIX e outras duas . Este é outro tipo de exemplo de várias páginas de manual com o mesmo nome, a propósito. Quais são os outros? Um é o comando cd na linguagem Tcl . O outro é um driver de CD-ROM no sistema operacional FreeBSD. As páginas de manual do FreeBSD às vezes são úteis para usuários do Ubuntu, então uma coleção inteira delas pode ser instalada, incluindo man 4 cd (não é uma das páginas de manual do FreeBSD que provavelmente será útil para usuários do Ubuntu que também não usam o FreeBSD).

Por que planejar 9?

Você pode estar se perguntando por que existem Plan 9 páginas manuais no Ubuntu. Afinal, ao contrário do Ubuntu (e de muitos outros sistemas operacionais como o FreeBSD), o Plan 9 não é nem um estilo Unix- sistema operacional, embora, como Oli diz, há algumas semelhanças.

A razão para isto é que as ferramentas userland do Plan 9 (o conjunto básico de ferramentas correspondendo muito a coreutils) foram portadas para sistemas Unix-like, para que possam ser executadas em sistemas operacionais como como o Ubuntu. Eles e suas páginas de manual são fornecidos pelo pacote 9base .

Algumas (nem todas) das ferramentas do Plan 9 disponíveis para o Ubuntu têm o mesmo nome que as ferramentas do Ubuntu, e executam funções iguais ou similares.

Uma das razões para ter as ferramentas do Plan 9 no Ubuntu é que algumas delas não correspondem diretamente a nenhuma ferramenta do Ubuntu (mas ainda podem precisar das ferramentas que o fazem, para interoperabilidade).

Outro motivo é suportar software que depende das ferramentas do Plan 9. Por exemplo, o gerenciador de janelas wmii costumava ser empacotado para o Ubuntu (e disponível em fontes de software oficiais do Ubuntu); Este pacote wmii2 dependia de 9base .

    
por Eliah Kagan 06.09.2013 / 22:11

Tags