¿Dónde está el mejor lugar para encontrar fuentes de herramientas de línea de comandos de Linux estándar? [cerrado]

10

En: Me gusta aprender leyendo fuentes. Pero es agotador buscarlos en Internet divididos en muchos sitios de proyectos diferentes. Me encantaría ver un repositorio central navegable con fuentes de muchas aplicaciones en un solo lugar.

  • Cuando alguien quiere encontrar la documentación de alguna herramienta de Linux, el mejor lugar es: man toolname.
  • Cuando quiero explorar las fuentes de Linux "a pedido" siempre puedo saltar a: Referencia cruzada de Linux .
  • Cuando quiero encontrar el personal más común, puedo encontrar todas las fuentes en Coreutils .
  • Cuando quiero comprobar cómo construir algo, puedo (por ejemplo) saltar a http://www.archlinux.org/packages/ , comprobar que es pkgbuild.

¿Hay algún repositorio que contenga las fuentes de la mayoría de las herramientas en un solo lugar? - al igual que mancontiene documentación o fuentes de kernel de referencia cruzada de Linux .

Me refiero a algo para verificar "a pedido" "rápido" cómo se implementan las cosas. (Sí, conozco google -> pero estoy cansado de la rutina: 1. buscando en el sitio del proyecto 2. navegando por el repositorio o incluso peor -> revisando su repositorio 3. borrando cuando haya terminado)

OBSERVACIÓN:

Me he estresado, me gustaría comprobar las herramientas: rápido, rápido y bajo demanda.

Significa: no quiero instalar toda la aplicación con sus fuentes solo para echar un vistazo a sus fuentes. (por cierto, el recurso web es preferible, por lo que podría consultar las fuentes de muchas computadoras, no tengo administrador en todas ellas)

Grzegorz Wierzowiecki
fuente
3
La mayoría de las distribuciones le permiten instalar fuentes para paquetes usando el administrador de paquetes.
jippie
3
Para Debian, puede ejecutar apt-get source $PACKAGE-NAMEdespués de agregar el repositorio de origen
Ulrich Dangel
Los paquetes generalmente responden en otras bibliotecas para completar sus funciones
daisy
No quiero instalar cada aplicación que quiero verificar.
Grzegorz Wierzowiecki
3
@GrzegorzWierzowiecki no tiene que instalar una aplicación para echar un vistazo a la fuente, al menos apt-get sourcepuede ejecutar este comando como usuario normal.
Ulrich Dangel

Respuestas:

6

Permítame responder a su pregunta con una respuesta alternativa. Supongo que quieres leer el código de las herramientas tradicionales de línea de comandos de Unix, no solo la versión GNU de estas. Leer el código de herramientas similares de diferentes proyectos es una buena práctica para aprender diferentes ideas e implementaciones.

GNU tiene una buena interfaz web para el repositorio de coreutils: http://git.savannah.gnu.org/cgit/coreutils.git

La familia BSD tiene interfaces web similares para los repositorios:

La base de código BSD es interesante porque generalmente usa menos código para las mismas herramientas, es decir: solo admite opciones tradicionales, sin opciones adicionales, sh es un shell real y no solo un enlace a otro shell grande (bash), etc. Herramientas similares a coreutils están dentro de bin, sbin, usr.bin y usr.sbin.

También puede navegar por las mismas interfaces web si desea leer el código para construir software de terceros (similar a pkgbuild de arch). NetBSD y DragonFly usan pkgsrc del repositorio de NetBSD. OpenBSD y FreeBSD tienen estos marcos dentro de sus respectivos repositorios.

Otros repositorios interesantes para su propósito son:

Rufo El Magufo
fuente
Gran respuesta. Gracias por alentar la comparación: comparar diferentes enfoques es educativo. ¿Podría ampliar su respuesta con algunos repositorios de Linux? Las bases de código BSD son interesantes, pero me temo que podría haber diferencias importantes en las llamadas de syscall, etc., por lo que los repositorios de Linux serían una gran adición a su lista.
Grzegorz Wierzowiecki
Una de las ventajas de * BSD es que todo el código está dentro de un repositorio. El problema con Linux es que cada paquete tiene un origen diferente. El repositorio coreutils (y el repositorio bash para la funcionalidad integrada git.savannah.gnu.org/cgit/bash.git/tree ) cubre casi todas las herramientas tradicionales. Los repositorios "linux distro" solo contienen el marco para construir los paquetes de terceros y algunos parches, los repos no contienen código real (solo contienen el código para las herramientas de la distribución).
Rufo El Magufo
Respeto a las diferencias BSD vs Linux. Las API son similares y habitualmente compatibles con POSIX y otros estándares. La diferencia es la implementación interna de cada API. De hecho, las herramientas de GNU funcionan en * BSD y las herramientas de * BSD funcionan en Linux. Por ejemplo: Debian ( packages.debian.org ) tiene algunas herramientas * BSD y los * BSD tienen coreutils y otros proyectos GNU disponibles.
Rufo El Magufo
2

Como no hay un lugar central para el desarrollo de código abierto, no hay un repositorio central que contenga la mayoría del software de código abierto. Algunos usan GitHub, BitBucket, servidores privados, Sourceforge, Launchpad, etc. Por lo tanto, este es un entorno verdaderamente distribuido y no hay un beneficio inmediato de tener un repositorio simplemente copiando la fuente.

Por otro lado, las distribuciones binarias (binarios de envío en lugar del código fuente) generalmente proporcionan la fuente de la mayoría de sus paquetes y se los proporcionan a todos los usuarios. Entonces, su mejor oportunidad es usar la infraestructura provista por las Distribuciones. Tenga en cuenta que no necesariamente contienen los últimos cambios y correcciones y pueden estar desactualizados.

Ejemplos de cómo descargar un paquete fuente de su distribución:

yumdownloader --source packagename
apt-get source packagename

Para Arch, eche un vistazo a las respuestas a las respuestas para una pregunta similar sobre stackoverflow.

Si solo desea descargar el código fuente, puede usar packages.debian.org, por ejemplo, enlace para coreutils . Esto proporcionará un enlace de descarga para el paquete original ( orig.*o la fuente limpia para algunos paquetes dsfg.*). Puede hacer lo mismo con la lista de paquetes de Arch Linux, por ejemplo: la página de arch coreutils . El Download from Mirrordescargará el paquete.

Ulrich Dangel
fuente