Où est le meilleur endroit pour trouver des sources d'outils de ligne de commande Linux standard? [fermé]

10

Into: J'aime apprendre en lisant des sources. Mais il est fatigant de les rechercher sur Internet, répartis sur de nombreux sites de projets différents. J'adorerais voir le référentiel central navigable avec les sources de nombreuses applications en un seul endroit.

  • Quand quelqu'un veut trouver de la documentation de certains outils Linux, le meilleur endroit est: man toolname.
  • Lorsque je souhaite parcourir les sources Linux "à la demande", je peux toujours accéder à: Référence croisée Linux .
  • Lorsque je veux trouver le personnel le plus courant, je peux trouver toutes les sources dans Coreutils .
  • Quand je veux vérifier comment construire quelque chose, je peux (par exemple) aller sur http://www.archlinux.org/packages/ , vérifier que c'est pkgbuild.

Existe-t-il un référentiel contenant les sources de la plupart des outils en un seul endroit? - tout comme la mandocumentation ou les sources du noyau de référence croisée Linux.

Je veux dire quelque chose pour "rapide" "à la demande" vérifier comment les choses sont implémentées. (Oui, je connais google -> mais je suis fatigué de la routine: 1. recherche sur le site du projet 2. navigation repo ou pire encore -> vérification de son repo 3. suppression une fois terminé)

REMARQUE:

Je l'ai souligné, je voudrais vérifier les outils: rapidement, rapidement, à la demande.

Cela signifie: je ne veux pas installer l'application entière avec ses sources juste pour jeter un œil à ses sources. (btw. ressource web est préférable, donc je pourrais vérifier les sources de nombreux ordinateurs - je n'ai pas d'administrateur sur chacun d'eux)

Grzegorz Wierzowiecki
la source
3
La plupart des distributions vous permettent d'installer des sources pour les packages à l'aide du gestionnaire de packages.
jippie
3
Pour Debian, vous pouvez simplement exécuter apt-get source $PACKAGE-NAMEaprès avoir ajouté le référentiel source
Ulrich Dangel
Les paquets répondent généralement sur d'autres bibliothèques pour compléter ses fonctions
daisy
Je ne souhaite pas installer chaque application que je souhaite vérifier.
Grzegorz Wierzowiecki
3
@GrzegorzWierzowiecki vous n'avez pas besoin d'installer une application pour consulter la source, au moins avec apt-get sourcevous pouvez exécuter cette commande en tant qu'utilisateur normal.
Ulrich Dangel

Réponses:

6

Permettez-moi de répondre à votre question par une réponse alternative. Je suppose que vous voulez lire le code des outils de ligne de commande Unix traditionnels, pas seulement la version GNU de ceux-ci. Lire le code d'outils similaires de différents projets est une bonne pratique pour apprendre différentes idées et implémentations.

GNU a une belle interface web pour le dépôt de coreutils: http://git.savannah.gnu.org/cgit/coreutils.git

La famille BSD possède des interfaces Web similaires pour les dépôts:

La base de code BSD est intéressante car utilise généralement moins de code pour les mêmes outils, c'est-à-dire: ne prend en charge que les options traditionnelles, pas d'options supplémentaires, sh est un vrai shell et pas seulement un lien vers d'autres gros shell (bash), etc. Outils similaires à coreutils sont dans bin, sbin, usr.bin et usr.sbin.

Vous pouvez également parcourir les mêmes interfaces Web si vous souhaitez lire le code pour construire un logiciel tiers (similaire à pkgbuild de arch). NetBSD et DragonFly utilisent pkgsrc à partir du référentiel NetBSD. OpenBSD et FreeBSD ont ces frameworks dans leurs référentiels respectifs.

D'autres repos intéressants pour votre but sont:

Rufo El Magufo
la source
Très bonne réponse. Merci d'avoir encouragé la comparaison - comparer différentes approches est instructif. Pourriez-vous étendre votre réponse avec des dépôts Linux? Les bases de code BSD sont intéressantes, mais je crains qu'il puisse y avoir des différences importantes dans les trucs syscall, etc., donc les dépôts Linux seraient un excellent ajout à votre liste.
Grzegorz Wierzowiecki
L'un des avantages de * BSD est que tout le code se trouve dans un seul dépôt. Le problème avec Linux est que chaque paquet a une origine différente. Le référentiel coreutils (et le référentiel bash pour la fonctionnalité intégrée git.savannah.gnu.org/cgit/bash.git/tree ) couvre presque tous les outils traditionnels. Les repos "linux distro" ne contiennent que le framework pour construire les paquets tiers et certains patchs, les repos ne contiennent pas de vrai code (ne contiennent que le code des outils de la distribution).
Rufo El Magufo
Respect des différences BSD vs Linux. Les API sont similaires et généralement compatibles avec POSIX et d'autres normes. La différence est l'implémentation interne de chaque API. En fait, les outils de GNU fonctionnent sur * BSD et les outils de * BSD fonctionnent sur Linux. Par exemple: Debian ( packages.debian.org ) a quelques outils * BSD et les * BSD ont des coreutils disponibles et d'autres projets GNU.
Rufo El Magufo
2

Comme il n'y a pas de place centrale pour le développement open source, il n'y a pas de référentiel central contenant la plupart des logiciels open source. Certains utilisent GitHub, BitBucket, des serveurs privés, Sourceforge, Launchpad, etc. Il s'agit donc d'un environnement vraiment distribué et il n'y a aucun avantage immédiat à avoir un référentiel copiant simplement la source.

D'un autre côté, les distributions binaires (expédition de binaires au lieu du code source) fournissent généralement la source de la plupart de leurs packages et les fournissent à tous les utilisateurs. Votre meilleure chance est donc d'utiliser l'infrastructure fournie par les distributions. Veuillez noter qu'ils ne contiennent pas nécessairement les dernières modifications et correctifs et peuvent être obsolètes.

Exemples de téléchargement d'un package source à partir de votre distribution:

yumdownloader --source packagename
apt-get source packagename

Pour Arch, regardez les réponses aux réponses à une question similaire sur stackoverflow.

Si vous voulez juste télécharger le code source, vous pouvez utiliser packages.debian.org, par exemple un lien pour coreutils . Cela fournira un lien de téléchargement vers le package d'origine ( orig.*ou la source nettoyée pour certains packages dsfg.*). Vous pouvez faire de même avec la liste des paquets Arch Linux, par exemple: page arch coreutils . Le Download from Mirrortéléchargera le package.

Ulrich Dangel
la source