Alguma opção para substituir o GNU coreutils no Linux?

20

Eu estive pensando em interromper o uso do GNU Coreutils em meus sistemas Linux, mas para ser honesto, ao contrário de muitos outros componentes do GNU, não consigo pensar em nenhuma alternativa (no Linux) . Que alternativas existem para os coreutils do GNU? precisarei de mais de um pacote? Os links para o projeto são pontos obrigatórios e obrigatórios para nomear pacotes de distribuição.

Além disso, não sugira coisas, a menos que você saiba que elas funcionam no Linux e possa fazer referência a instruções. Duvido que mudarei de kernels em breve e sou muito preguiçosa para qualquer coisa além de simples ./configure; make; make install. Certamente não vou hackear C por isso.

aviso: se a sua distribuição usa coreutils, removê-los pode interromper o funcionamento da sua distribuição. No entanto, não tê-los em primeiro lugar $PATHnão deve quebrar as coisas, pois a maioria dos scripts deve usar caminhos absolutos.

xenoterracida
fonte
10
Curiosamente, por que você está procurando alternativas?
tshepang
2
@xeno "Mais robusto"? Também tenha em mente que o seu sistema (incluindo kernel) é em grande parte construído com GCC e depende glibc :)
tshepang
3
@xeno O Debian atualmente está usando o EGLIBC , que é um tipo de fork do GLibC. Mas segue o GLibC de perto, então a diferença não é tão grande.
tshepang
2
Clang e tcc poderiam (ao mesmo tempo) compilar o kernel do Linux.
Shawn J. Goff
2
Há pessoas trabalhando em uma terra de usuário GNU em um kernel BSD , mas eu não ouvi o contrário. Realmente mudar kernels seria mais fácil. Você pode experimentá-lo primeiro em uma VM se for tímido.
Gilles 'SO- stop be evil'

Respostas:

15

busybox o favorito dos sistemas Linux embarcados.

O BusyBox combina pequenas versões de muitos utilitários UNIX comuns em um único pequeno executável. Ele fornece substituições para a maioria dos utilitários que você normalmente encontra nos arquivos GNU, shellutils etc. Os utilitários do 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 semelhante aos seus equivalentes GNU. O BusyBox fornece um ambiente bastante completo para qualquer sistema pequeno ou incorporado.
O BusyBox foi escrito com otimização de tamanho e recursos limitados em mente. Também é extremamente modular, para que você possa incluir ou excluir facilmente comandos (ou recursos) em tempo de compilação. Isso facilita a personalização de 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 praticamente transformar qualquer nome de núcleo em um link para o binário do busybox e ele funcionará. você também pode executar busybox <command>e funcionará. Exemplo: se você estiver no Gentoo e ainda não o instalou vi, poderá executar busybox vi filenamee estará no vi. Está

xenoterracida
fonte
fique à vontade para modificar este com links para seu distro
xenoterracide
Além disso, este é um dos favoritos em incorporado, de modo que uma alternativa que provavelmente não vai ser suficiente para substituir GNU para minha área de trabalho ambiente / servidor
xenoterracide
Essa é a única solução prática em caixa eletrônico, se você não deseja hackear C. E as versões do busybox devem estar em conformidade padrão.
precisa saber é o seguinte
5

Este é um tópico antigo, eu percebo. No entanto, essa 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 o gnu2sysv, por exemplo). Isso substituirá o pacote coreutils do Arch e fornecerá os equivalentes da herança. Você pode ler sobre tudo isso no wiki do arch: https://wiki.archlinux.org/index.php/Base2heirloom

bbenne10
fonte
2

Confira uutils .

Esta é uma implementação multiplataforma dos coreutils GNU, escrita em Rust. É licenciado pelo MIT. No momento em que escrevo esta resposta, ela não estava 100℅ completa (faltando algumas cruciais como lse cp), mas muitas outras estão prontas .

Russ
fonte
0

Eu suspeito que você teria dificuldade em se livrar do GNU Coreutils, no entanto, sempre há as ferramentas BSD equivalentes, embora elas não sejam substituições substitutas das ferramentas GNU.

