Недавно репозиторий qtox
должен был изменить его домен, и новый только содержит сборки только на 64 бита в данный момент. Однако я нахожусь на 15,04 32 битах и не могу запустить программное обеспечение на 64 бита.
Теперь, когда я в последний раз работал apt-get upgrade
или apt-get dist-upgrade
(не может помнить, какой точно), это также обновило пакет qtox
к последней версии в репозитории. Но это было версией на 64 бита! Теперь я не могу запуститься 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
Теперь я должен удостовериться это apt-get
не будет больше устанавливать/обновлять ни на каких пакетах на 64 бита! Никакая идея, если это - ошибка в apt-get
, плохо настроенный пакет или репозиторий или что-либо еще, я должен узнать причину и предотвратить это снова!
Так мой вопрос вкратце:
Почему сделал apt-get
установите пакет на 64 бита в 32bit-единственной системе и как я избегаю этого в будущем?
Я проверил информацию, которую я мог получить о qtox
пакет от apt-cache
и dpkg -I
из непосредственно загруженного .deb пакета и найденный следующим. Мне как то, кажется, если настроил их репозиторий неправильно, потому что те выводы похожи пакета на 32 бита. И это все еще содержит старый домен. Они, вероятно, забывали обновлять свою информацию и обманутый apt-get
?
$ apt-cache show qtox
Package: qtox
Priority: extra
Section: default
Installed-Size: 2168
Maintainer: Tox Foundation <support@tox.im>
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 <support@tox.im>
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
Очевидно, имя пакета и метаинформация оба говорят apt-get
то, что это - пакет на 32 бита, но это было настроено ложно специалистами по обслуживанию.
Пока они не зафиксировали это и обновили их репозиторий с реальным пакетом на 32 бита, я использую следующий сценарий для проверки истинной архитектуры пакета:
#! /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
(Части сценария взяты из ответа A.B.'s здесь.)
Я сохранил его как ~/bin/qtoxtest.sh
и сделанный этим исполняемый файл с chmod +x ~/bin/qtoxtest.sh
.
Сценарий в настоящее время дает следующий вывод в качестве примера, который говорит нам, что пакет правильно все еще не объявляется:
$ 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