O software instalado em uma distribuição do linux roda em outra distribuição do linux?

0

Suponha que eu crie uma partição separada para o diretório "/ usr". Este é o diretório que contém todos os programas do usuário. Se eu mudar de um sistema operacional para outro (por exemplo, do Ubuntu para o Arch Linux ou vice-versa), o Arch Linux pode executar esse programa?

O blender que eu instalei no Ubuntu funciona no Arch Linux?

    
por Habi 18.11.2013 / 10:48

4 respostas

4

Você pode fazê-los funcionar em diferentes distribuições com algum trabalho.
As principais coisas em que os programas dependem são bibliotecas. Essas bibliotecas serão armazenadas em locais diferentes em distribuições diferentes, mas você pode descobrir onde essas bibliotecas estão vinculadas ao comando ldd.
Por exemplo, esta é a saída do ldd quando executado contra /usr/bin/vlc no Debian

linux-vdso.so.1 (0x00007fff11969000)
libvlc.so.5 => /usr/lib/libvlc.so.5 (0x00007f597eb01000)
libvlccore.so.5 => /usr/lib/libvlccore.so.5 (0x00007f597e819000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f597e5fd000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f597e3f9000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f597e0f5000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f597ddf7000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f597dbe1000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f597d834000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f597d5ee000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f597d3e6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f597ed37000)

Você pode ver que todas as bibliotecas estão em /lib/x86_64-linux-gnu
Enquanto no Arch, as bibliotecas para vlc estão localizadas em /usr/lib

linux-vdso.so.1 (0x00007fff5a1fe000)
libvlc.so.5 => /usr/lib/libvlc.so.5 (0x00007f84fd7c2000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f84fd5a4000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f84fd3a0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f84fcff5000)
libvlccore.so.7 => /usr/lib/libvlccore.so.7 (0x00007f84fcce1000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f84fcad9000)
libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0x00007f84fc892000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f84fc58f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f84fd9e0000)

Como você pode ver, os binários estão localizados em locais ligeiramente diferentes, com o próprio binário vlc tendo diferentes dependências. Então, teoricamente, com uma instalação do Arch do VLC, eu poderia executá-lo no Debian, ligando as bibliotecas aos lugares corretos.
Você também pode expandir os locais em que o sistema procura bibliotecas definindo a variável LD_LIBRARY_PATH, como assim -
export LD_LIBRARY_PATH=/usr/local/libs:$LD_LIBRARY_PATH

    
por 18.11.2013 / 12:45
2

Eu não acho que eles vão. Misturar uma partição /usr com gerenciadores de pacotes diferentes provavelmente causará conflitos e incompatibilidades. A única maneira que eu acho que poderia funcionar é se você está instalado software de um arquivo .tar.gz genérico para /opt , caso em que deve funcionar (não testado)

    
por 18.11.2013 / 10:54
1

Distribuições diferentes frequentemente (mas nem sempre) colocam arquivos em locais diferentes. Você pode converter pacotes usando o estrangeiro .

Se você está realmente com pouco espaço em disco, você pode instalar o Blender em suas partições Arch e Ubuntu, verificar o que é o mesmo e fazer links macios de arquivos e diretórios (com todos os subdiretórios) que são os mesmos.

    
por 18.11.2013 / 11:40
1

Primeiro, não misture /usr entre distribuições. Cada distribuição espera controlar o que está lá, e as distribuições continuarão sobrescrevendo os arquivos uns dos outros. /usr não contém programas do usuário (sim, é disso que o nome vem, mas não é o que o diretório continha nos últimos 40 anos ou mais), ele contém programas do sistema.

Os programas de uma distribuição podem ser executados na outra distribuição ou não. Depende se as distribuições têm versões suficientemente próximas das bibliotecas usadas pelos programas.

Se você instalar programas em /usr/local ou seu diretório pessoal, e eles não exigirem versões muito específicas de bibliotecas, eles funcionarão em ambas as distribuições.

    
por 19.11.2013 / 00:47