jsbillings
fonte
como eu instalaria as ferramentas BSD em uma distribuição Linux? onde eu os pegaria?
Xenoterracide
O sistema operacional inteiro do FreeBSD está disponível no CVS freebsd.org/cgi/cvsweb.cgi/src , no entanto, fazer com que o usuário do BSD compile sob um kernel Linux seria bastante difícil. A área de usuário do GNU é provavelmente mais portátil que o BSD, pois a área de usuário do GNU (pelo menos no início) foi criada para ser portátil entre vários kernels.
Jsbillings
isso soa como uma PITA, com certeza se é razoavelmente possível que alguém em algum lugar a tenha empacotado pelo menos uma vez no linux.
Xenoterracide
Solaris (a partir de 140 e poucos anos também está disponível) também seria uma opção. Se você está usando uma distro, está doido. Pare agora. Se você estiver usando LFS , continue ! Diverta-se! Se você está fazendo uma distro, aplaudo sua bravura, senhor.
bahamat
Sim, não tenho certeza se é possível. Provavelmente seria mais fácil instalar o FreeBSD e ativar a compatibilidade com o Linux. Você pode facilmente fazer com que os coreutils GNU funcionem no FreeBSD, mas não vice-versa.
Jsbillings
0

Normalmente, quando alguém pede para se afastar de algo amplamente difundido, testado e 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" dívida". O arquivo GNU havia acumulado uma quantidade bastante grande de dívida de código ao longo dos anos e, quando uma base de código não é mantida adequadamente, pode atingir um ponto de ruptura (código legado e até mesmo 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 definitiva (como um caso especial) - assim como Wayland está sendo lançado para o X ... muitos de seus desenvolvedores saindo diretamente do campo X.

Minha sugestão é realmente entrar e refatorar coreutils. Alguém tem que fazer isso. E quem levanta a questão da substituição do coreutils - a sua ideia é o seu projeto.

Para esse fim, tire proveito de qualquer automação que você possa encontrar: mecanismos de refatoração, como o cscout, ou qualquer coisa que aplique métodos mais avançados de análise / síntese (por exemplo, redes formais de conceito). Mas a análise profunda ainda é uma área relativamente nova e aberta da pesquisa ativa - e passa para a Inteligência Artificial. (Um engenheiro de software de robô.)

A maioria dos utilitários já deve ter suítes de testes, para que a validação possa ser feita com mudanças passo a passo progressivas + etapas de teste de regressão automatizada; o que pode ser bastante rápido (por exemplo, 10 ou mais atualizações de revisão / dia). Uma complicação desse processo ocorre se houver dependências de hardware ou software de baixo nível em qualquer lugar do conjunto de software; já que isso implica validação em várias plataformas. Não sei muito disso no coreutils; deve haver algum tipo de separação entre as camadas de hardware ou software de baixo nível (por exemplo, o número de lugares onde o coreutils sabe que tipodo sistema de arquivos em que ele está deve ser mínimo ou, melhor, zero.) Os emuladores e máquinas virtuais, utilizados para fins de teste em várias plataformas, têm limitações. Por exemplo, o Mac OS X foi projetado especificamente para obstruir a capacidade de emular ou fazer a VM.

Rock Brentwood
fonte
-1

Solaris (a partir de svn_140-something) também seria uma opção.

Se você está usando uma distro, está doido. Pare agora. Procure ajuda psiquiátrica.

Se você estiver usando LFS , continue ! Diverta-se!

Se você está fazendo uma distro, aplaudo sua bravura, senhor.

bahamat
fonte
1
essa não é uma pergunta sobre "qual distro" posso usar, é sobre a substituição de coreutils no Linux. A menos que você esteja se referindo ao opensolaris coreutils? também é menos PITA que a opção FreeBSD?
Xenoterracide
1
O código fonte do OpenSolaris é apenas o Solaris. O código-fonte do Solaris até svn_14x foi lançado pelo Sun / Oracle sob CDDL. Existem basicamente três heranças principais para a terra do usuário Unix. Unix "Genético" (Solaris, AIX, True64, etc., que veio do código da AT&T e está praticamente fechado, mas o Solaris esteve aberto por um tempo), BSD (que finalmente ficou por conta própria a partir do 4.4-lite) e GNU. Mas acho que afastar-se do GNU será igualmente difícil (ou fácil), independentemente do BSD ou Solaris. Ou você pode obter xenocore-utils realmente ambiciosos e fazer ;-)
bahamat