Назад | Перейти на главную страницу

Установить пакет из oldstable (wheezy) в стабильный (jessie)

Я хочу установить пакет, которого нет в jessie from wheezy. Это как бэкпорт наоборот. Мне нужен gcc-4.7, но jessie предоставляет только gcc-4.9. Unstable предоставляет gcc-4.7 только для архитектуры arm. Я планирую добавить репозиторий wheezy в свои ресурсы и установить его командой

apt install gcc-4.7/wheezy

Это относительно безопасно? Могу ли я при этом рисковать проблемами зависимости?

Вы можете попробовать перекомпилировать исходный пакет deb, полученный от wheezy, на своем экземпляре jessie. Обратите внимание, что я предполагаю gcc-4.7 можно скомпилировать без ошибок, используя gcc-4.9, что не является верной ставкой.

Однако общая процедура должна быть следующей:

  1. Добавьте бинарные файлы wheezy в качестве источника в свой /etc/apt/sources.list файл, например deb http://ftp.us.debian.org/debian/ wheezy main contrib
  2. Добавьте источники хрипов в качестве источника в свой /etc/apt/sources.list файл, например deb-src http://ftp.us.debian.org/debian/ wheezy main contrib
  3. бегать apt-get update
  4. скачать gcc-4.7 исходный пакет: apt-get source gcc-4.7
  5. установить gcc-4.7 build-dependencies, запустив apt-get build-dep gcc-4.7 (на самом деле это может быть довольно сложно, потому что может быть ряд конфликтов с вашими текущими установленными пакетами, и вам нужно разобраться с ними вручную)
  6. войдите в каталог, где apt-get скачано gcc-4.7 исходный код на шаге 4, например cd gcc-4.7 или как там это называется
  7. сборка gcc-4.7: dpkg-buildpackage -us -uc
  8. предполагая, что он строится без ошибок, установите сгенерированные пакеты, которые вы найдете в родительском каталоге

Я написал эту процедуру по памяти, поэтому, пожалуйста, отнеситесь к ней с недоверием и настройте команды там, где это необходимо. В частности, я не уверен dpkg-buildpackage -us и -ucварианты существовали в jessie, если они просто не использовали их.

Скорее всего, он не будет работать безупречно. Обычно пути и двоичные файлы из старых версий конфликтуют с новыми. Иногда кто-то делает резервную копию, и когда это происходит, обычно требуется изменить пути, чтобы все работало в нестандартных каталогах. Это заставляет пакет работать, но никакой другой пакет не найдет своих зависимостей.

Одна вещь, которую вы, возможно, захотите попробовать, - это запустить исполняемый файл в контейнере докера. Вы можете создать контейнер предыдущей версии Debian, установить там минимальное программное обеспечение, необходимое для запуска исполняемого файла, а затем создать образ контейнера. Все зависимости будут внутри контейнера, и вы можете просто запустить его с помощью docker run <image> <command>. Это может сэкономить время для некоторого программного обеспечения командной строки, даже для серверного программного обеспечения, но может быть беспорядком, если затронутый исполняемый файл нуждается в Xserver или административных привилегиях.