Onde é o melhor lugar para encontrar fontes de ferramentas padrão de linha de comando para Linux? [fechadas]

10

Into: Gosto de aprender lendo fontes. Mas é cansativo procurá-los na Internet divididos em muitos sites de projetos diferentes. Gostaria de ver um repositório central navegável com fontes de muitos aplicativos em um só lugar.

  • Quando alguém quer encontrar documentação de alguma ferramenta Linux, o melhor lugar é: man toolname.
  • Quando quero procurar fontes Linux "sob demanda", sempre posso pular para: Referência cruzada do Linux .
  • Quando desejo encontrar a equipe mais comum, encontro todas as fontes no Coreutils .
  • Quando quero verificar como criar algo, posso (por exemplo) pular para http://www.archlinux.org/packages/ , verificar o pkgbuild.

Existe algum repositório que contém fontes da maioria das ferramentas em um só lugar? - assim como manmantém a documentação ou fontes de kernel do Linux Cross Reference .

Quero dizer algo para verificar "rapidamente" "sob demanda" como as coisas são implementadas. (Sim, eu conheço o google -> mas estou cansado da rotina: 1. pesquisando no site do projeto 2. navegando no repositório ou pior ainda -> verificando seu repositório 3. excluindo quando terminar)

OBSERVAÇÃO:

Eu enfatizei, gostaria de verificar as ferramentas: rápido, rápido, sob demanda.

Significa: eu não quero instalar o aplicativo inteiro com suas fontes apenas para dar uma olhada nas fontes. (btw. o recurso da web é preferível, para que eu possa verificar fontes de muitos computadores - não tenho administrador em todos eles)

Grzegorz Wierzowiecki
fonte
3
A maioria das distribuições permite instalar fontes de pacotes usando o gerenciador de pacotes.
jippie
3
Para debian você pode simplesmente executar apt-get source $PACKAGE-NAMEdepois de ter adicionado o repositório de origem
Ulrich Dangel
Os pacotes geralmente responder sobre outras bibliotecas para completar suas funções
daisy
Não quero instalar cada aplicativo que desejo verificar.
Grzegorz Wierzowiecki
3
@GrzegorzWierzowiecki, você não precisa instalar um aplicativo para dar uma olhada na fonte, pelo menos apt-get sourcevocê pode executar este comando como usuário normal.
Ulrich Dangel

Respostas:

6

Deixe-me responder à sua pergunta com uma resposta alternativa. Eu acho que você quer ler o código das ferramentas tradicionais de linha de comando Unix, não apenas a versão GNU delas. Ler o código de ferramentas semelhantes de diferentes projetos é uma boa prática para aprender diferentes idéias e implementações.

O GNU tem uma interface web agradável para o repositório de coreutils: http://git.savannah.gnu.org/cgit/coreutils.git

A família BSD possui interfaces da web semelhantes para os repositórios:

A base de código do BSD é interessante porque geralmente usa menos código para as mesmas ferramentas, ou seja: suporta apenas opções tradicionais, sem opções extras, sh é um shell real e não apenas um link para outro big shell (bash), etc. Ferramentas semelhantes ao coreutils estão dentro de bin, sbin, usr.bin e usr.sbin.

Você também pode navegar pelas mesmas interfaces da Web se desejar ler o código para criar software de terceiros (semelhante ao pkgbuild do arch). O NetBSD e o DragonFly usam o pkgsrc do repositório do NetBSD. O OpenBSD e o FreeBSD possuem essas estruturas em seus respectivos repositórios.

Outros repositórios interessantes para o seu propósito são:

Rufo El Magufo
fonte
Ótima resposta. Obrigado por incentivar a comparação - comparar diferentes abordagens é educativo. Você poderia expandir sua resposta com alguns repositórios Linux? As bases de código BSD são interessantes, mas receio que possam haver diferenças importantes nas coisas do syscall, etc., portanto, os repositórios Linux seriam um ótimo complemento para a sua lista.
Grzegorz Wierzowiecki
Uma das vantagens do * BSD é que todo o código está em um repositório. O problema com o Linux é que cada pacote tem uma origem diferente. O repositório coreutils (e o repositório bash da funcionalidade incorporada git.savannah.gnu.org/cgit/bash.git/tree ) abrange quase todas as ferramentas tradicionais. Os repositórios "linux distro" contêm apenas a estrutura para criar pacotes de terceiros e alguns patches, os repositórios não contêm código real (apenas o código para as ferramentas da distribuição).
Rufo El Magufo
Respeito às diferenças BSD vs Linux. As APIs são semelhantes e habitualmente compatíveis com o POSIX e outros padrões. A diferença é a implementação interna de cada API. De fato, as ferramentas do GNU funcionam no * BSD e as ferramentas do * BSD funcionam no Linux. Por exemplo: Debian ( packages.debian.org ) possui algumas ferramentas * BSD e os * BSDs têm coreutils disponíveis e outros projetos GNU.
Rufo El Magufo
2

Como não há lugar central para o desenvolvimento de código aberto, não há repositório central contendo a maioria dos softwares de código aberto. Alguns usam GitHub, BitBucket, servidores privados, Sourceforge, Launchpad, etc. Portanto, este é um ambiente verdadeiramente distribuído e não há benefício imediato em ter um repositório apenas copiando a fonte.

Por outro lado, as Distribuições binárias (binários de remessa em vez do código-fonte) normalmente fornecem a fonte para a maioria de seus pacotes e para todos os usuários. Portanto, sua melhor chance é usar a infraestrutura fornecida pelas Distribuições. Esteja ciente de que eles não contêm necessariamente as alterações e correções mais recentes e podem estar desatualizados.

Exemplos de como baixar um pacote de origem da sua distribuição:

yumdownloader --source packagename
apt-get source packagename

Para o Arch, dê uma olhada nas respostas para uma pergunta semelhante no stackoverflow.

Se você apenas deseja fazer o download do código fonte, você pode usar packages.debian.org, por exemplo, link para coreutils . Isso fornecerá um link de download para o pacote original ( orig.*ou a fonte limpa para alguns pacotes dsfg.*). Você pode fazer o mesmo com a lista de pacotes do Arch Linux, por exemplo: página arch coreutils . O Download from Mirrorfará o download do pacote.

Ulrich Dangel
fonte