3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Dpkg установка с зависимостями

HackWare.ru

Бывает что нужно установить пакет .deb для которого в стандартных репозиториях отсутствует нужная версия зависимости. Например, в зависимостях прописан пакет libcurl3, а в системе доступен только libcurl4; или в зависимостях libssl1.0.0, а в системе имеется только libssl1.0.2.

Сам по себе такой пакет .deb обычно берётся не из стандартного репозитория, поэтому надеяться, что проблема будет исправлена в будущем, особо не приходится.

При этом высока вероятность, что интересующий нас .deb пакет будет нормально работать и с libcurl4 вместо libcurl3 (может даже лучше будет работать) и с libssl1.0.2 вместо libssl1.0.0 — и так далее по аналогии, у вас могут быть свои собственные зависимости, которые вызывают проблемы.

Сразу оговорюсь, не стоит делать то, что здесь показано, с драйверами, особенно с драйверами видеокарты — слишком велика вероятность получить систему, которая загружается в чёрный экран. А с какими-нибудь прикладными программами это вполне можно попробовать — в конце-концов, если не заработает, то не заработает — просто удалим её, хуже уже не будет.

Я покажу, как подправить список зависимостей в пакете .deb на примере Viber, заодно мы немного познакомимся со структурой пакета .deb. Не то чтобы Viber это мой любимый мессенджер для общения — просто его установка прям классический пример того, о чём я говорил в самом начале: жёстко прописанные зависимости определённых версий, но программа прекрасно работает и с более новыми версиями.

Для установки пакета его нужно скачать с официального сайта:

Пакет можно установить с помощью команды dpkg и ключей —ignore-depends:

но это приведёт к тому, что поломается apt. Будут показываться сообщения о неудовлетворённых зависимостях:

И уже не обновить систему, не установить новые пакеты пока не удалите программу, вызывающую эти проблемы:

Поэтому лучше пойти другим путём.

По большому счёту, файл .deb — это архив, в который собраны файлы программы (исполняемые файлы, файлы настроек, конфигурационные файлы — всё то, что нужно для запуска и работы программы), а также служебные файлы, в которых содержится описание пакета, требуемые зависимости и прочая метаинформация.

Распаковываем скаченный пакет deb:

Для распаковки используем утилиту ar, которая предназначена для создания, модификации и извлечения из архивов.

В результате будут извлечены следующие файлы:

  • control.tar.gz — архив с файлами в которых содержится метаинформация
  • data.tar.xz — архив с файлами самой программы
  • debian-binary

Вообще, поскольку data.tar.xz содержит саму программу, то может возникнуть идея просто раскидать файлы в системе по нужным путям — это тоже будет работать, но мы сделаем чуть более сложно, но и более правильно.

Распаковываем контрольный архив:

Открываем текстовым редактором файл control:

Найдём там строку, начинающуюся с Depends:

То есть, это и есть список зависимостей.

Скорее всего, свой установочный файл .deb вы уже пробовали установить и уже и так знаете, каких зависимостей не хватает.

Можно сделать проверку следующим образом — берём список, который идёт после Depends:, удаляем запятые, чтобы не нарушить синтаксис apt, и пытаемся установить все эти зависимости просто дописав этот список после sudo apt install, получается следующая команда:

Итак, требуется libcurl3, но в системе есть только libcurl4. Я просто меняю в файле control запись libcurl3 на libcurl4.

Ещё один отсутствующий пакет libssl1.0.0. Поскольку указана конкретная версия, можно предположить, что версия в репозитории была обновлена и по этой причине невозможно найти то, что нужно.

Ищем по более короткому описанию версии, то есть, например вместо libssl1.0.0 я ищу libssl1:

Как можно увидеть, найдено целых два варианта: libssl1.0.2 и libssl1.1. На мой взгляд, libssl1.0.2 ближе к libssl1.0.0, поэтому я в файле control меняю запись libssl1.0.0 на libssl1.0.2.

Сохраняем и закрываем файл control.

Теперь собираем установочный файл — делаем это в обратном разбору порядке.

Я уже пробовал, поэтому я знаю, что команда пожалуется на отсутствие файла postrm, поэтому просто создаём пустой файл postrm командой:

Упаковываем всё наше «добро» в control.tar.gz:

Разберём последнюю команду чуть подробнее. Строки pre post раскрываются в следующие:

