Bien que les deux sont conçus pour contenir des fichiers ne faisant pas partie du système d'exploitation, /opt
et /usr/local
ne sont pas destinés à contenir le même ensemble de fichiers.
/usr/local
est un emplacement pour installer les fichiers créés par l'administrateur, généralement à l'aide de la make
commande (par exemple, ./configure; make; make install
). L'idée est d'éviter les conflits avec des fichiers faisant partie du système d'exploitation, qui pourraient être écrasés ou écrasés par des fichiers locaux sinon (par exemple, /usr/bin/foo
fait partie du système d'exploitation tout en /usr/local/bin/foo
constituant une alternative locale).
Tous les fichiers sous /usr
peuvent être partagés entre les instances de système d'exploitation, bien que cela soit rarement fait avec Linux. Ceci est une partie où la FHS est légèrement contradictoire, comme /usr
défini en lecture seule, mais /usr/local/bin
doit être en lecture-écriture pour que l'installation locale du logiciel réussisse. Le standard de système de fichiers SVR4, qui était la principale source d’inspiration de FHS, recommande d’éviter /usr/local
et d’utiliser /opt/local
plutôt pour surmonter ce problème.
/usr/local
est un héritage de la BSD d'origine. À ce moment-là, le code source des /usr/bin
commandes du système d' exploitation se trouvait dans /usr/src/bin
et /usr/src/usr.bin
, tandis que la source des commandes développées localement se trouvait dans /usr/local/src
et leurs fichiers binaires dans /usr/local/bin
. Il n'y avait aucune notion d'emballage (en dehors des archives).
D'autre part, /opt
est un répertoire pour l'installation de packages non groupés (c'est-à-dire que les packages ne font pas partie de la distribution du système d'exploitation, mais fournis par une source indépendante), chacun dans son propre sous-répertoire. Ils constituent déjà des packages complets fournis par un distributeur de logiciels tiers indépendant. Contrairement aux /usr/local
choses, ces paquets respectent les conventions de répertoires (ou du moins ils le devraient). Par exemple, someapp
serait installé dans /opt/someapp
, avec l'une de ses commandes /opt/someapp/bin/foo
, son fichier de configuration /etc/opt/someapp/foo.conf
, ainsi que ses fichiers journaux /var/opt/someapp/logs/foo.access
.
/usr/local
s'agit d'une version locale du/usr
système de fichiers, alors qu'elle/opt
est réservée à divers éléments.