Problemas com apt-get e package: nomeação para i386

1

Estou tentando criar um pacote para um aplicativo de 32 bits. em uma máquina de 64 bits executando o Ubuntu 14.04 de 64 bits. A compilação foi bem sucedida, o aplicativo é executado corretamente, eu também criei um .deb para ele usando o debhelper, mas quando se trata de realmente instalá-lo, surpresa:

# apt-get install nd-tcms-agent
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
  nd-tcms-agent:i386 : Depends: lib32gcc1:i386 (>= 1:4.1.1) but it is not installable
                  Depends: lib32stdc++6:i386 (>= 4.4.0) but it is not installable
                  Depends: libc6-i386:i386 (>= 2.17) but it is not installable
E: Unable to correct problems, you have held broken packages.

Eu mencionei que meu código foi criado com sucesso? E não teria, se essas bibliotecas não estivessem instaladas!

Agora, aqui está o que eu fiz:

# apt-cache showpkg lib32gcc1:i386
Package: lib32gcc1:i386
Versions:

Reverse Depends:
  nd-tcms-agent:i386,lib32gcc1:i386 1:4.1.1
Dependencies:
Provides:
Reverse Provides:

Aonde isso foi? Eu juro que foi aqui há um minuto atrás ...

Adivinha o quê? Estava escondido atrás do sufixo :i386 :