То есть, фактически в создаваемый архив добавляются файлы postinst, postrm, preinst, prerm. Эти файлы представляют собой скрипты, выполняемые на различных этапах установки/удаления:

  • preinst — выполняется перед установкой пакета
  • postinst — выполняется после установки пакета
  • prerm — выполняется перед удалением пакета
  • postrm — выполняется после удаления пакета

Они являются необязательными — то есть могут отсутствовать. Если команда tar написала, что отсутствует какой-либо файл (например, файл postrm), то отредактируйте эту команду — уберите из списка отсутствующий файл, например, вместо создания postrm можно было записать команду следующим образом:

Продолжаем. Вновь собираем deb:

Устанавливаем наш пофиксенный пакет:

1. Установка программ с помощью команды Dpkg

Dpkg — это менеджер пакетов для Debian и его производных, таких как Ubuntu и Linux Mint. Он используется для установки, сборки, удаления и управления пакетами .deb, но в отличие от других систем управления пакетами Linux, он не может автоматически загружать и устанавливать пакеты вместе со своими зависимостями.

Чтобы установить локальный пакет, используйте команду dpkg с флагом -i вместе с именем пакета, как показано ниже.

Если при установке или запуске программы вы получаете какие-либо ошибки зависимостей, вы можете использовать для разрешения и установки зависимостей команду apt с флагом -f, который сообщает программе о необходимости исправить поврежденные зависимости.

Чтобы удалить пакет, используйте параметр -r или если вы хотите удалить все его файлы, включая файлы конфигурации, вы можете очистить его, используя опцию —purge, как показано ниже.

Установка deb-пакетов с использованием GUI

Если вы предпочитаете использовать графический интерфейс, просто загрузите файл deb и откройте его двойным щелчком.

Откроется центр графического программного обеспечения по умолчанию

Нажмите кнопку «Установить», и откроется диалоговое окно «Аутентификация».

Введите пароль администратора и нажмите кнопку «Проверить подлинность».

Установка может занять некоторое время в зависимости от размера файла и его зависимостей. После установки пакета deb кнопка Install в программном центре Ubuntu изменится на «Удалить».

Все, приложение установлено в вашей системе, и вы можете запустить его из меню приложений.

Неудовлетворенные зависимости в Ubuntu

По английски наша ошибка ещё может писаться как the following packages have unmet dependencies. Она может возникнуть в нескольких случаях, давайте сначала рассмотрим основные из них:

  • Вы используете dpkg для установки deb пакета. Эта утилита не занимается установкой зависимостей. Вместо неё надо использовать apt install или потом просто установить недостающие зависимости с помощью apt, как это делается описано ниже;
  • Вы используете старую версию дистрибутива — в старых версиях могло что-то изменится в репозитории и часть пакетов была удалена или переименована. С LTS версиями такое случается редко, но с обычными релизами вполне может произойти;
  • Вы пытаетесь установить программу не от своего дистрибутива — несмотря на родство всех дистрибутивов семейства Debian, не желательно использовать программы из других дистрибутивов, так, как они могут требовать пакеты, которые в этом дистрибутиве называются по другому;
  • У вас установлен устаревший пакет, который не позволяет обновить некоторые зависимости — случается, когда в системе уже есть какой-нибудь пакет старый пакет, требующий старую версию библиотеки, а новая программа, которую вы собираетесь установить уже хочет более новую версию и не позволяет её обновить. Эта проблема не очень типична для Ubuntu, так как здесь большинство версий программ в репозиториях заморожено, но часто встречается при использовании дистрибутивов с системой роллинг релизов.
Читать еще:  Операционная система на флешке без установки

1. Обновление и исправление зависимостей

Самое первое что надо сделать при проблемах с зависимостями, это хоть как-нибудь их исправить, потому что иначе пакетный менеджер работать не будет. В некоторых случаях, если списки репозиториев давно не обновлялись их обновление может помочь:

sudo apt update

sudo apt install -f

Эта команда установит зависимости, которые есть во официальных репозиториях (поможет при использовании dpkg) и если это не решит проблему, то удалит пакеты, для которых зависимости удовлетворить не удалось. Также после этого можно выполнить:

sudo dpkg —configure -a

