Я использую raspberry pi (который я использую в качестве веб-сервера для своего консалтингового бизнеса), и я пытаюсь установить пакет php7.0-dev. Однако, если у меня есть эта проблема:
sudo apt-get install php7.0-dev
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:
php7.0-dev : Depends: libtool (>= 2.4.6-0.1~) but 2.4.2-1.11 is to be installed
Recommends: dh-php but it is not going to be installed
Recommends: pkg-php-tools but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Проблема, похоже, в том, что libtool - это старая версия в репозиториях для пи. Чтобы обойти это, я просто скачал исходный код libtool 2.4.6 и установил его. Однако, если я снова запустил вышеуказанное, я все равно получаю ту же ошибку.
Есть ли способ указать APT использовать установленный мной libtool для этой зависимости?
Вот путь для libtool
apt-cache showpkg libtool
Package: libtool
Versions:
2.4.6-2 (/var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_stretch_main_binary-armhf_Packages)
Description Language:
File: /var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_jessie_main_binary-armhf_Packages
MD5: 40ea3da4a4ea75419ad95742898b3e52
2.4.2-1.11 (/var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_jessie_main_binary-armhf_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_jessie_main_binary-armhf_Packages
MD5: 40ea3da4a4ea75419ad95742898b3e52
Reverse Depends:
dh-autoreconf,libtool 2.4.2
xfce4-dev-tools,libtool
wireshark-dev,libtool
ui-auto,libtool 1.5.8
slapos-node-unofficial,libtool
shtool,libtool
ruby-build,libtool
proftpd-dev,libtool
php7.0-dev,libtool 2.4.6-0.1~
php5-dev,libtool 2.4.6
php5-dev,libtool 2.2
multimedia-devel,libtool
mm-common,libtool
mate-common,libtool
libtool-bin,libtool 2.4.2-1.8~
libtool-bin,libtool 2.4.6-2
liblua5.1-0-dev,libtool
libltdl-dev,libtool 1.5.20
libltdl-dev,libtool 1.5.20
libltdl-dev,libtool
gnome-common,libtool
gcc,libtool
dh-lua,libtool
dh-autoreconf,libtool 2.4.2
autoconf,libtool
anjuta,libtool
xfce4-dev-tools,libtool
wireshark-dev,libtool
ui-auto,libtool 1.5.8
slapos-node-unofficial,libtool
shtool,libtool
ruby-build,libtool
proftpd-dev,libtool
php5-dev,libtool 2.2
php5-dev,libtool 2.2
packaging-dev,libtool
multimedia-devel,libtool
mm-common,libtool 1.5
mate-common,libtool
lua5.1-policy-dev,libtool
libtool-bin,libtool 2.4.2-1.8~
libtool-bin,libtool 2.4.2-1.11
libsidl-dev,libtool
liblua5.2-dev,libtool
liblua5.1-0-dev,libtool
libltdl-dev,libtool 1.5.20
libltdl-dev,libtool 1.5.20
libltdl-dev,libtool
libdune-common-dev,libtool
grid-packaging-tools,libtool
gnulib,libtool
gnome-common,libtool
gcc,libtool
freehdl,libtool
drizzle-plugin-dev,libtool
dh-lua,libtool
dh-autoreconf,libtool 2.4.2
autoconf,libtool
anjuta,libtool
Dependencies:
2.4.6-2 - gcc (16 (null)) c-compiler (0 (null)) cpp (0 (null)) libc6-dev (16 (null)) libc-dev (0 (null)) file (0 (null)) autotools-dev (0 (null)) libtool-doc (0 (null)) autoconf (4 2.50) automaken (0 (null)) gfortran (16 (null)) fortran95-compiler (0 (null)) gcj-jdk (0 (null)) libltdl-dev (0 (null)) autoconf (1 2.12) automake (1 1.3) libtool1.4 (0 (null))
2.4.2-1.11 - gcc (16 (null)) c-compiler (0 (null)) cpp (0 (null)) libc6-dev (16 (null)) libc-dev (0 (null)) file (0 (null)) autotools-dev (0 (null)) libtool-doc (0 (null)) autoconf (4 2.50) automaken (0 (null)) gfortran (16 (null)) fortran95-compiler (0 (null)) gcj-jdk (0 (null)) libltdl-dev (0 (null)) autoconf (1 2.12) automake (1 1.3) libtool1.4 (0 (null))
Provides:
2.4.6-2 -
2.4.2-1.11 -
Reverse Provides:
Вы этого не сделаете. Механизм зависимости пакетов apt полностью основан на именах и версиях пакетов. Что вам нужно сделать, так это найти более новый пакет (или построить тот), который удовлетворяет зависимостям, и использовать его. Все остальное - безумие. Репо у вас есть php7.0-dev
from должен предоставить все свои зависимости (или, по крайней мере, сказать вам, откуда их взять). То, что это не означает, что это не качественный источник пакетов, и поэтому вы вторгаетесь на опасную территорию. Если это ваше, то читайте дальше ...
Если вы хотите приклеить ружье клейкой лентой к ноге и подать спусковой крючок до легкого касания, вы можете использовать пакет под названием equivs
для установки «фиктивного» пакета, который сам по себе не имеет файлов, но существует для удовлетворения зависимости. Однако, как подсказывает моя красочная метафора, подобные вещи почти наверняка вернутся и вызовут у вас неисчислимые проблемы в будущем, и я считаю, что делать это в производственной системе равносильно халатности.