Como instalo um deb de 32 bits proprietário em um sistema de 64 bits sem causar problemas de dependência?

15

Eu sei que o Guitar Pro não suporta 64 bits, mas consegui fazê-lo funcionar com este comando

jeggy@jeggy-XPS:~$ sudo dpkg --force-architecture -i GuitarPro6-rev9063.deb
[sudo] password for jeggy: 
Selecting previously unselected package guitarpro6:i386.
(Reading database ... 285729 files and directories currently installed.)
Unpacking guitarpro6:i386 (from GuitarPro6-rev9063.deb) ...
dpkg: dependency problems prevent configuration of guitarpro6:i386:
 guitarpro6:i386 depends on gksu.
dpkg: error processing guitarpro6:i386 (--install):
 dependency problems - leaving unconfigured
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...
Errors were encountered while processing:
 guitarpro6:i386

E mesmo depois que recebo esse erro, o programa funciona perfeitamente e atualizar e adicionar PPA's ao sistema funciona muito bem, mas quando estou tentando instalar algum outro software, recebo este erro:

jeggy@jeggy-XPS:~$ sudo apt-get install elinks
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 elinks : Depends: libfsplib0 (>= 0.9) but it is not going to be installed
          Depends: liblua50 (>= 5.0.3) but it is not going to be installed
          Depends: liblualib50 (>= 5.0.3) but it is not going to be installed
          Depends: libtre5 but it is not going to be installed
          Depends: elinks-data (= 0.12~pre5-7ubuntu1) but it is not going to be installed
 guitarpro6:i386 : Depends: gksu:i386 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

E sempre que eu escrevo "apt-get -f install" eu recebo isso

jeggy@jeggy-XPS:~$ sudo apt-get -f install
[sudo] password for jeggy: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  dconf-gsettings-backend:i386 python-levenshtein python-indicate libav-tools libstartup-notification0:i386
  libxmuu1:i386 libavfilter-extra-2 libbabl-0.0-0 libgegl-0.0-0 libgconf2-4:i386 python-vobject libgtk-3-0:i386
  libpam-cap:i386 python-utidylib libdconf0:i386 python-iniparse python-xmpp libpam-gnome-keyring:i386
  libxcb-util0:i386 python-farstream
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  guitarpro6:i386
0 upgraded, 0 newly installed, 1 to remove and 7 not upgraded.
1 not fully installed or removed.
After this operation, 84,0 MB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 286979 files and directories currently installed.)
Removing guitarpro6:i386 ...
dpkg: warning: while removing guitarpro6:i386, directory '/opt/GuitarPro6/updater' not empty so not removed.
dpkg: warning: while removing guitarpro6:i386, directory '/opt/GuitarPro6/Data/Soundbanks' not empty so not removed.
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...

E agora o Guitar Pro é excluído.
Como posso instalar o Guitar Pro e ainda conseguir instalar outro software depois?

    
por Jeggy 12.06.2012 / 17:45

6 respostas

29
  

Aviso:

     

O GuitarPro deb é empacotado perigosamente!

     
  • Em um sistema de 64 bits, se você apt-get -f install tentar instalá-lo, apt-get desejará remover os seguintes pacotes críticos do sistema , que podem arruinar sua instalação do Ubuntu!

    The following packages will be REMOVED:
    gksu guitarpro6:i386 libgksu2-0 libpam-gnome-keyring sudo ubuntu-desktop
    ubuntu-minimal update-manager update-notifier xauth xinit xorg
  •   
  • sudo ? update-manager ?? X! O que os desenvolvedores estão pensando ?! Também faz apt-get pensar que um monte de pacotes i386 estão instalados quando nenhum deles foi. Aqui está a pasta completa gory.

  •   

Instale o GuitarPro com segurança sem apt-get , querendo removê-lo

  • Eu acredito que o comportamento acima vem da dependência estúpida do deb em gksu:i386 (que é o pacote de elevação da raiz gráfica)
  • Infelizmente, a única maneira segura de instalar este e não tem que lidar com o apt-get de lamentar é manualmente instalá-lo e suas dependências. Veja como:

Como examinar manualmente e instalar com segurança um binário i386 deb com suas dependências

  • Primeiro, remova a meia-embalagem atual compactada com sudo dpkg --remove guitarpro:i386
  • Agora, mude para o diretório em que seu arquivo deb está armazenado. Para facilitar a digitação, vamos criar um link simbólico curto - meu deb chamado gp6-full-linux-demo-r11100.deb , o seu pode ser diferente:
    • ln -s gp6-full-linux-demo-r11100.deb gp6.deb

1. Examine a arquitetura e as dependências do deb

