web-dev-qa-db-fra.com

Les programmes courants (par exemple: "ls", "cat") sous Linux et BSD proviennent-ils du même code source?

Linux et BSD ont des programmes communs comme ls et cat et echo et kill.

Proviennent-ils du même code source, ou les deux et Linux et BSD possèdent-ils leur propre code source unique pour ces programmes?

26
user341875

Linux est un noyau. Il n'a pas le code des programmes d'application en premier lieu.

Les systèmes d'exploitation basés sur Linux n'utilisent même pas nécessairement le même code source les uns que les autres, sans parler du même code comme sur les BSD. Il existe de nombreuses implémentations de plusieurs programmes assez basiques.

Ceux-ci incluent, mais ne sont pas limités à:

Les BSD sont des systèmes d'exploitation. Ils do contiennent le code de ces programmes. Cependant, il n'y a pas de système d'exploitation BSD unique et le code de ces programmes varie parfois entre NetBSD, FreeBSD, OpenBSD et DragonFly BSD. De plus, il est définitivement différent du code utilisé pour les différents systèmes d'exploitation basés sur Linux.

De manière connue, Apple/NeXT a utilisé les logiciels d'applications BSD dans MacOS/NeXTSTEP mais a amélioré plusieurs programmes pour prendre en charge les ACL de manières différentes de celles des (autres) BSD. L'un définit les contrôles d'accès à l'aide de la commande chmod, par exemple. Les versions Darwin de ces commandes sont donc encore différentes.

Il y a trois rebondissements supplémentaires.

Les programmes comme kill et echo sont généralement des commandes internes de Shell. Ainsi, le code de ces commandes varie en fonction de ce que vous Shell utilisent, plutôt que quel système d'exploitation.

Ensuite, il y a BusyBox et ToyBox, disponibles à la fois pour les systèmes d'exploitation basés sur Linux et les BSD et même utilisés comme implémentations principales de ces commandes sur quelques-unes des premières, qui ont leurs propres implémentations de beaucoup = commandes.

Ensuite, il y a OpenSolaris, d'où viennent les goûts d'Illumos et de Schillix, avec les implémentations Solaris de tous ces outils, ce qui est encore différent.

Il y a des histoires entières ici, englobant la séparation d'origine entre BSD et AT&T Unix, à travers les efforts pour cloner "PD" de nombreux programmes Unix à la fin des années 1980 et 1990, environ trois décennies de remaniement après cela, toute la version open source de le code pour Solaris et les réimplémentations d'OpenBSD de plusieurs choses. Même les histoires d'outils que l'on pourrait induire en erreur ont une implémentation telle que cron (que beaucoup de gens pensent à tort est l'outil Unix d'origine, ou pensent à tort qu'il s'agit d'au moins une seule saveur écrite comme "PD cron "par Paul Vixie en 1987, ou je ne me rends pas compte que les remplacements de workalike écrits par d'autres personnes depuis) ​​ne sont pas anodins.

41
JdeBP

Ces programmes sous Linux et BSD sont-ils les mêmes?

La réponse courte est: Pas nécessairement.

Le code source des programmes courants tels que ls, cat, echo, kill, etc. dépendent de ce que serland ils viens de. En d'autres termes, l'espace utilisateur utilisé par votre système. L'espace utilisateur le plus couramment utilisé avec le noyau Linux est GNU - d'où le nom GNU/Linux. Cependant, d'autres espaces utilisateur ont été intégrés au noyau Linux.

Les BSD ont généralement leur propre espace utilisateur qui est développé séparément des autres comme GNU. Même les BSD eux-mêmes ont des bases de code différentes. Par exemple, FreeBSD et OpenBSD ont tous deux un "espace utilisateur BSD", mais leur base de code est différente. Si vous regardez leurs pages de manuel (ps par exemple), ils ont différents arguments qui peuvent être utilisés.

Une raison POSIX a été développée pour résoudre le problème des bases de code multiples. Si les utilitaires communs fournis avec un espace utilisateur sont conformes à POSIX, vous pouvez vous assurer qu'ils fonctionneront (presque) de la même manière, qu'ils proviennent de GNU, FreeBSD, OpenBSD, AIX ou d'autres systèmes basés sur UNIX.

Comme vous le savez probablement, les espaces utilisateurs répertoriés ci-dessus (à l'exception d'AIX) sont open source. N'hésitez pas à fouiller dans leurs référentiels de code et vous verrez rapidement qu'ils ne sont pas exactement les mêmes.

Remarque: Même si GNU/Linux est le plus populaire, il y a eu des tentatives d'utilisation d'un GNU userland avec les noyaux FreeBSD/NetBSD dans le passé. Vous pouvez en lire plus sur wikipedia ici .

13
Peschke
5
Fedor Dikarev

Tout d'abord, je comprends Linux comme signifiant GNU/Linux, qui est le système d'exploitation, Linux n'est que le noyau.

Maintenant, le code source n'est PAS le même. L'équipe GNU a créé les utilitaires, inspirés des outils UNIX qui existaient, et en a étendu certains.

GNU kill et echo sont des shell intégrés dans Bash, le Shell par défaut sur la plupart des systèmes GNU, donc ils viennent avec votre Shell, comme dans bash.

ls et cat sont des programmes différents et distincts, inspirés respectivement par UNIX ls et cat.

Il y a un historique du graphe UNIX qui explique d'où viennent les choses, comme vous pouvez le voir, GNU/Linux est apparu sans ascendance directe.

enter image description here

Parmi les versions UNIX, qui se rapportent au système de partage de temps UNIX, ces commandes proviennent toutes de cela, cependant, elles auraient pu être réécrites plusieurs fois.

Vous pouvez comparer FreeBSD cat code source avec GNU cat code source.

Pourquoi ne fais-je pas référence à GNU/Linux de bout en bout? Les eaux sont troubles, vous pouvez installer les outils GNU sur les BSD ainsi que sur d'autres systèmes UNIX, eh bien, vous pouvez même les installer sur Windows.

Debian, de la gloire Debian GNU/Linux, sur laquelle Ubuntu et Mint sont basés (seulement deux exemples), offre une distribution GNU avec un noyau FreeBSD: GNU/kFreeBSD

Oui, le graphique est obsolète ...

3
thecarpy

En plus des bonnes réponses ci-dessus, vous constaterez que le Shell par défaut sur (presque?) Chaque distribution Linux est bash, tandis que le Shell par défaut sur au moins OpenBSD et FreeBSD n'est pas bash. Il s'agit probablement de csh ou ksh, mais cela fait quelques années que je n'ai utilisé aucune variante BSD, donc je ne suis pas absolument sûr. Quoi qu'il en soit, il n'a jamais eu la fonctionnalité de bash, même la façon dont la commande précédente peut être répétée était d'une confusion confuse. La différence dans les shells peut changer les commandes les plus simples qui sont intégrées à Shell et celles qui sont des programmes autonomes.

Avec plusieurs distributions fournissant maintenant le GNU userland avec un noyau xBSD, et potentiellement vice-versa, il n'y a pas de réponse absolument définitive à la question. La seule façon absolument infaillible de savoir ce que vous avez sur votre système doit utiliser votre gestionnaire de paquets pour télécharger la source et l'examiner, ou l'examiner en ligne si votre distribution a une source consultable, bien que vérifier la licence qui s'applique donnerait une assez bonne indication.

1
tiger99