А потом повторить предыдущую команду. Следующим шагом можно попробовать обновить систему до самой последней версии. Это тоже может помочь если вы пытаетесь установить пакет из официальных репозиториев и при этом возникает проблема с зависимостями:

sudo apt upgrade
sudo apt full-upgrade

Если причиной вашей проблемы стал устаревший пакет надо его удалить или придумать для него замену. Например, если у вас установлена старая версия php, могут возникнуть проблемы с установкой новой версии, потому что будут конфликтовать версии библиотек, от которых зависит программа. Однако можно найти PPA со специально подготовленной старой версией php, которая ни с кем конфликтовать не будет.

Также подобная проблема может возникать при использовании PPA. Эти репозитории поддерживаются сторонними разработчиками, и могут содержать проблемы, если это ваш вариант, то, лучше поискать альтернативные способы установки необходимой программы.

2. Установка зависимостей

Дальше установка зависимостей Ubuntu. Следующий этап, если вы скачали пакет в интернете, например, от другого дистрибутива с таким же пакетным менеджером, можно попытаться установить таким же способом библиотеки, которые он просит. Это может сработать особенно, если вы пытаетесь установить программу из старой версии дистрибутива. Пакеты можно искать прямо в google или на сайте pkgs.org:

Здесь собрано огромное количество пакетов от различных дистрибутивов, в том числе и от Ubuntu и Debian. Просто выберите нужную версию пакета для вашей архитектуры. Скачать файл можно чуть ниже на странице пакета:

После загрузки пакета с сайта его можно установить через тот же dpkg:

sudo dpkg -i ffmpegthumbs_19.04.3-0ubuntu1

После этого можно снова попробовать установить свой пакет. Но устанавливаемая библиотека может потребовать свои неудовлетворенные зависимости, а та ещё свои, поэтому тянуть программы из других дистрибутивов таким образом не рационально.

3. Удаление зависимостей

Если у вас есть скачанный пакет, и он говорит, что он зависит о версии библиотеки, которой в вашей системе нет, но вы уверены, что ему подойдет и другая версия, то можно просто убрать эту зависимость из пакета. Но для этого надо его перепаковать. Такая ситуация была когда-то с популярным менеджером Viber. Рассмотрим на примере того же вайбера.

Сначала распакуйте пакет в подпапку package командой:

dpkg-deb -x ./viber.deb package

Затем туда же извлеките метаданные пакета:

dpkg-deb —control viber.deb package/DEBIAN

В файле package/DEBIAN есть строчка Depends, где перечислены все библиотеки, от которых зависит пакет и их версии. Просто удалите проблемную библиотеку или измените её версию на ту, которая есть в системе.

Затем останется только собрать пакет обратно:

dpkg -b viber package.deb

И можете устанавливать, теперь с зависимостями будет всё верно:

sudo dpkg -i package.deb

Но такое исправление зависимостей Ubuntu следует использовать только для пакетов, которые точно неверно собраны. Важно понимать, что пакетный менеджер вам не враг, а помощник, и то что вы отключите зависимости и установите программу ещё не значит, что она потом будет работать.

4. Распаковать пакет

Следующий способ подойдет, если программа которую вы устанавливаете это библиотека, например, веб-драйвер для Selenium. Пакет можно распаковать и просто разложить исполняемые файлы из него по файловой системе в соответствии с папками внутри архива. Только желательно использовать не корневую файловую систему, а каталог /usr/local/ он как раз создан для этих целей.

5. Использовать snap пакеты

Самый простой способ обойти проблемы с зависимостями — использовать новый формат установщика программ, в котором программа содержит все зависимости в установочном архиве и они устанавливаются аналогично Windows в одну папку. Установка такой программы будет дольше, но зато такие там вы точно не получите проблем с зависимостями Ubuntu. Всё программы, которые поддерживают этот формат есть в центре приложений Ubuntu:

25 полезных базовых команд APT-GET и APT-CACHE для управления пакетами

В этой статье объясняется, как вы можете быстро научиться устанавливать, удалять, обновлять и искать пакеты программного обеспечения с помощью команд apt-get и apt-cache прямо из командной строки. Ниже мы приведем примеры полезных опций, которые помогут вам справиться с управлением пакетами в системах на базе Debian/Ubuntu Linux.

Что такое apt-get?

