Encontrando a fonte
Sim, você pode facilmente encontrar e ler o código-fonte de tudo no mundo do Linux, exceto por alguns casos extremos (como drivers de placas de vídeo somente binários).
Por exemplo, para saber mais sobre o comando ls
, google ls source code
, que fornecerá um hit especial do google diretamente na parte superior, informando que ls
faz parte do coreutils
.
Os coreutils , que são GNU, não Linux, são os comandos que você usa todos os dias na maioria distribuições. A partir dessa página de destino, você pode facilmente fazer o download do tarball inteiro ou procurar seu repositório git diretamente.
Por exemplo, este é o diretório mais interessante (neste momento, o link mostra um hash fixo, então não deixe de navegar do topo novamente se você ler esta resposta mais tarde): vista histórica de "src" no ramo principal
Enfoques semelhantes funcionam para todos os outros programas de código aberto, incluindo o próprio kernel.
Onde está tudo?
which ls
mostra onde esse binário específico está localizado.
O Linux Filesystem Standard lista todos os lugares usuais onde os arquivos são mantidos.
Gerenciamento de pacotes
Dependendo da sua distribuição, você pode fazer o download de pacotes de fontes com maior ou menor facilidade por meio do gerenciador de pacotes (por exemplo, apt-get source $package
), que deve ser ainda mais simples. Isto tem o benefício óbvio de que é a) muito fácil eb) deve retornar exatamente a versão do código fonte que seu binário está realmente usando. Dependendo da distribuição do curso.
Encontrar coisas
A carne da sua pergunta é como descobrir o comportamento de algum software. Isso geralmente não é trivial se você apenas buscar a fonte. Em casos extremos, ou seja, se o software é realmente crítico / essencial para você, e você absolutamente precisa fazê-lo funcionar, isso pode ser uma rota viável, mas, em geral, você deve estar melhor pesquisando. Eu fiz o meu quinhão de (ab) usando o código-fonte de pacotes grandes, especificamente ao compilar software (muitas vezes há casos estranhos em que bibliotecas ou versões de compilador têm pequenas incompatibilidades), e garanto que pode ser gratificante, mas muitas vezes é muito trabalho.
Se você encontrar uma solução para o seu problema, deixe-a fluir de volta para os mantenedores atuais através do pull request, se você acha que vale a pena para os outros (e não apenas consertar o software para se adequar mais aos seus desejos pessoais) .
Sobre como outras pessoas descobrem; muitas vezes eles funcionam porque eles realmente trabalham no software e são contatados através de seu rastreador de bugs - sabendo que a base de código já ajuda tremendamente.
Depois, há, é claro, seus verdadeiros hackers que realmente gostam de mergulhar fundo no código-fonte para qualquer coisa que eles tropeçam.
Em suma, para qualquer problema real, é incrivelmente provável que alguém já o tenha, e tenha postado sobre isso, então googling certamente não é uma má abordagem. Usar as palavras-chave corretas pode ser uma arte em si.
Levando-o para o próximo nível
Tudo isso é legal e divertido, mas se você quiser ir real para dentro da toca do coelho, você pode fazer o bootstrap Linux a partir do zero . Este site o guia através da construção de um completo (embora muito pequeno) sistema Linux completamente a partir do zero, ou seja, a partir do código-fonte. Não há binários prontos.