Я закончил с Gtk-Message: не удалось загрузить модуль "overlay-scrollbar" из-за необходимости 32-битного overlay-scrollbar-gtk2
в 64-битном amd64
Ubuntu - который лучше описано в Как установить 32-разрядные библиотеки, если они продолжают иметь неустановимые зависимости? ...
В принципе, если я sudo apt-get install overlay-scrollbar-gtk2:i386
, он выйдет из строя 14.04, поскольку считается, что он зависит от overlay-scrollbar:i386
, однако только 14.04 устанавливается overlay-scrollbar:all
.
Итак, я мог бы попробовать apt-get download
с dpkg --ignore-depends ...
, как в Как мне установить 32-битные библиотеки, когда они продолжают иметь неустановимые зависимости? - но это не совсем работало. ..
Итак, я попытался следовать указаниям Как изменить зависимости и сделал что-то вроде этого:
sudo apt-get remove --purge overlay-scrollbar-gtk2:i386
apt-get download overlay-scrollbar-gtk2:i386
dpkg-deb -x overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_i386.deb tmpdir-1404
dpkg-deb --control overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_i386.deb tmpdir-1404/DEBIAN
nano tmpdir-1404/DEBIAN/control ## edit, see below
dpkg -b tmpdir-1404 overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_hacked_i386.deb
# dpkg-deb: warning: 'tmpdir-1404/DEBIAN/control' contains user-defined field 'XB-Ignore'
# dpkg-deb: warning: ignoring 1 warning about the control file(s)
В редакторе nano
я делаю так же, как в Игнорирование определенных неудовлетворенных зависимостей с помощью aptitude? - Я комментирую зависимость, используя тег XB *:
...
Depends: libc6 (>= 2.4), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.37.3), libgt$
XB-Ignore: overlay-scrollbar, # hack: ignore this dependency for i386
...
И теперь установка взломанного .deb проходит без проблем:
$ sudo dpkg -i overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_hacked_i386.deb
Selecting previously unselected package overlay-scrollbar-gtk2:i386.
(Reading database ... 227214 files and directories currently installed.)
Preparing to unpack overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_hacked_i386.deb ...
Unpacking overlay-scrollbar-gtk2:i386 (0.2.16+r359+14.04.20131129-0ubuntu1) ...
Setting up overlay-scrollbar-gtk2:i386 (0.2.16+r359+14.04.20131129-0ubuntu1) ...
Processing triggers for libc-bin (2.19-0ubuntu6.7) ...
Выглядит хорошо (и на самом деле, кажется, хорошо - потому что когда я запускаю 32-битные программы, которые раньше жаловались на Gtk-Message: Failed to load module "overlay-scrollbar"
, они больше не жалуются) - но теперь, когда я делаю apt-get upgrade
, я получаю сообщение «пакеты были сохранены»:
$ sudo apt-get update
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
overlay-scrollbar-gtk2:i386
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
... но что еще более странно, когда я делаю apt-get dist-upgrade
, там нет предупреждения вообще?!:
$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Эта страница apt-get dist-upgrade не исправляет «Следующие пакеты были сохранены» также отмечает:
Это означает, что они были задержаны по более сложной причине, чем новые зависимости или нуждающиеся в val других пакетов.
Итак, кто-нибудь знает - какова будет причина для "сдерживания" пакета в этом случае - и как избавиться от этого предупреждения при выполнении update
? Ясно, что я не хочу делать apt-get install
пакета здесь, так как он взломан, и я бы хотел установить его прямо из .deb - и apt-get
не может установить файл .deb напрямую, только dpkg
] может сделать это ...
РЕДАКТИРОВАТЬ: как @ByteCommander предложил в комментариях, я попытался aptitude
:
$ sudo aptitude upgrade
Resolving dependencies...
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.
Это мало что говорит - это более показательно:
$ sudo aptitude full-upgrade
The following packages will be upgraded:
overlay-scrollbar-gtk2:i386{b}
1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 29.3 kB of archives. After unpacking 0 B will be used.
The following packages have unmet dependencies:
overlay-scrollbar-gtk2:i386 : Depends: overlay-scrollbar:i386 which is a virtual package.
The following actions will resolve these dependencies:
Remove the following packages:
1) overlay-scrollbar-gtk2:i386
Accept this solution? [Y/n/q/?] q
Abandoning all efforts to resolve these dependencies.
Abort.
Хм ... Я думал, что уже удалил зависимость от overlay-scrollbar:i386
??!
Кроме того, здесь apt-cache policy
согласно комментарию @ByteCommander:
$ apt-cache policy overlay-scrollbar:i386 overlay-scrollbar
overlay-scrollbar:i386:
Installed: (none)
Candidate: (none)
Version table:
overlay-scrollbar:
Installed: 0.2.16+r359+14.04.20131129-0ubuntu1
Candidate: 0.2.16+r359+14.04.20131129-0ubuntu1
Version table:
*** 0.2.16+r359+14.04.20131129-0ubuntu1 0
500 http://dk.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
100 /var/lib/dpkg/status
$ apt-cache policy overlay-scrollbar-gtk2:i386 overlay-scrollbar-gtk2
overlay-scrollbar-gtk2:i386:
Installed: 0.2.16+r359+14.04.20131129-0ubuntu1
Candidate: 0.2.16+r359+14.04.20131129-0ubuntu1
Version table:
0.2.16+r359+14.04.20131129-0ubuntu1 0
500 http://dk.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
*** 0.2.16+r359+14.04.20131129-0ubuntu1 0
100 /var/lib/dpkg/status
overlay-scrollbar-gtk2:
Installed: 0.2.16+r359+14.04.20131129-0ubuntu1
Candidate: 0.2.16+r359+14.04.20131129-0ubuntu1
Version table:
*** 0.2.16+r359+14.04.20131129-0ubuntu1 0
500 http://dk.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
100 /var/lib/dpkg/status
Хммм. ... может быть что-то с /var/lib/dpkg/status
, но еще не уверен, что это ...
Хорошо, я думаю, что решил его - но я не уверен, насколько персистентный это будет...
В основном до сих пор я предположил, что единственное определение зависимостей для пакета - то, что отмечено в .deb
файл, который, поскольку отмечает OP, был уже взломан с помощью a XB-Ignore:
"комментарий" тега.
Однако это, оказывается, НЕ имеет место - существует на самом деле дополнительный файл, где зависимости определяются, которому подсказывают в выводе apt-cache policy overlay-scrollbar-gtk2:i386
:
Version table:
0.2.16+r359+14.04.20131129-0ubuntu1 0
500 http://dk.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
*** 0.2.16+r359+14.04.20131129-0ubuntu1 0
100 /var/lib/dpkg/status
Так, одно определение находится в /var/lib/dpkg/status
- который в основном наследовался XB-Ignore:
тег от взломанного .deb
когда пакет установлен.
Но затем, нам говорят, что, кажется, существует другая спецификация в http://dk.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
- однако, ясно, это не имя файла, но a deb
спецификация, как используется в /etc/apt/sources.list
. Так, где файл связан с этим? Оказывается, это находится в (в моем случае):
/var/lib/apt/lists/dk.archive.ubuntu.com_ubuntu_dists_trusty_main_binary-i386_Packages
Так, я понял, что в этом файле, у меня есть "оригинальная", исходная спецификация:
Package: overlay-scrollbar-gtk2
Priority: optional
Section: libs
Installed-Size: 118
Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
Architecture: i386
Source: overlay-scrollbar
Version: 0.2.16+r359+14.04.20131129-0ubuntu1
Replaces: liboverlay-scrollbar-0.2-0 (<< 0.2.16+r348), liboverlay-scrollbar-0.2-dev (<< 0.2.16+r348)
Depends: overlay-scrollbar, libc6 (>= 2.4), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.37.3), libgtk2.0-0 (>= 2.24.6-0ubuntu4)
Conflicts: liboverlay-scrollbar-0.2-0 (<< 0.2.16+r348), liboverlay-scrollbar-0.2-dev (<< 0.2.16+r348)
Filename: pool/main/o/overlay-scrollbar/overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_i386.deb
Size: 29286
MD5sum: 261bcaed3e0a73ebab73c25514dfdab5
SHA1: eec7a0e958ce41a441883ce305de2fc8ff4e8aac
SHA256: 4f18ad70e6ce0fbb59e79d2ca8fc43ffafd13011dc3db0dcd65bffeddf23379b
Description: GTK 2 module for overlay scrollbars
Multi-Arch: same
Homepage: http://launchpad.net/ayatana-scrollbar
Description-md5: 1d3f21e2d8af7452b22c5b3bf608dfba
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 5y
Task: ubuntu-desktop, ubuntu-usb, edubuntu-desktop, edubuntu-usb
А-ч, существует старое то же Depends:
снова - таким образом, я просто пытаюсь заменить, Зависит строка в это:
Depends: libc6 (>= 2.4), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.37.3), libgtk2.0-0 (>= 2.24.6-0ubuntu4)
XB-Ignore: overlay-scrollbar, # hack: ignore this dependency for i386
... и поэтому теперь, и этот файл, и /var/lib/dpkg/status
покажите ту же зависимость - и теперь когда я сделаю upgrade
:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
... У меня больше нет проблем... Надежда, которая была этим.