É possível obter versões do OS X de ferramentas Unix em distribuições Linux modernas (como Ubuntu ou RedHat)?

2

Eu observei que muitas vezes há diferenças sutis e muitas vezes irritantes entre as versões padrão de certas ferramentas de linha de comando como paste e sed nas distribuições modernas do Linux versus OSX . Isso leva a respostas que não funcionam em OS X , embora funcionem em praticamente qualquer distribuição Linux.

Então, eu imagino, existe uma maneira padrão de obter o conjunto completo de OS X versões das ferramentas padrão do Unix nas distribuições Linux modernas para que possamos testar as soluções para a funcionalidade correta no OSX, sem ter uma cópia?

    
por merlin2011 22.06.2014 / 20:45

2 respostas

3

Como mencionado em um comentário, a Apple disponibiliza o código-fonte de suas versões dessas ferramentas disponíveis. Muitos comandos comuns estão no pacote "shell_cmds" , enquanto colar e sed estão em " text_cmds ". Você pode obter o código-fonte e compilar.

Praticamente todos eles funcionam bem em sistemas Linux, embora muitas vezes você tenha que pular na fonte e remover explicitamente testes específicos do FreeBSD, particularmente a linha __FBSDID("..."); que está em quase todos os arquivos. Eu não conheço nenhuma distribuição que os empacote. Muitas distribuições fazem o pacote de versões BSD de algumas ferramentas comuns, que são muito próximas (frequentemente idênticas) às versões do OS X, embora geralmente não incluam itens como colar e sed. Por exemplo, o Debian inclui oito pacotes chamados bsdX (nenhum deles possui qualquer um desses comandos ). Para as versões da Apple especificamente, ou para as muitas ferramentas que não estão incluídas nelas, não é difícil construir você mesmo quando você precisar delas, nas instruções acima.

Tudo isso dito, o subconjunto comum das ferramentas GNU e BSD é a especificação POSIX , onde todos os comandos básicos são definidos. Você pode procurar o comando colar ou sed e veja quais argumentos é garantido para aceitar em todos os lugares. Essa é a maneira "moralmente correta" de escrever código portátil: tanto as ferramentas GNU quanto as ferramentas BSD possuem extensões, mas se você permanecer dentro do POSIX, seu código funcionará em ambos. Então verifique se você está sempre usando apenas argumentos POSIX e o que você diz deve funcionar no OS X e em outros sistemas igualmente.

    
por 23.06.2014 / 01:40
1

Embora a maioria das ferramentas unixy do OSX sejam de código-fonte aberto , o código-fonte de muitas ferramentas depende dos recursos de biblioteca e kernel que não são presentes no Linux (e que não são de código aberto, e que não podem ser executados em hardware que não seja da Apple sem esforço extra e talvez com violações de licença). Duvido que você possa executá-los no Linux sem um esforço significativo.

A camada unix do OSX é portada a partir do FreeBSD e muitos programas são muito parecidos com o do release do FreeBSD que estava atual no momento da versão OSX. Você pode rodar o FreeBSD em uma máquina virtual e testar coisas lá. Você também pode executar o OpenBSD ; O OpenBSD é focado em segurança e muito mais conservador que o FreeBSD quando se trata de adotar novos recursos. Se você quiser testar scripts para portabilidade, também pode instalar OpenIndiana , que é uma bifurcação de fonte aberta de Solaris com base na edição do OpenSolaris, agora descontinuada. Como o Solaris é baseado no Sistema , o Solaris plus OpenBSD oferece uma visão razoavelmente ampla da portabilidade do Unix.

Você também pode verificar a documentação de várias variantes do Unix on-line:

por 23.06.2014 / 02:11