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?
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:
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
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.
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:
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
_
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).
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
_.