Pacote atualizado do Apt-get de 32 bits para 64 bits não suportado - por que e como reverter?

1

Recentemente, o repositório de qtox teve que alterar seu domínio e o novo contém apenas 64 bits no momento. No entanto, estou em 15.04 32 bits e não consigo executar nenhum software de 64 bits.

Agora, quando executei pela última vez apt-get upgrade ou apt-get dist-upgrade (não me lembro exatamente qual), também atualizei o pacote qtox para a versão mais recente no repositório. Mas esta era uma versão de 64 bits! Agora não consigo mais executar qtox :

$ qtox
bash: /usr/bin/qtox: cannot execute binary file: Exec format error
$ file $(which qtox)
/usr/bin/qtox: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped
$ uname -a
Linux UbuntuDesktop 3.19.0-26-generic #27-Ubuntu SMP Tue Jul 28 18:26:33 UTC 2015 i686 i686 i686 GNU/Linux

Agora eu tenho que ter certeza que apt-get não irá mais instalar / atualizar para nenhum pacote de 64bits! Não faço ideia se isso é um bug no apt-get , um pacote ou repositório mal configurado ou qualquer outra coisa, preciso descobrir a causa e evitar que isso aconteça novamente!

Então, minha pergunta em poucas palavras:

Por que o apt-get instalou um pacote de 64 bits em um sistema de 32 bits e como evitá-lo no futuro?

Atualização:

Eu verifiquei as informações que eu poderia obter sobre o pacote qtox de apt-cache e dpkg -I do pacote .deb baixado diretamente e encontrei o seguinte. Parece-me que se o tivesse configurado o seu repositório incorretamente, porque essas saídas são semelhantes a um pacote de 32 bits. E ainda contém o domínio antigo. Eles provavelmente esqueceram de atualizar suas informações e traiu apt-get ?

$ apt-cache show qtox
Package: qtox
Priority: extra
Section: default
Installed-Size: 2168
Maintainer: Tox Foundation <[email protected]>
Architecture: i386
Version: 1.1~git20150707.cfeeb03-97
Replaces: qtox-unity
Depends: libopenal1, libqt5core5a, libqt5gui5, libqt5network5, libqt5widgets5, libqt5xml5, libqt5opengl5, libqt5sql5, libqt5sql5-sqlite, apt-transport-https, libqt5svg5, libappindicator1, libqrencode3, libavformat-ffmpeg56|libavformat-tox56, libavdevice-ffmpeg56|libavdevice-tox56, libavcodec-ffmpeg56|libavcodec-tox56, libavutil-ffmpeg54|libavutil-tox54, libswscale-ffmpeg3|libswscale-tox3
Filename: pool/main/q/qtox/qtox_1.1~git20150707.cfeeb03-97_i386.deb
Size: 2217972
MD5sum: bc59427d056da669e52955169266911b
SHA1: c6797a04d13d929a068c213913f359719b377735
SHA256: 3405027807573b98a61c33f3aad911f40cf0b0737a95001e951a82937ee5afdd
Description: no description given
Description-md5: c0af8b65ef8df63b3bfb124d96da1778
Homepage: https://tox.im
Vendor: Tox Foundation
License: GPLv3+

$ apt-cache policy qtox
qtox:
  Installed: 1.1~git20150707.cfeeb03-97
  Candidate: 1.1~git20150707.cfeeb03-97
  Version table:
 *** 1.1~git20150707.cfeeb03-97 0
        500 https://pkg.tox.chat/ nightly/main i386 Packages
        100 /var/lib/dpkg/status

$  dpkg -I qtox_1.1~git20150707.cfeeb03-97_i386.deb
 new debian package, version 2.0.
 size 2217972 bytes: control archive=2341 bytes.
     677 bytes,    13 lines      control              
    1298 bytes,    17 lines      md5sums              
    2716 bytes,    93 lines   *  postinst             #!/bin/sh
 Package: qtox
 Version: 1.1~git20150707.cfeeb03-97
 License: GPLv3+
 Vendor: Tox Foundation
 Architecture: i386
 Maintainer: Tox Foundation <[email protected]>
 Installed-Size: 2168
 Depends: libopenal1, libqt5core5a, libqt5gui5, libqt5network5, libqt5widgets5, libqt5xml5, libqt5opengl5, libqt5sql5, libqt5sql5-sqlite, apt-transport-https, libqt5svg5, libappindicator1, libqrencode3, libavformat-ffmpeg56|libavformat-tox56, libavdevice-ffmpeg56|libavdevice-tox56, libavcodec-ffmpeg56|libavcodec-tox56, libavutil-ffmpeg54|libavutil-tox54, libswscale-ffmpeg3|libswscale-tox3
 Replaces: qtox-unity
 Section: default
 Priority: extra
 Homepage: https://tox.im
 Description: no description given
    
por Byte Commander 07.08.2015 / 10:23

1 resposta

1

Obviamente, o nome do pacote e a meta informação informam ao apt-get que é um pacote de 32 bits, mas isto foi falsamente configurado pelos mantenedores.

Até que eles consertassem isso e atualizassem seu repositório com um pacote real de 32 bits, usei o seguinte script para verificar a verdadeira arquitetura do pacote:

#! /bin/bash

dir=$(mktemp -d)
debfile="*_i386.deb"
cd "$dir"

echo "Downloading package..."
wget https://pkg.tox.chat/pool/main/q/qtox/ -r -l 1 -nd -A "$debfile" -q

dpkg -x $debfile "$dir"
printf "\n%s\n\n" $debfile

dpkg --info $debfile | \
    awk '/Architecture/ {printf "defined dpkg architecture is:\t%s\n", $2}'

find "$dir" -type f -exec file -b {} \; | \
        sort -u | \
        awk '/ELF/ {printf "real executable format is: \t\t%s\n", $0}'

rm -rf "$dir"
exit 0

(Partes do script foram tiradas da resposta do AB aqui .)

Eu o salvei como ~/bin/qtoxtest.sh e o tornei executável com chmod +x ~/bin/qtoxtest.sh .

O script atualmente fornece a seguinte saída de exemplo, que nos informa que o pacote ainda não está declarado corretamente:

$  qtoxtest.sh 
Downloading package...

qtox_1.1~git20150707.cfeeb03-97_i386.deb

defined dpkg architecture is:   i386
real executable format is:      ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped
    
por Byte Commander 16.08.2015 / 16:24