Primeiro, examinamos as dependências do deb sem instalá-lo.

  • dpkg-deb -I gp6.deb nos mostra:

     new debian package, version 2.0.
    size 172147458 bytes: control archive= 75020 bytes.
     375 bytes,    10 lines      control
    335109 bytes, 2770 lines md5sums
    Package: GuitarPro6 Version: 6.1.3 Section: non-free/audio Priority: optional Architecture: i386 Depends: libc6 (>= 2.1.3), libstdc++6, libasound2, libxml2, libxslt1.1, libportaudio0, libportaudio2, libglu1-mesa, gksu, libssl0.9.8 Installed-Size: 222632 Maintainer: Arobas Music Description: http://www.guitar-pro.com Guitar Pro 6, Linux Version.
  • Portanto, este é um aplicativo i386 e todas as suas dependências também serão i386.

  • A primeira coisa a fazer é instalar o pacote de compatibilidade ia32-libs i386, se você ainda não tiver:
    • sudo apt-get install ia32-libs
  • Vamos também copiar e colar as dependências do pacote em um arquivo de texto, para mais tarde.

2. "Extraia" o deb em um arquivo tar e examine seu conteúdo

  • Vamos extrair o deb para um arquivo tar agora para que possamos examinar seu conteúdo sem precisar instalá-lo:
    • dpkg-deb --fsys-tarfile gp6.deb > gp6.tar
  • Abra o gerenciador de arquivos (Nautilus) e monte o arquivo gp6.tar como um arquivo clicando com o botão direito e selecionando Open in Archive Mounter ; depois , você verá gp6.tar adicionado ao final da barra lateral esquerda, com um ícone de ejeção ao lado dele:

  • Vá para o menu Visualizar para o Gerenciador de arquivos e altere a Barra lateral para a opção de exibição Árvore em vez de Lugares :

  • Agora, expanda a árvore gp6.tar na barra lateral clicando nos triângulos; repita para cada nível até que você possa ver a estrutura de pastas do arquivo:

  • Da estrutura, vemos que os arquivos do programa são divididos em dois locais: /opt e /usr/share :

    • Tudo o que entra em /opt é autônomo e não afeta mais nada no sistema.
    • Observamos que /usr/share contém apenas ícones / bitmaps, que são inofensivos.

3. Se for seguro, "instale" o programa extraindo o arquivo tar

  • Volte para o terminal e verifique se você está no diretório que contém os arquivos deb / tar baixados. Então digite:

    sudo tar -C / -xvf gp6.tar
    
  • Isso extrairá os arquivos do programa nos locais apropriados, mostrando os nomes e o andamento dos arquivos. ( Exemplo de saída )

    • A opção -C informa tar para executar esta operação em relação ao diretório raiz, não ao diretório atual.

4. Descubra quais dependências estão faltando com ldd , instale-as e balance-and-roll!

  • Abra a pasta /opt/GuitarPro6 no Gerenciador de arquivos:

    • Vemos que o executável é chamado GuitarPro (com o ícone "gears" de diamantes) e também que muitos arquivos lib-xxxx estão incluídos na pasta.
    • Isso é normal para programas somente binários; eles tentam incluir as versões das bibliotecas específicas de que precisam, pois podem não estar disponíveis nos repositórios de uma distribuição específica.
  • Além dessas bibliotecas incluídas e do pacote ia32-libs , a maioria das dependências de 32 bits deveria ter sido instalada. Em vez de instalar cegamente as dependências que vimos nas informações do arquivo deb via apt-get - o que pode causar problemas - vamos descobrir se estamos realmente faltando alguma coisa.

    • Volte para o terminal e mude para o diretório GuitarPro com cd /opt/GuitarPro6

Usando ldd

  • Digite ldd GuitarPro | grep found e a saída será libportaudio.so.2 => not found

    • ldd imprime as dependências (bibliotecas compartilhadas) de um programa e se elas existem ou não no sistema. Veja como é a saída completa do GuitarPro.
    • Para facilitar a vida, simplesmente filtramos os que não existem por meio de grep found .
  • Aqui, apenas a biblioteca libportaudio2 está ausente. Mas as dependências disseram libportaudio 0 ? (veja o passo 1.) Qual é?

    • Vamos procurar as versões disponíveis usando apt-cache search libportaudio do terminal.
    • Isso nos diz que ambos libportaudio2 e libportaudio0 pacotes estão disponíveis. Vamos instalar o 2 primeiro, com
      sudo apt-get install libportaudio2:i386
    • A parte : i386 é muito importante , já que nosso programa é de 32 bits. Se apt-get pedir para substituir / remover libportaudio2 e / ou outros arquivos, tudo bem, porque algumas bibliotecas não podem ser instaladas simultaneamente nas versões de 32 e 64 bits.
  • Vamos verificar novamente as dependências uma última vez: ldd GuitarPro6 | grep found nos dá nada (é isso que queremos!)

    • Se você receber o erro ./GuitarPro: /opt/GuitarPro6/./libz.so.1: version ZLIB_1.2.3.3 not found (required by /usr/lib/i386-linux-gnu/libxml2.so.2) , isso significa que o Guitar Pro está usando uma versão errada da libz , corrija isto removendo o arquivo libz.so.1 do diretório GuitarPro6:
      sudo rm libz.so.1
      O Guitar Pro voltará à versão de libz do seu sistema.
  • Saia do terminal e volte para a pasta /opt/GuitarPro6 no Gerenciador de arquivos. Clique duas vezes em GuitarPro e ...

  • Limpe a pasta Download excluindo o arquivo tar do Gerenciador de arquivos.