# apt-cache showpkg lib32gcc1
Package: lib32gcc1
Versions:
1:4.9.3-0ubuntu4 (/var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_trusty-updates_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language:
             File: /var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_trusty_main_binary-amd64_Packages
              MD5: a31c67d540f86442c895f2663cb4d5c9
 Description Language: de
             File: /var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_trusty_main_i18n_Translation-de
              MD5: a31c67d540f86442c895f2663cb4d5c9
 Description Language: en
             File: /var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_trusty_main_i18n_Translation-en
              MD5: a31c67d540f86442c895f2663cb4d5c9

1:4.9-20140406-0ubuntu1 (/var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_trusty_main_binary-amd64_Packages)
 Description Language:
             File: /var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_trusty_main_binary-amd64_Packages
              MD5: a31c67d540f86442c895f2663cb4d5c9
 Description Language: de
             File: /var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_trusty_main_i18n_Translation-de
              MD5: a31c67d540f86442c895f2663cb4d5c9
 Description Language: en
             File: /var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_trusty_main_i18n_Translation-en
                  MD5: a31c67d540f86442c895f2663cb4d5c9


Reverse Depends:
  nvidia-352-updates,lib32gcc1
  nvidia-352,lib32gcc1
  nvidia-340-updates,lib32gcc1
  nvidia-340,lib32gcc1
  nvidia-304-updates,lib32gcc1
  nvidia-304,lib32gcc1
  fglrx-updates-core,lib32gcc1
  fglrx-core,lib32gcc1
  libx32go5,lib32gcc1 1:4.1.1
  libx32gcc-4.8-dev,lib32gcc1 1:4.8.4-2ubuntu1~14.04.3
  lib32stdc++6-4.8-dbg,lib32gcc1 1:4.1.1
  lib32stdc++6,lib32gcc1 1:4.1.1
  lib32objc4,lib32gcc1 1:4.1.1
  lib32go5,lib32gcc1 1:4.1.1
  lib32go4,lib32gcc1 1:4.1.1
  lib32gfortran3,lib32gcc1 1:4.4.0
  lib32gcc1-dbg,lib32gcc1 1:4.9.3-0ubuntu4
  lib32gcc-4.8-dev,lib32gcc1 1:4.8.4-2ubuntu1~14.04.3
  lib32asan0,lib32gcc1 1:4.1.1
  brother-lpr-drivers-extra,lib32gcc1 1:4.1.1
  lib32stdc++6-4.6-dbg,lib32gcc1 1:4.1.1
  lib32stdc++6-4.4-dbg,lib32gcc1 1:4.1.1
  lib32objc3,lib32gcc1 1:4.1.1
  lib32go0,lib32gcc1 1:4.1.1
  gcc-4.6-multilib,lib32gcc1 1:4.6.4-6ubuntu2
  gcc-4.4-multilib,lib32gcc1 1:4.4.7-8ubuntu1
  nvidia-331-updates,lib32gcc1
  nvidia-331,lib32gcc1
  nvidia-304-updates,lib32gcc1
  nvidia-304,lib32gcc1
  fglrx-updates,lib32gcc1
  fglrx,lib32gcc1
  libx32go5,lib32gcc1 1:4.1.1
  libx32gcc-4.8-dev,lib32gcc1 1:4.8.2-19ubuntu1
  libx32gcc-4.7-dev,lib32gcc1 1:4.7.3-12ubuntu1
  lib32stdc++6-4.8-dbg,lib32gcc1 1:4.1.1
  lib32stdc++6-4.7-dbg,lib32gcc1 1:4.1.1
  lib32stdc++6,lib32gcc1 1:4.1.1
  lib32objc4,lib32gcc1 1:4.1.1
  lib32go5,lib32gcc1 1:4.1.1
  lib32go4,lib32gcc1 1:4.1.1
  lib32gfortran3,lib32gcc1 1:4.4.0
  lib32gcc1-dbg,lib32gcc1 1:4.9-20140406-0ubuntu1
  lib32gcc-4.8-dev,lib32gcc1 1:4.8.2-19ubuntu1
  lib32gcc-4.7-dev,lib32gcc1 1:4.7.3-12ubuntu1
  lib32asan0,lib32gcc1 1:4.1.1
Dependencies:
1:4.9.3-0ubuntu4 - gcc-4.9-base (5 4.9.3-0ubuntu4) libc6-i386 (2 2.2.4)
1:4.9-20140406-0ubuntu1 - gcc-4.9-base (5 4.9-20140406-0ubuntu1) libc6-i386 (2 2.2.4)
Provides:
1:4.9.3-0ubuntu4 -
1:4.9-20140406-0ubuntu1 -
Reverse Provides:

Você também deve saber que eu não adicionei esses Depends: ao meu pacote manualmente. debhelper fez. E eu sei que isso pode não ser diretamente o seu problema, mas se você souber quem o cara que teve a maravilhosa idéia de adicionar o: sufixo a pacotes "estrangeiros" é, por favor esfregue o nariz nisto, enquanto eu estou procurando uma solução alternativa!

Ou, pode ser que eu esteja entendendo tudo errado ...

Obrigado e boa sorte!

    
por ssz 26.10.2016 / 15:34

1 resposta

1

E aqui vem minha solução alternativa (eu acredito que isso seja uma solução alternativa, e não uma solução!):

Esta é a forma como as informações de controle do meu pacote eram originalmente:

$ dpkg -I ../nd-tcms-agent_1.1-1_i386.deb
 new debian package, version 2.0.
 size 248492 bytes: control archive=624 bytes.
     410 bytes,    10 lines      control
     315 bytes,     4 lines      md5sums
 Package: nd-tcms-agent
 Version: 1.1-1
 Architecture: i386
 Maintainer: [email protected]
 Installed-Size: 929
 Depends: lib32gcc1 (>= 1:4.1.1), lib32stdc++6 (>= 4.4.0), libc6-i386 (>= 2.17), libcurl3-gnutls (>= 7.16.2), libzmq3 (>= 3.2.3+dfsg)
 Section: utils
 Priority: optional
 Homepage: [...]
 Description: [...]

Eu enfatizo: o Depends: nele foi adicionado por debhelper , com base nas informações coletadas durante a criação do pacote.

Então, o que eu fiz foi tentar substituí-los, adicionando um arquivo debian/shlibs.local :

libgcc_s                1       libgcc1 (>= 1:4.1.1)
libstdc++               6       libstdc++6 (>= 4.4.0)
libm                    6       libc6 (>= 2.17)
libpthread              0       libc6 (>= 2.17)
libc                    6       libc6 (>= 2.17)

(Eu não vou entrar nos detalhes do que está lá, há muitas informações sobre isso online e nos manuais)

E agora, a informação de controle do meu pacote diz:

$ dpkg -I ../nd-tcms-agent_1.1-1_i386.deb
 new debian package, version 2.0.
 size 248320 bytes: control archive=620 bytes.
      401 bytes,    10 lines      control
      315 bytes,     4 lines      md5sums
  Package: nd-tcms-agent
  Version: 1.1-1
  Architecture: i386
  Maintainer: [email protected]
  Installed-Size: 929
  Depends: libc6 (>= 2.17), libcurl3-gnutls (>= 7.16.2), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), libzmq3 (>= 3.2.3+dfsg)
  Section: utils
  Priority: optional
  Homepage: [...]
  Description: [...]

Agora, se todas as dependências das bibliotecas mencionadas no debian / shlibs.local forem realmente resolvidas corretamente com base no arco correto, ou não, será deixado para o seu / melhor palpite (talvez eu possa ter colocado o anyhting lá que resolvido para um pacote que tem uma variante: i386 - é por isso que eu considero isso como uma solução alternativa, e não uma solução!); o que é certo é que agora meu pacote é instalado (e o seu também, provavelmente, se você tivesse enfrentado o mesmo problema) ...

Felicidades!

    
por ssz 27.10.2016 / 13:51