Tenho pensado em descontinuar o uso do GNU Coreutils em meus sistemas Linux, mas para ser honesto, ao contrário de muitos outros componentes GNU, não posso pense em quaisquer alternativas (no Linux) . Que alternativas existem para o GNU coreutils? vou precisar de mais de um pacote? Links para o projeto são essenciais, pontos de bônus para nomear pacotes de distro.
Também não sugira coisas a menos que saiba que funcionam no Linux e possa consultar as instruções. I duvido que trocarei de kernels em breve e estou com preguiça de qualquer coisa além de um ./configure; make; make install
direto. Certamente não vou hackear C para isso.
aviso: se sua distribuição usar coreutils, removê-los pode prejudicar o funcionamento de sua distribuição. No entanto, não tê-los em primeiro lugar em $PATH
não deve interromper as coisas, pois a maioria dos scripts deve usar caminhos absolutos.
Comentários
- Curiosamente, por que você está procurando alternativas?
- @xeno ” Mais robusto “? Também tenha em mente que seu sistema (incluindo kernel) é amplamente construído com GCC e depende do GLibC 🙂
- @xeno O Debian está atualmente usando EGLIBC , que é uma espécie de fork do GLibC. Mas segue o GLibC de perto, então a diferença ‘ é tão grande.
- Tanto o Clang quanto o tcc podem (ao mesmo tempo, de qualquer maneira) compilar o kernel do Linux.
- Há pessoas trabalhando em uma área de usuário GNU em um kernel BSD , mas eu não ‘ nunca ouvi falar do contrário. Realmente trocar os kernels seria mais fácil. Você pode tentar primeiro em uma VM se ‘ sou tímido.
Resposta
busybox
o favorito de Sistemas Linux embarcados.
BusyBox combina versões minúsculas de muitos utilitários UNIX comuns em um único pequeno executável. Ele fornece substitutos para a maioria dos utilitários que você geralmente encontra em GNU fileutils, shellutils, etc. Os utilitários no BusyBox geralmente têm menos opções do que seus primos GNU completos; no entanto, as opções incluídas fornecem a funcionalidade esperada e se comportam de maneira muito semelhante a suas contrapartes GNU. BusyBox fornece um ambiente bastante completo para qualquer sistema pequeno ou incorporado.
BusyBox foi escrito com a otimização de tamanho e recursos limitados em mente . Também é extremamente modular para que você possa facilmente incluir ou excluir comandos (ou recursos) em tempo de compilação. Isso torna mais fácil personalizar seus sistemas embarcados. Para criar um sistema funcional, basta adicionar alguns nós de dispositivo em / dev, alguns arquivos de configuração em / etc e um kernel Linux.
Você pode transformar qualquer nome coreutil em um link para o binário busybox e ele funcionará. você também pode executar busybox <command>
e ele funcionará. Exemplo: se você está no Gentoo e ainda não instalou seu vi
, você pode executar busybox vi filename
e você “estará no vi . É “s
-
Alpine Linux – baseado em BusyBox e uClibc, aqui “está uma visão geral
Comentários
- sinta-se à vontade para modificá-lo com links para sua distro
- também, este é um dos favoritos no incorporado, então, embora seja uma alternativa, ‘ provavelmente não será o suficiente para substituir GNU para meu ambiente de área de trabalho / servidor
- Esta é a única solução prática atm, se você não ‘ não quiser hackear C. E as versões do busybox devem ser em conformidade com os padrões.
Responder r
Este é um tópico antigo, eu sei. No entanto, esta solução nunca foi mencionada e aparece relativamente alta no google para “Linux with bsd userland”.
Há outra solução: herança. Eu sei que funciona no Arch e está empacotado no AUR (veja gnu2sysv, por exemplo). Isso substituirá o pacote coreutils do Arch e fornecerá os equivalentes de herança. Você pode ler sobre a coisa toda no wiki do arch: https://wiki.archlinux.org/index.php/Base2heirloom
Resposta
Confira uutils .
Esta é uma implementação de plataforma cruzada do GNU coreutils que é escrito em Rust. É licenciado pelo MIT.No momento em que escrevo esta resposta, ela não está 100℅ completa (faltando alguns pontos cruciais como ls
e cp
), mas muitos outros estão prontos.
Resposta
Eu suspeito que você teria dificuldade em se livrar do GNU Coreutils, no entanto, há sempre as ferramentas BSD equivalentes, embora não sejam substitutos imediatos para as ferramentas GNU.
Comentários
- como eu faria para instalar o BSD ferramentas em uma distribuição Linux? onde eu poderia obtê-las?
- FreeBSD ‘ s SO completo está disponível via CVS freebsd.org/cgi/cvsweb.cgi/src , no entanto, obter o userland BSD para compilar sob um kernel Linux seria bastante difícil. GNU ‘ o userland é provavelmente mais portável do que o BSD, uma vez que GNU ‘ s userland (pelo menos no início) foi construído para ser portável entre vários kernels.
- isso soa como e a PITA, claro se ‘ é razoavelmente possível que alguém em algum lugar o tenha empacotado pelo menos uma vez para Linux.
- Solaris (a partir de 140 e algo também está disponível) também seria uma opção. Se você está usando uma distro, você está louco. Pare agora. Se você estiver usando o LFS , continue! Divirta-se! Se você está fazendo uma distro, aplaudo sua bravura, senhor.
- Sim, ‘ não tenho certeza ‘ é até possível. É ‘ provavelmente mais fácil apenas instalar o FreeBSD e habilitar a compatibilidade com o Linux. Você pode facilmente fazer com que o GNU coreutils funcione no FreeBSD, mas não vice-versa.
Resposta
Normalmente, quando alguém pede para se livrar de algo que “está em uso generalizado, bem testado, verificado em muitas plataformas, é uma expressão externa de um problema subjacente conhecido como” cheiro de código “e o acúmulo descontrolado de” dívida técnica “ou “código da dívida”. O arquivo GNU acumulou uma dívida de código bastante grande ao longo dos anos e, quando uma base de código não é mantida adequadamente, pode chegar a um ponto de ruptura (código legado e até código legado mórbido).
Normalmente , seria realizado um processo de reengenharia e refatoração em intervalos para manter isso sob controle. Portanto, a verdadeira questão que está sendo colocada aqui é se uma versão refatorada do coreutils foi desenvolvida. Isso, é claro, inclui a possibilidade de uma substituição total (como um caso especial) – muito parecido com o que Wayland está sendo proposto para ser X … muitos de seus desenvolvedores vindo direto do campo X.
Minha sugestão é realmente entrar e refatorar coreutils. Alguém tem que fazer isso. E quem levantar a questão de substituir coreutils – sua ideia, seu projeto.
Para este fim, tire proveito de qualquer automação que você possa encontrar: motores de refatoração, como cscout, ou qualquer coisa que aplique métodos de análise / síntese mais avançados (por exemplo, redes de conceito formal). Mas a análise profunda ainda é uma área relativamente nova e aberta de pesquisa ativa – e cruza para a Inteligência Artificial. (Um engenheiro de software de robô.)
A maioria dos utilitários já deve ter suítes de teste em vigor, então a validação pode ser feita com mudança progressiva passo a passo + etapas de teste de regressão automatizadas; que pode ir muito rápido (por exemplo, 10 ou mais atualizações de revisão / dia). Uma complicação para esse processo ocorre se houver dependências de hardware ou software de baixo nível em qualquer lugar do pacote de software; já que isso envolve validação em várias plataformas. Eu não sei muito sobre o que existe no coreutils; deve haver algum tipo de separação nele das camadas de hardware ou software de baixo nível (por exemplo, o número de lugares onde coreutils sabe qual tipo de o sistema de arquivos em que ele está deve ser mínimo ou, melhor, zero.) Emuladores e máquinas virtuais, colocados em uso para fins de teste de plataforma múltipla, têm limitações. Por exemplo, o Mac OS X é projetado especificamente de forma a obstruir a capacidade para emular ou VM.
Resposta
Solaris (a partir de svn_140-something) também seria uma opção.
Se você estiver usando uma distro, você está louco. Pare agora. Procure ajuda psiquiátrica.
Se você estiver usando o LFS , rock on! Divirta-se!
Se você está fazendo uma distro, aplaudo sua bravura, senhor.
Comente
- isto não ‘ uma pergunta sobre ” qual distro ” posso usar, é
s sobre a substituição do coreutils no Linux. A menos que você ‘ esteja se referindo a coreutils do opensolaris? também é menos PITA do que a opção do FreeBSD?
- O código-fonte do OpenSolaris é apenas Solaris. O código-fonte do Solaris até svn_14x foi lançado pela Sun / Oracle sob CDDL. Existem basicamente três heranças principais para o userland do Unix.” Genético ” Unix (Solaris, AIX, True64, etc., que veio de AT & código T e é amplamente fechado, mas Solaris esteve aberto por um tempo), BSD (que finalmente permaneceu nele ‘ é próprio a partir do 4.4-lite) e GNU. Mas eu acho que se afastar do GNU será igualmente difícil (ou fácil) quer você vá com BSD ou Solaris. Ou você pode ser realmente ambicioso e fazer xenocore-utils 😉