web-dev-qa-db-fra.com

Pourquoi y a-t-il différentes versions d'une page de manuel dans le référentiel de pages de manuel d'Ubuntu?

Pourquoi y a-t-il deux versions différentes ou plus d'une page de manuel dans http://manpages.ubuntu.com

Par exemple, si vous consultez la page de manuel at , vous pouvez en trouver deux, le premier fourni par le package manpages-posix[ref]. Et un autre qui est fourni par le paquet at lui-même [ref].
Il en va de même pour les autres packages tels que ls.1 et ls.1posix et ls.1plan9 .

Ce que j'ai compris d'une recherche rapide, c'est que posix signifie qu'il s'agit d'un standard spécifié par IEEE pour maintenir la compatibilité entre différents systèmes d'exploitation. [ref].

Alors, Ubuntu a-t-il sa propre implémentation d'un programme?

6
Dan

POSIX stipule qu'un certain nombre de commandes sont disponibles (voir le volume Shell & Utilities) et qu'elles fonctionnent d'une certaine manière. Voici ces commandes:

adminaliasarasaatawkbasenamebatchbcbgbreakc99calcatcdcflowchgrpchmodchowncksumcmpcoloncommcommandcompresscontinuecpcrontabcsplitctagscutcxrefdatedddeltadfdiffdirnamedotduechoedenvevalexexecexitexpandexportexprfalsefcfgfilefindfoldfort77fusergencatgetgetconfgetoptsgrephashheadiconvidipcrmipcsjobsjoinkillLexlinklnlocalelocaledefloggerlognamelplsm4mailxmakemanmesgmkdirmkfifomoremvnewgrpNicenlnmNohupodpastepatchpathchkpaxprprintfprspspwdqalterqdelqholdqmoveqmsgqrerunqrlsqselectqsigqstatqsubreadreadonlyrenicereturnrmrmdelrmdirsactsccssedsetshshiftsleepsortsplitstringsstripsttytabstailtalkteetesttimetimestouchtputtrtraptruetsortttytypeulimitumaskunaliasunameuncompressunexpandungetuniqunlinkunsetuucpuudecodeuuencodeuustatuuxvalviwaitwcwhatwhowritexargsyacczcat

Les coreutils GNU (livrées par les distributions GNU/Linux) contiennent toutes ces commandes, mais elles se sont progressivement éloignées de la base POSIX standard. Certains offrent de meilleures fonctionnalités. Certains fonctionnent de manière légèrement différente. Ces versions de coretils correspondent aux pages standard man.

Mais il est toujours souhaitable d'écrire des scripts qui fonctionnent sur de nombreuses plateformes. Par exemple, si vous tentiez d'utiliser la fonctionnalité étendue Coreutil de grep sur OSX, vous rencontriez des erreurs de syntaxe. Et c’est pourquoi il est souhaitable de connaître le fonctionnement de la version POSIX. Installez manpages-posix et vous saurez tout.

Il est également essentiel de connaître ces informations si vous avez l'intention d'améliorer GNU coreutils.

Plan9 est encore différent. Il n'a jamais été conçu pour être compatible POSIX. Il s’efforce d’obtenir une certaine compatibilité POSIX via une couche d’émulation et les pages de manuel correspondantes figurent à nouveau dans la documentation pour vous indiquer ce que vous pouvez utiliser.

10
Oli

Plus d'utilisations des pages de manuel POSIX

Outre ce que Oli a dit à propos de l'écriture de scripts portables (et piratage sur coreutils ), il existe deux autres situations où les pages de manuel POSIX peuvent être utiles:

1. Vous avez configuré (davantage) un comportement conforme à POSIX.

Si vous définissez la variable d'environnement _POSIXLY_CORRECT_ (sur quoi que ce soit, elle peut même être vide), de nombreux utilitaires GNU et certains autres programmes se comporteront de la manière spécifiée par POSIX, même si les développeurs ne voyaient aucune option. raison, les utilisateurs voudront probablement ce comportement.