Утилита apt-get представляет собой мощную и бесплатную программу командной строки для управления пакетами, которая используется для работы с библиотекой APT (Advanced Packaging Tool) Ubuntu для установки, удаления и обновления существующих пакетов программного обеспечения и даже для обновления всей операционной системы.

Что такое apt-cache?

Инструмент командной строки apt-cache используется для поиска по кешу программного пакета apt. Говоря простыми словами, этот инструмент используется для поиска пакетов программного обеспечения, сбора информации о пакетах, а также для поиска готовых для установки пакетов в системах на базе Debian или Ubuntu.

APT-CACHE — 5 полезных базовых команд

1. Как я могу просмотреть все доступные пакеты?

Чтобы перечислить все доступные пакеты, введите следующую команду.

В результате, будет выведен полный список пакетов:

2. Как узнать имя пакета и описание программного обеспечения?

Чтобы узнать имя пакета и его описание перед установкой, используйте опцию search. При использовании search с apt-cache, отобразится список согласованных пакетов с кратким описанием. Предположим, вы хотели бы узнать описание пакета vsftpd, тогда команда будет выглядеть так.

Будет выведет результат поиск пакетов:

Чтобы найти и отобразить все пакеты, имя которых начинается с vsftpd, вы можете использовать следующую команду.

В результате будет найден пакет vsftpd:

3. Как я могу посмотреть информацию о пакете?

Например, если вы хотите посмотреть информацию о пакете вместе с его коротким описанием (номер версии, размер и т.д.). Используйте команду show, как показано ниже.

В результате будет выведена информация по пакету netcat:

4. Как проверить зависимости для конкретных пакетов?

Используйте опцию «showpkg» для проверки зависимостей для определенных пакетов программного обеспечения. Установлены ли эти пакеты зависимостей или нет. Например, используйте команду showpkg вместе с vsftpd.

В результате будет отображена информация о пакете и его зависимости:

5. Как проверить статистику кеша?

Опция stats будет отображать общую статистику о кеше. Следующая команда, отобразит итоговые имена пакетов. Итоговые имена пакетов — это количество пакетов, найденных в кеше.

Читать еще:  Mysql доступ по сети

В результате будет отображена статистика кеша:

APT-GET — 20 полезных базовых команд для управления пакетами

6. Как обновить системные пакеты?

Опция update используется для повторной синхронизации кеша пакетов и их источников, указанных в файле /etc/apt/sources.list. Опция update извлекает кеш из своих репозиториев и обновит их до более новых версий.

В результате будет отображен процесс синхронизации кеша пакетов:

7. Как обновить пакеты программного обеспечения?

Опция upgrade используется для обновления всех установленных пакетов программного обеспечения в системе. В любом случае установленные в настоящий момент пакеты не удаляются. Пакеты, которые еще не установлены, не загружаются и не устанавливаются для удовлетворения зависимостей обновления.

В результате будет отображен процесс обновления пакетов:

Однако, если вы хотите произвести обновление, не думая о том, будут ли добавлены или удалены пакеты программного обеспечения для сохранения зависимостей, используйте подпрограмму dist-upgrade.

8. Как установить или обновить конкретные пакеты?

Опция install позволяет установить или обновить конкретные пакеты.

В результате будетотображен процесс установки пакета netcat:

9. Как я могу установить одновременно несколько пакетов?

Вы можете добавить несколько имен пакетов вместе с опцией install для одновременной установки нескольких пакетов. Например, следующая команда будет устанавливать пакеты nethogs и goaccess.

В результате будет отображен процесс установки пакетов nethogs и goaccess:

10. Как установить несколько пакетов с помощью шаблонной маски?

С помощью регулярного выражения вы можете добавить несколько пакетов в одной строке. Например, мы используем * (знак звдочки или умножения — шаблонная маска или регулярное выражение) для установки нескольких пакетов, содержащих строку *name* (имя искомого пакета будет packagename).

11. Как установить пакеты без обновления?

Использование опции -no-upgrade предотвратит обновление уже установленных пакетов.

В результате будет отображен процесс установки пакета packageName без обновления уже установленых пакетов:

12. Как не устанавливать, а только обновить пакеты?

Опция –only-upgrade не устанавливает новые пакеты, а только обновляет уже установленные пакеты и отключает установку новых пакетов.

В результате будет отображен процесс обновления уже установленых пакетов:

13. Как установить конкретную версию пакета?

