У меня есть важное приложение PyQt5, которое все еще находится в стадии перехода на этапы Python3.
K / Ubuntu 20.04 удалил необходимый пакет для установки PyQt5 для Python 2.7. Я понимаю важность перехода этих приложений на Py3, но я пользователь, которому все еще нужны приложения. Я рад, что Ubuntu сделал Python 2.7 по-прежнему доступным, даже если они сделали Py3 по умолчанию. Но мне нужен постоянный доступ к этому и нескольким другим приложениям, и я хотел бы иметь возможность обновить все свои системы до Ubuntu 20.04.
Скорее всего, мне нужны PyQt5 и QtWebKit (да, я знаю, что QtWebKit также устарел).
Я стараюсь не вносить в мою машину слишком много беспорядка. Хотелось бы элегантного и простого метода.
До сих пор я пробовал множество заклинаний pip install (хотя я смиренно соглашусь, если кто-то сможет заставить его работать через Pip).
Я добавил в предыдущие репозитории deb из предыдущих версий Ubuntu, Eoan и Bionic, и пока безуспешно. Я не сомневаюсь, что есть способ сделать этот подход успешным ... но я его еще не нашел. Я бы хотел помочь.
У меня много коллег, которые тоже используют это программное обеспечение. Лучшим ответом для меня был бы тот, на который я мог бы легко указать другим, и им не нужно было бы владеть вселенной Linux. Желательно не «скачивать исходный код и начинать компилировать».
Заранее спасибо!
Лучшее временное решение на данный момент (с оговоркой):
$ wget http://us.archive.ubuntu.com/ubuntu/pool/universe/p/pyqt5/python-pyqt5_5.10.1+dfsg-1ubuntu2_amd64.deb
$ wget http://us.archive.ubuntu.com/ubuntu/pool/universe/p/pyqt5/python-pyqt5.qtwebkit_5.10.1+dfsg-1ubuntu2_amd64.deb
$ dpkg -i --force-depends python-pyqt5_5.10.1+dfsg-1ubuntu2_amd64.deb
$ dpkg -i python-pyqt5.qtwebkit_5.10.1+dfsg-1ubuntu2_amd64.deb
Это позволит моему приложению работать. Однако каждый раз, когда я apt install
или apt upgrade
, он жалуется на сломанную зависимость и отказывается устанавливать или обновлять, пока я не решу эту проблему. Вероятно, лучшим ответом будет создание пакета .deb, который предоставляет qtbase-abi-5-9-5
, что и является нарушенной зависимостью. Кажется, это способ Ubuntu заставить перехватчики Python2.7 QT не работать.
У кого-нибудь есть идеи по лучшему решению (пока приложение не будет перенесено на Py3)? Есть ли способ заставить apt
работать правильно, игнорируя эту конкретную нарушенную зависимость?
попытка установить пакеты Bionic python2/pyqt5 в 20.04 прерывается, потому что 18.04 python-pyqt5
требует qtbase-abi-5-9-5
, который вызывает серьезные конфликты 20.04, если вы попытаетесь установить его. однако этот пакет не предоставляет ничего необходимого. поэтому предоставьте свой собственный, чтобы выполнить эту зависимость.
вот решение (высокий уровень):
bionic
обратно в свои репозитории aptподробное решение:
# create the package structure:
cd /tmp
mkdir qtbase-abi-fake
mkdir -p qtbase-abi-fake/DEBIAN
mkdir -p qtbase-abi-fake/usr/lib/qtbase-abi-fake
touch qtbase-abi-fake/usr/lib/qtbase-abi-fake/nothing.txt
# create the deb control file (the guts):
cat <<_EOF > qtbase-abi-fake/DEBIAN/control
Package: qtbase-abi-fake
Version: 5.9.5
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: atlas
Description: Fakes out python-pyqt5 from Ubuntu 18.04 to work on 20.04
Provides: qtbase-abi-5-9-5
_EOF
# build the qtbase-abi-fake.deb file:
dpkg-deb --build qtbase-abi-fake
# install your newly created deb file:
sudo dpkg -i qtbase-abi-fake.deb
bionic
в репозитории apt:echo 'deb http://us.archive.ubuntu.com/ubuntu/ bionic universe multiverse' | sudo tee /etc/apt/sources.list.d/bionic-helper.list
sudo apt update
sudo apt install python-pyqt5.qtwebkit
это должно дать вам рабочую среду python2 pyqt5 с qtwebkit.
Это исправление заставляет Bionic 18.04 python-pyqt5
работать на Focal 20.04, поэтому все пакеты, которые зависят от него (например, qtwebkit), также работают.
После того, как вы создадите это, вы сможете поделиться им со своими друзьями. Я бы предоставил файл deb здесь, но нет простого способа сделать это. плюс таким образом, вы можете видеть, что происходит на каждом этапе.
надеюсь, это поможет! @