Cela ne fait pas que votre système se comporte comme un système d'exploitation véritablement compatible POSIX. Le noyau Linux, GNU libc, et de nombreux outils utilisateur sont tous délibérément conçus pour être compatibles POSIX uniquement lorsque cela est plus utile que nuisible . C'est l'une des raisons pour lesquelles les systèmes GNU/Linux comme Ubuntu ne sont généralement pas considérés comme des systèmes Unix.

Le comportement de ls est affecté par beaucoup de choses , mais est pas affecté par si oui ou non _POSIXLY_CORRECT_ est défini. (Vous pouvez le vérifier en vérifiant le code source, par exemple 13.04: ls-ls.c , ls.h et ls.c ne fait aucune référence à cette variable d’environnement.)

Mais d'autres utilitaires sont affectés. Par exemple, l'utilitaire df imprime les informations d'utilisation du disque pour tous les périphériques montés. Normalement, la df d'Ubuntu (fournie par GNU coreutils) le montre en blocs de 1 kilo-octets. Avec _POSIXLY_CORRECT_ défini, il l’affiche en blocs de 512 B (c’est-à-dire un demi-kilo-octet). Ce comportement est requis par le standard POSIX, mais probablement pas utile pour la plupart des utilisateurs , ce n'est donc pas le comportement par défaut.

_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. Il n'y a pas de page de manuel "régulière" pour la commande/le sujet qui vous intéresse.

Parfois, la page de manuel POSIX est la seule disponible. Par exemple, la commande cd est un construit dans le shell uniquement. Il est fourni par différents shells et se comporte un peu différemment d'un shell à l'autre (en ce sens que différents shells font parfois cd accepter différents options de ligne de commande ).

Le shell interactif par défaut dans Ubuntu est bash et vous pouvez obtenir des informations sur cd dans man bash . Mais si vous voulez une page de manuel uniquement pour cd, eh bien, il n'y a pas d'exécutable cd (vous ne pouvez pas utiliser une seule commande utilisable globalement, cd indépendante du shell).

Mais la commande cd est une partie obligatoire du standard POSIX - les shells doivent le mettre en œuvre et le standard POSIX "sait" ce qu'il nécessite. Donc ne page de manuel POSIX pour cd est possible et existe.

Recherche de cd sur pages de manuel.ubuntu.comaffiche la page de manuel POSIX et deux autres . C'est un autre type d'exemple de plusieurs pages de manuel portant le même nom, soit dit en passant. Quels sont les autres? n est la commande cd dans le langage Tcl. L'autre est un pilote de CD-ROM sous le système d'exploitation FreeBSD. Les pages de manuel de FreeBSD sont parfois utiles pour les utilisateurs d’Ubuntu. Il est donc possible d’en installer toute une collection, y compris man 4 cd (aucune des pages de manuel de FreeBSD ne devrait être utile aux utilisateurs d’Ubuntu. pas aussi en utilisant FreeBSD).

Pourquoi Plan 9?

Vous vous demandez peut-être pourquoi il existe Plan 9 pages de manuel dans Ubuntu. Après tout, contrairement à Ubuntu (et à beaucoup d’OS tels que FreeBSD), Plan 9 n’est même pas un style nix - en fonctionnement système, mais comme Oli dit il y a quelques similitudes.

La raison en est que les outils de l’utilisateur Plan 9 (l’ensemble de base d’outils correspondant très approximativement à coreutils) ont été portés sur des systèmes de type Unix, afin qu’ils puissent être exécutés sur des systèmes d’exploitation tels que Ubuntu. Elles et leurs pages de manuel sont fournies par le package 9base .

Certains des outils Plan 9 disponibles pour Ubuntu ont le même nom que les outils Ubuntu et remplissent les mêmes fonctions ou des fonctions similaires.

L'une des raisons pour lesquelles les outils Plan 9 sont installés sur Ubuntu est que certains d'entre eux ne correspondent pas directement à un outil Ubuntu (ils peuvent néanmoins nécessiter les outils nécessaires pour l'interopérabilité).

Une autre raison est de prendre en charge les logiciels qui dépendent des outils de Plan 9. Par exemple, le gestionnaire de fenêtres wmii était auparavant empaqueté pour Ubuntu (et disponible dans les sources logicielles officielles Ubuntu); ce wmii2 paquet dépendait de _9base_.

3
Eliah Kagan