5. O atalho do iniciador já foi adicionado

  • Como o pacote já continha um atalho GuitarPro6.desktop que foi extraído para /usr/share/applications , não é necessário criá-lo manualmente. Está sentado lá no Launcher:

por ish 22.06.2012 / 08:09
1

Eu tentei algo e consegui que funcionasse!

  1. Eu copiei "/ opt / GuitarPro6" para algum lugar.

  2. Eu fiz sudo apt-get -f install para remover o Guitar Pro.

  3. Copiei a pasta de volta para /opt/GuitarPro6 e substituí tudo nela.

  4. Eu instalei mais pacotes da seguinte forma:

    sudo apt-get install dconf-gsettings-backend python-levenshtein python-indicate libav-tools libstartup-notification0 libxmuu1 libavfilter-extra-2 libbabl-0.0-0 libgegl-0.0-0 libgconf2-4 python-vobject libgtk-3-0 libpam-cap python-utidylib libdconf0 python-iniparse python-xmpp libpam-gnome-keyring libxcb-util0 python-farstream
    
  5. Eu baixei esta imagem ícone do GuitarPro e salvei-o em /opt/GuitarPro6/icon.png , então eu poderia ter uma imagem para criar meu próprio arquivo .desktop .

  6. Eu criei um arquivo .desktop com sudo gedit :

    #!/usr/bin/env xdg-open
    
    [Desktop Entry]
    Type=Application
    Name=Guitar Pro 6
    Comment=Guitar Pro 6
    Icon=/opt/GuitarPro6/icon.png
    Exec=sh /opt/GuitarPro6/gp-launcher.sh
    Terminal=false
    Categories=Audio
    

    Eu salvei este arquivo em /usr/share/applications com o nome GuitarPro6.desktop .

Agora tudo funciona e posso encontrar o Guitar Pro no painel.

    
por Jeggy 17.06.2012 / 18:17
1

Eu também tenho lutado com isso nos últimos dias. Eu encontrei a melhor maneira é usar o executável do Windows em vinho. Parece muito mais sólido.

    
por mk444 25.03.2015 / 01:58
0

Para responder à sua pergunta, para impedir que apt-get -f install remova o software, adicione --no-remove ao comando executado. Isto irá anular imediatamente o apt-get executado se algo for removido e o seu software não será removido.

No entanto, o que você provavelmente está procurando é uma maneira de ter um sistema funcionando normalmente, mas também ter esse software instalado. O que você precisa fazer é olhar para a saída de quando você força a instalação do pacote com o dpkg, e ver o que está falhando, então instale essa dependência usando

apt-get install package-name

No seu caso, é o gksu (especificamente, gksu). Agora você pode descobrir que quando você tenta instalar o gksu, ele também tem dependências que precisam ser instaladas. Como você está forçando a instalação do pacote de 32 bits, será necessário instalar manualmente essas dependências usando o mesmo comando acima.

    
por tgm4883 15.06.2012 / 23:11
0

Eu simplesmente instalei o gp6 no LinuxMint 14 de 32 bits, executei o atualizador e corrigi problemas com o zlib copiando zlib.so1.2.27 para / opt / GuitarPro, renomeando-o para zlib.so.1, instalei o gksu e suas dependências, executei o atualizador novamente por trazer tudo atualizado. Depois eu conectei meu Linux de 64 bits ao Linux 3s-Bit via fish: // username @ mymachineIP / opt no Dolphin e copiei todo o diretório GuitarPro6 para o meu diretório home no 64-Bit Linux e de lá para / opt. Obras.

    
por Michael Bergmann 14.03.2013 / 08:49
-2

Tente isto:

Faça o download do link do arquivo .deb, mas não o instale.

Faça o download e instale getlibs Então:

sudo apt-get install libportaudio0
getlibs -l libportaudio.so.2
dpkg -i –force-all /path/to/GuitarPro6Demo2.deb

Por fim, inicie-o com (ignorar erros):

/opt/GuitarPro6/gp-launcher.sh
    
por jasmines 15.06.2012 / 15:24