Предположим, вы хотите установить только определенную версию пакета, просто используйте знак рвенства ( = ) с именем пакета и добавьте желаемую версию.

В результате будет отображен процесс установки пакета с опеределенной версией:

14. Как удалить пакет без удаления его конфигурации?

Чтобы удалить пакеты программного обеспечения, не удаляя их файлы конфигурации (для последующего повторного использования той же конфигурации). Используйте опцию remove, как показано ниже.

В результате будет отображен процесс удаления пакета с сохранением файла кофигурации:

15. Как удалить пакет полностью?

Чтобы удалить программные пакеты, включая их файлы конфигурации, используйте опцию purge, как показано ниже.

В результате будет отображен процесс полного удаления пакета:

Кроме того, вы можете объединить обе команды вместе, как показано на примере ниже.

В результате будет отображен процесс полного удаления пакета:

16. Как я могу очистить дисковое пространство?

Опция clean используется для освобождения дискового пространства путем очистки извлеченных/загруженных .deb файлов/пакетов из локального репозитория.

17. Как загрузить только исходный код пакета?

Чтобы загрузить только исходный код конкретного пакета, используйте опцию –download-only source с именем пакета, как в примере приведенном ниже.

В результате будет отображен процес загрузки исходных кодов пакета vsftpd:

18. Как я могу загрузить и распаковать пакет?

Чтобы загрузить и распаковать исходный код пакета в конкретный каталог, введите следующую команду.

В результате будет отображен процес загрузки исходных кодов пакета в конкретный каталог:

19. Как я могу загрузить, распаковать и скомпилировать пакет?

Вы также можете загружать, распаковывать и компилировать исходный код, используя опцию —compile, как показано в примере ниже.

В результате будет отображен процесс компиляции пакета goaccess:

20. Как загружать пакеты и не устанавливать их?

Используя опцию download, вы можете скачать любой пакет без его установки. Например, следующая команда будет исключительно загружать пакет nethogs в текущий рабочий каталог.

В результате будет отображен процесс скачивания пакета nethogs:

21. Как проверить журнал изменений пакетов?

Опция changelog загружает журнал изменений пакетов и показывает установленную версию пакета.

В результате будет отображен процесс загрузки журнала изминений:

22. Как произвести проверку на поиск неисправностей?

Опция check является диагностическим инструментом. Она используется для обновления кэша пакетов и проверки на наличие неполадок.

В результате будет отображен процесс поиска неисправнойстей

23. Как мне искать и строить зависимости?

Опция build-dep выполняет поиск локальных репозиториев в системе и устанавливает зависимости сборки для пакета. Если пакет не существует в локальном репозитории, эта команда вернет код ошибки.

В результате будет отображен процесс поиска зависимостей для пакета netcat:

24. Как я могу быстро очистить Apt-Get Cache?

Опция autoclean удаляет все файлы .deb из /var/cache/apt/archives, чтобы освободить значительный объем дискового пространства.

В результате будет отображен процесс очистки загруженных пакетов:

25. Как я могу автоматически удалить установленные пакеты?

Опция autoremove используется для автоматического удаления пакетов, которые были установлены для удовлетворения зависимостей других пакетов, но теперь они больше не требуются. Например, следующая команда удалит установленный пакет со всеми его зависимостями.

В результате будетотображен процесс удаления пакета vsftpd с его зависимостями:

Мы рассмотрели большинство доступных опций с командами apt-get и apt-cache, но это далеко не все опции. Вы можете ознакомится с остальными опциями воспользовавшись страницами man: man apt-get или man apt-cache.

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Установка RPM-пакетов

Для управления пакетами формата RPM в Linux используется соответствующая команда — rpm. Она производит установку, удаление, а также опрос состояния программ. Требуемый функционал этой команды определяется специальными опциями. Например, самыми распространёнными являются: -i – установка, -e – удаление, -U – обновление и -q – запрос. Если с первыми тремя опциями всё довольно просто, то последняя, т. е. -q очень часто используется совместно с другими опциями, т. е. она служит для включения опций конкретных запросов, например, команда:

выводит список всех программ, установленных в ОС. Для установки приложения нужно выполнить команду следующего вида:

В результате будет произведена установка веб-сервера «Апач», т. к. это в данном случае предписывает опция -i. Сам же файл программы должен быть предварительно загружен или иным способом помещён в файловую систему. Бывает и так, что при работе с приложениями возникают сложности — чаще всего с зависимостями, например:

