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 $PATH
não deve quebrar as coisas, pois a maioria dos scripts deve usar caminhos absolutos.
Respostas:
busybox
o favorito dos sistemas Linux embarcados.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 instalouvi
, poderá executarbusybox vi filename
e estará no vi. EstáArch Linux - comunidade / busybox
Gentoo Linux - sys-apps / busybox
Alpine Linux - baseado no BusyBox e uClibc, aqui está uma visão geral
fonte
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
fonte
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
ls
ecp
), mas muitas outras estão prontas .fonte
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.
fonte
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.
fonte
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.
fonte