Укажите APT, чтобы он использовал пакет, установленный из исходного кода для зависимости

Я использую 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:
0
задан 15 August 2017 в 07:43
1 ответ

Не знаете. Механизм зависимости пакетов apt полностью основан на именах и версиях пакетов. Что вам нужно сделать, так это найти более новый пакет (или построить тот), который удовлетворяет зависимостям, и использовать его. Все остальное - безумие. Репо, из которого вы получили php7.0-dev , должно предоставлять все его зависимости (или, по крайней мере, указывать, откуда их взять). То, что это не означает, что это не качественный источник пакетов, и поэтому вы вторгаетесь на опасную территорию. Если это ваша особенность, то читайте дальше ...

Если вы хотите приклеить ружье изолентой к ноге и довести спусковой крючок до положения перышка, вы можете использовать пакет под названием эквиваленты , чтобы установить «фиктивный» пакет, который сам по себе не имеет файлов, но существует для удовлетворения зависимости. Однако, как подсказывает моя красочная метафора, подобные вещи почти наверняка вернутся и вызовут у вас неисчислимые проблемы в будущем, и я считаю, что делать это в производственной системе равносильно небрежности.

2
ответ дан 4 December 2019 в 13:30

Теги

Похожие вопросы