Этот вывод означает, что при попытке обновить приложение openSSH будут затронуты другие, зависящие от него программы. Это помогает сориентироваться, в том, что ещё нужно сделать для выполнения успешного обновления приложения openSSH, т. е. удовлетворить зависимости. Следует обратить особое внимание на то, что опция —force, для принудительной установки/обновления здесь не помощник — запросто можно сломать приложение. Для того, чтобы заранее узнать, какие зависимости имеются у требуемого приложения, нужно выполнить команду следующего вида:

Как видно, опция включения запроса -q предписывает выполнить сам запрос с требованием —whatrequires для фразы «openssh», т. е. «определить зависимости приложения openssh», и далее следует логичный вывод. Используя информацию из этого вывода можно скачать файлы нужных зависимостей и установить или обновить их последовательно, используя соответствующие ключи. Для удобства достаточно эти зависимости указать списком:

Читать еще:  0x8004242d при установке Windows 10

Для проверки результата нужно воспользоваться опцией запроса:

Этот вывод означает, что в ОС корректно установлен (в результате предыдущих действий) openSSH. Нужно заметить, что для команды необязательно указывать точное название программы и версий — она правильно распознаёт их и при сокращённой записи их наименований.

1. Установка программ с помощью команды Dpkg

Dpkg — это менеджер пакетов для Debian и его производных, таких как Ubuntu и Linux Mint. Он используется для установки, сборки, удаления и управления пакетами .deb, но в отличие от других систем управления пакетами Linux, он не может автоматически загружать и устанавливать пакеты вместе со своими зависимостями.

Чтобы установить локальный пакет, используйте команду dpkg с флагом -i вместе с именем пакета, как показано ниже.

Если при установке или запуске программы вы получаете какие-либо ошибки зависимостей, вы можете использовать для разрешения и установки зависимостей команду apt с флагом -f, который сообщает программе о необходимости исправить поврежденные зависимости.

Чтобы удалить пакет, используйте параметр -r или если вы хотите удалить все его файлы, включая файлы конфигурации, вы можете очистить его, используя опцию —purge, как показано ниже.

Неудовлетворенные зависимости в Ubuntu

По английски наша ошибка ещё может писаться как the following packages have unmet dependencies. Она может возникнуть в нескольких случаях, давайте сначала рассмотрим основные из них:

  • Вы используете dpkg для установки deb пакета. Эта утилита не занимается установкой зависимостей. Вместо неё надо использовать apt install или потом просто установить недостающие зависимости с помощью apt, как это делается описано ниже;
  • Вы используете старую версию дистрибутива — в старых версиях могло что-то изменится в репозитории и часть пакетов была удалена или переименована. С LTS версиями такое случается редко, но с обычными релизами вполне может произойти;
  • Вы пытаетесь установить программу не от своего дистрибутива — несмотря на родство всех дистрибутивов семейства Debian, не желательно использовать программы из других дистрибутивов, так, как они могут требовать пакеты, которые в этом дистрибутиве называются по другому;
  • У вас установлен устаревший пакет, который не позволяет обновить некоторые зависимости — случается, когда в системе уже есть какой-нибудь пакет старый пакет, требующий старую версию библиотеки, а новая программа, которую вы собираетесь установить уже хочет более новую версию и не позволяет её обновить. Эта проблема не очень типична для Ubuntu, так как здесь большинство версий программ в репозиториях заморожено, но часто встречается при использовании дистрибутивов с системой роллинг релизов.

1. Обновление и исправление зависимостей

Самое первое что надо сделать при проблемах с зависимостями, это хоть как-нибудь их исправить, потому что иначе пакетный менеджер работать не будет. В некоторых случаях, если списки репозиториев давно не обновлялись их обновление может помочь:

sudo apt update

sudo apt install -f

Эта команда установит зависимости, которые есть во официальных репозиториях (поможет при использовании dpkg) и если это не решит проблему, то удалит пакеты, для которых зависимости удовлетворить не удалось. Также после этого можно выполнить:

sudo dpkg —configure -a

А потом повторить предыдущую команду. Следующим шагом можно попробовать обновить систему до самой последней версии. Это тоже может помочь если вы пытаетесь установить пакет из официальных репозиториев и при этом возникает проблема с зависимостями:

