Qual è il posto migliore per trovare fonti di strumenti standard da riga di comando per Linux? [chiuso]


10

Into: mi piace imparare leggendo le fonti. Ma è stanco di cercarli su Internet suddivisi su molti siti di progetti diversi. Mi piacerebbe vedere un repository centrale navigabile con fonti di molte molte app in un unico posto.

  • Quando qualcuno vuole trovare la documentazione di qualche strumento di Linux, il posto migliore è: man toolname.
  • Quando voglio sfogliare le fonti Linux "su richiesta" posso sempre passare a: Riferimenti incrociati Linux .
  • Quando voglio trovare il personale più comune, posso trovare tutte le fonti in Coreutils .
  • Quando voglio controllare come costruire qualcosa, posso (per esempio) passare a http://www.archlinux.org/packages/ , controllare che sia pkgbuild.

Esiste un repository che contiene le fonti della maggior parte degli strumenti in un unico posto? - proprio come mancontiene documentazione o fonti del kernel di riferimento incrociato Linux .

Intendo qualcosa per "rapido" "su richiesta" che controlla come vengono implementate le cose. (Sì, conosco google -> ma sono stanco della routine: 1. ricerca nel sito del progetto 2. navigazione nel repository o peggio ancora -> controllo del repository 3. cancellazione al termine)

NOTA:

Ho sottolineato, vorrei controllare gli strumenti: rapido, veloce, su richiesta.

Significa: non voglio installare l'intera app con le sue fonti solo per dare un'occhiata alle sue fonti. (a proposito, è preferibile una risorsa Web, quindi ho potuto controllare le fonti da molti computer - non ho un amministratore su tutti)


3
La maggior parte delle distribuzioni consente di installare origini per i pacchetti utilizzando Gestione pacchetti.
jippie,

3
Per debian puoi semplicemente eseguire apt-get source $PACKAGE-NAMEdopo aver aggiunto il repository dei sorgenti
Ulrich Dangel l'

I pacchetti di solito rispondono su altre librerie per completare le sue funzioni
daisy

Non voglio installare ogni app che voglio controllare.
Grzegorz Wierzowiecki,

3
@GrzegorzWierzowiecki non devi installare un'applicazione per dare un'occhiata al sorgente, almeno con apt-get sourcete puoi eseguire questo comando come utente normale.
Ulrich Dangel,

Risposte:


6

Vorrei rispondere alla tua domanda con una risposta alternativa. Immagino che tu voglia leggere il codice per i tradizionali strumenti da riga di comando Unix, non solo la versione GNU di questi. Leggere il codice di strumenti simili da diversi progetti è una buona pratica per apprendere idee e implementazioni diverse.

GNU ha una bella interfaccia web per il repository di coreutils: http://git.savannah.gnu.org/cgit/coreutils.git

La famiglia BSD ha interfacce web simili per i repository:

La base di codice BSD è interessante perché di solito usa meno codice per gli stessi strumenti, cioè: supporta solo opzioni tradizionali, nessuna opzione extra, sh è una vera shell e non solo un collegamento ad altre grandi shell (bash), ecc. Strumenti simili a coreutils sono all'interno di bin, sbin, usr.bin e usr.sbin.

Puoi anche navigare nelle stesse interfacce web se vuoi leggere il codice per creare software di terze parti (simile a pkgbuild di arch). NetBSD e DragonFly usano pkgsrc dal repository NetBSD. OpenBSD e FreeBSD hanno questi framework nei rispettivi repository.

Altri repository interessanti per il tuo scopo sono:


Bella risposta. Grazie per aver incoraggiato il confronto: confrontare diversi approcci è educativo. Potresti espandere la tua risposta con alcuni repository Linux? I codebase di BSD sono interessanti, ma temo che potrebbero esserci differenze importanti nelle cose di syscall ecc., Quindi i repository Linux sarebbero un'ottima aggiunta alla tua lista.
Grzegorz Wierzowiecki,

Uno dei vantaggi di * BSD è che tutto il codice è all'interno di un repository. Il problema con Linux è che ogni pacchetto ha un'origine diversa. Il repository coreutils (e il repository bash per la funzionalità integrata git.savannah.gnu.org/cgit/bash.git/tree ) copre quasi tutti gli strumenti tradizionali. I repository "linux distro" contengono solo il framework per creare pacchetti di terze parti e alcune patch, i repository non contengono codice reale (contengono solo il codice per gli strumenti della distro).
Rufo El Magufo,

Rispetto delle differenze tra BSD e Linux. Le API sono simili e abitualmente compatibili con POSIX e altri standard. La differenza è l'implementazione interna di ciascuna API. In effetti, gli strumenti di GNU funzionano su * BSD e gli strumenti di * BSD funzionano su Linux. Ad esempio: Debian ( pacchetti.debian.org ) ha alcuni * BSD strumenti e * BSD hanno coreutils disponibili e altri progetti GNU.
Rufo El Magufo,

2

Poiché non esiste un posto centrale per lo sviluppo open source, non esiste un repository centrale contenente la maggior parte dei software open source. Alcuni usano GitHub, BitBucket, server privati, Sourceforge, Launchpad, ecc. Quindi questo è un ambiente veramente distribuito e non c'è alcun vantaggio immediato di avere un repository semplicemente copiando la fonte.

D'altra parte, le distribuzioni binarie (binari di spedizione anziché codice sorgente) in genere forniscono l'origine per la maggior parte dei loro pacchetti e li forniscono a tutti gli utenti. Quindi la tua migliore possibilità è quella di utilizzare l'infrastruttura fornita da Distributions. Tieni presente che non contengono necessariamente le ultime modifiche e correzioni e potrebbero non essere aggiornati.

Esempi su come scaricare un pacchetto sorgente dalla tua distribuzione:

yumdownloader --source packagename
apt-get source packagename

Per Arch dai un'occhiata alle risposte alle risposte per una domanda simile su StackOverflow.

Se vuoi semplicemente scaricare il codice sorgente, puoi usare pacchetti.debian.org, ad esempio link per coreutils . Ciò fornirà un collegamento per il download del pacchetto originale ( orig.*o della fonte pulita per alcuni pacchetti dsfg.*). Potresti fare lo stesso con l'elenco dei pacchetti di Arch Linux, ad esempio: arch coreutils page . Il Download from Mirrordownload del pacchetto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.