sudo apt upgrade
sudo apt full-upgrade

Если причиной вашей проблемы стал устаревший пакет надо его удалить или придумать для него замену. Например, если у вас установлена старая версия php, могут возникнуть проблемы с установкой новой версии, потому что будут конфликтовать версии библиотек, от которых зависит программа. Однако можно найти PPA со специально подготовленной старой версией php, которая ни с кем конфликтовать не будет.

Также подобная проблема может возникать при использовании PPA. Эти репозитории поддерживаются сторонними разработчиками, и могут содержать проблемы, если это ваш вариант, то, лучше поискать альтернативные способы установки необходимой программы.

2. Установка зависимостей

Дальше установка зависимостей Ubuntu. Следующий этап, если вы скачали пакет в интернете, например, от другого дистрибутива с таким же пакетным менеджером, можно попытаться установить таким же способом библиотеки, которые он просит. Это может сработать особенно, если вы пытаетесь установить программу из старой версии дистрибутива. Пакеты можно искать прямо в google или на сайте pkgs.org:

Здесь собрано огромное количество пакетов от различных дистрибутивов, в том числе и от Ubuntu и Debian. Просто выберите нужную версию пакета для вашей архитектуры. Скачать файл можно чуть ниже на странице пакета:

После загрузки пакета с сайта его можно установить через тот же dpkg:

sudo dpkg -i ffmpegthumbs_19.04.3-0ubuntu1

После этого можно снова попробовать установить свой пакет. Но устанавливаемая библиотека может потребовать свои неудовлетворенные зависимости, а та ещё свои, поэтому тянуть программы из других дистрибутивов таким образом не рационально.

3. Удаление зависимостей

Если у вас есть скачанный пакет, и он говорит, что он зависит о версии библиотеки, которой в вашей системе нет, но вы уверены, что ему подойдет и другая версия, то можно просто убрать эту зависимость из пакета. Но для этого надо его перепаковать. Такая ситуация была когда-то с популярным менеджером Viber. Рассмотрим на примере того же вайбера.

Сначала распакуйте пакет в подпапку package командой:

dpkg-deb -x ./viber.deb package

Затем туда же извлеките метаданные пакета:

dpkg-deb —control viber.deb package/DEBIAN

В файле package/DEBIAN есть строчка Depends, где перечислены все библиотеки, от которых зависит пакет и их версии. Просто удалите проблемную библиотеку или измените её версию на ту, которая есть в системе.

Затем останется только собрать пакет обратно:

dpkg -b viber package.deb

И можете устанавливать, теперь с зависимостями будет всё верно:

sudo dpkg -i package.deb

Но такое исправление зависимостей Ubuntu следует использовать только для пакетов, которые точно неверно собраны. Важно понимать, что пакетный менеджер вам не враг, а помощник, и то что вы отключите зависимости и установите программу ещё не значит, что она потом будет работать.

4. Распаковать пакет

Следующий способ подойдет, если программа которую вы устанавливаете это библиотека, например, веб-драйвер для Selenium. Пакет можно распаковать и просто разложить исполняемые файлы из него по файловой системе в соответствии с папками внутри архива. Только желательно использовать не корневую файловую систему, а каталог /usr/local/ он как раз создан для этих целей.

5. Использовать snap пакеты

Самый простой способ обойти проблемы с зависимостями — использовать новый формат установщика программ, в котором программа содержит все зависимости в установочном архиве и они устанавливаются аналогично Windows в одну папку. Установка такой программы будет дольше, но зато такие там вы точно не получите проблем с зависимостями Ubuntu. Всё программы, которые поддерживают этот формат есть в центре приложений Ubuntu:

Установка deb-пакетов с использованием GUI

Если вы предпочитаете использовать графический интерфейс, просто загрузите файл deb и откройте его двойным щелчком.

Откроется центр графического программного обеспечения по умолчанию

Нажмите кнопку «Установить», и откроется диалоговое окно «Аутентификация».

Введите пароль администратора и нажмите кнопку «Проверить подлинность».

Установка может занять некоторое время в зависимости от размера файла и его зависимостей. После установки пакета deb кнопка Install в программном центре Ubuntu изменится на «Удалить».

Все, приложение установлено в вашей системе, и вы можете запустить его из меню приложений.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector