Зависимости linux что это

Инструкции

27 сентября 2021

Командная строка Linux: краткий курс для начинающих

27 сентября 2021

Перенаправление ввода/вывода в Linux

27 сентября 2021

Работа с файлами и каталогами в Linux

26 сентября 2021

Как сгенерировать SSH-ключ для доступа на сервер

23 сентября 2021

Как установить и настроить веб-сервер Apache

23 сентября 2021

Руководство по написанию скриптов в Linux Bash

21 сентября 2021

Введение в Git: настройка и основные команды

21 сентября 2021

Как установить MySQL на Windows

21 сентября 2021

Как установить и использовать MySQL Workbench

20 сентября 2021

Создание нового пользователя и настройка прав в MySQL

© ООО «Селектел», 2008—2021

Полностью изолированные физические серверы любой конфигурации с облачной готовностью

Виртуальные машины с моментальным масштабированием и поддержкой Infrastructure-as-code

В дата-центрах TIER III Москвы, Санкт‑Петербурга и ЛО

Инфраструктура на базе VMware для бизнес-критичных задач любой сложности

Готовые к работе управляемые базы данных PostgreSQL и MySQL™

Полностью готовый к работе кластер Kubernetes для управления контейнерами

Масштабируемое хранилище данных с гибким ценообразованием, поддержкой FTP и S3 API

Запуск кода по запросу или событию без создания и обслуживания сервера

Источник

Выполняю установку, настройку, сопровождение серверов. Для уточнения деталей используйте форму обратной связи

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

Статически собранные программы характеризуются тем, что могут корректно функционировать в любых условиях, и не зависят от наличия или отсутствия разделяемых библиотек, что может оказаться полезным в ситуациях, когда возникают конфликты версий разделяемых библиотек, или когда системные библиотеки повреждены или недоступны (например во время восстановления операционной системы после серьезного сбоя). К недостаткам таких исполняемых файлов следует отнести то, что они имеют значительный размер и для обновления программы необходимо полностью заменить ее исполняемый файл – например, если несколько статически собранных программ, которые работают с архивами ZIP, содержат ошибку, то для исправления ошибки необходимо заменить все эти программы, что может быть затруднено (например, будет трудно точно установить, какие именно программы содержат ошибочный код и нуждаются в обновлении). Кроме того, статически собранные программы не умеют совместно использовать совпадающие участки кода, что ведет к излишнему расходу системных ресурсов.

Читайте также:  Rage 64 bit windows

Динамически собранные исполняемые файлы для корректной работы требуют наличия файлов разделяемых библиотек, и соответственно при их отсутствии/повреждении не могут корректно функционировать, но зато для обновления программы и исправления ошибки часто оказывается достаточным просто заменить соответствующую разделяемую библиотеку, после чего ошибка исчезает во всех программах, которые эту библиотеку используют динамически. Динамически связанные программы также значительно меньше по объему, чем статически связанные, и код разделяемых библиотек может использоваться одновременно многими программами – что позволяет экономить системные ресурсы.

Подавляющее большинство программ в современных дистрибутивах Linux являются динамически собранными. Определить тип исполняемого файла (статический ли он либо с динамическим связыванием) можно, например, с помощью команды ldd:

# ldd /bin/su
linux-gate.so.1 => (0xb77d0000)
libpam.so.0 => /lib/libpam.so.0 (0xb77be000)
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0xb77bb000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb765f000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb765b000)
/lib/ld-linux.so.2 (0xb77d1000)

Но здесь нас подстерегает несколько НО:

1) Существует способ загрузки библиотек в обход ldd, функцией dlopen(). Такие библиотеки в выводе ldd не отображены.

2) Принцип работы ldd состоит в следующем: она устанавливает переменную окружения LD_TRACE_LOADED_OBJECTS, а затем запускает программу на исполнение. Входящий в libc загрузчик динамических библиотек (для GNU glibc это ld-linux.so) проверяет наличие этой переменной. Если она установлена, то вместо нормального запуска программы он выводит список используемых ею динамически подгружаемых библиотек и завершает работу.

То есть, мало того, что не все библиотеки (в идеале) мы сможем увидеть, так ещё и запускаем на исполнение файл! А если это руткит? Что же делать? Выход есть, правда не совсем удобный.

Выход первый (для пункта 2): использовать вместо ldd -> lddsafe (https://github.com/rg3/lddsafe) Скрипт использует objdump и безопасен, так как не запускает на исполнение проверяемую программу.

Выход второй (для пунктов 1 и 2): использовать команду strace. Правда вывод не такой удобный будет, как в случае с ldd.

Так же можно эту информацию получить и таким образом:

# readelf -d /sbin/fsck / grep ‘NEEDED’
0x00000001 (NEEDED) Shared library: [libblkid.so.1]
0x00000001 (NEEDED) Shared library: [libc.so.6]

Для более детальной вычинки бинарника можно использовать утилиту objdump и strace.

Что же делать, если вы получаете сообщения такого плана:

error while loading shared libraries: xxxx.so.0
cannot open shared object file no such file or directory

Это значит, что нет подходящих библиотек. Но что делать, если они есть, а система их не находит? На помощь приходит утилита ldconfig, которая управляет динамическими библиотеками.

С помощью этой программы вы можете добавить свои библиотеки, просматривать кеш библиотек. Список подключаемых библиотек находится в файле /etc/ld.so.conf, а кеш (собственно откуда берут информацию /lib/ld-linux.so) — /etc/ld.so.cache.

Читайте также:  Linux mint remove repository

— Посмотреть список библиотек

# ldconfig -p | grep mysql
libmysqlclient_r.so.15 (libc6) => /usr/lib/libmysqlclient_r.so.15
libmysqlclient.so.15 (libc6) => /usr/lib/libmysqlclient.so.15

Подробнее можно узнать в справочном руководстве.

Так же можно использовать переменную окружения LD_LIBRARY_PATH.

Примечание.

В Solaris это можно сделать командой dtrace. Кстати, есть хорошая новость — её пытаются портировать на Linux.

Во FreeBSD используется команда truss

Источник

Альманах пакетных менеджеров Linux

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

Далее следует джентльменский набор необходимых для повседневной рутины команд основных Linux дистрибутивов: установить, обновить и удалить пакет, накатить обновления, проверить зависимости, установить принадлежность файла пакету и пр.

Debian и родственные

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

То, что в примерах aptitude не значит, что он правильнее, чем apt-get . Для меня это всего лишь дело привычки.

Некоторые функции доступны с дополнительным МП dpkg .

Есть еще такое чудо — wajig. Несмотря на странное звучание, вполне годный МП с человеко-читабельным выводом информации на экран.

Настройка репозиториев производится правкой файла /etc/apt/sources.list

В целом ПМ Debian один из лучших, с которыми мне доводилось иметь дело.

Redhat и другие RPM дистрибутивы

RPM нельзя назвать образцовым пакетным менеджером, скорее это был кактус, который мыши употребляли в пищу со слезами на глазах. Затем появились более или менее вменяемые МП: yum , dnf , zypper и другие. Только что на сервере RHEL 7.4 yum за раз обновил более 700 пакетов и ничего при этом не сломал, неплохой результат я считаю.

Команды rpm на те случаи, когда использовать yum не с руки.

Чтобы настроить репозитории Yum , откройте файл /etc/yum.repos.d/*.repo , или используйте команду yum-config-manager .

Zypper

На SuSE Linux используется Zypper / YaST для управления пакетами, движок ZYpp крутится поверх RPM.

Можно использовать операторы и регулярные выражения.

Управление репозиториями производится командой zypper mr .

Pacman

Этот МП используется в Арче и Manjaro.

Движок поиска в базе данных поддерживает регулярные выражения.

Настройка репозиториев и зеркал производится из файла /etc/pacman.conf

Gentoo emerge

Конечно же это скорее умозрительный сценарий, чем реальный, так как сложно предположить, что красноглазый пользователь Gentoo Linux не знает необходимых опций emerge . Тем не менее, без этого альманах был бы неполным.

С дополнительными утилитами можно получить больше информации о файлах, ненужных пакетах и т. д.

Источник

Как перечислить зависимости пакета в Linux

На днях я пытался выяснить, есть ли простой способ найти или перечислить зависимости пакета в Linux.

Читайте также:  Как отключить автоматический перезапуск при сбое windows

Я использую Linux в качестве основной ОС уже несколько лет, но я не мог найти зависимости для определенного пакета.

К счастью, я нашел обходное решение после нескольких поисковых запросов Google и хотел поделиться им с нашими читателями.

Список зависимостей пакета в Linux

В Arch Linux и таких производных, как Antergos и Manjaro Linux, Pacman предлагает полезную команду под названием «Pactree».

Для тех, кто задается вопросом, Pactree создает дерево зависимостей для данного пакета, скажем, vim.

Как видно из вышеприведенного вывода, Pactree перечисляет зависимости пакета «vim» в хорошем древовидном формате.

Чтобы узнать подробности команды pactree, обратитесь к страницам man.

В Debian, Ubuntu и его производных, таких как Linux Mint, Elementary OS, вы можете использовать команду apt-cache для перечисления зависимостей конкретного пакета.

Чтобы узнать, какой пакет, например, vim, зависит, запустите:

Чтобы узнать, что зависит от пакета, скажем, например, vim, запустите:

Вышеупомянутая команда отображает пакеты, зависящие от пакета vim.

Для получения дополнительной информации запустите:

В SUSE и openSUSE вы можете указать зависимости данного пакета с помощью команды «zypper», как показано ниже.

Источник

🐧 Как скачать рекурсивные зависимости пакета в Ubuntu

Мы уже знали, как скачать пакет вместе со всеми его зависимостями в Ubuntu-подобных системах.

Сегодня мы увидим, как загрузить рекурсивные зависимости пакета в Ubuntu.

Другими словами, мы собираемся скачать зависимости зависимостей.

Допустим, вы пытаетесь установить пакет с именем a.deb.

Пакет a.deb зависит от пакета b.deb, и снова пакет b.deb зависит от пакета c.deb.

В этом методе мы загружаем не только зависимости a.deb, но также и зависимости b.deb и c.deb.

Это может быть полезно, когда вы не можете установить пакет даже после того, как вы загрузили все необходимые зависимости с помощью команды apt-rdepends.

  1. Избегать повторной загрузки одного и того же набора пакетов снова и снова. Например, если вы хотите установить редактор Vim в нескольких системах, вы можете загрузить Vim со всеми необходимыми зависимостями, сохранить их на USB-накопителе (или перенести их через локальную сеть) и установить Vim в другой системе.
  2. Экономить пропускную способность интернета и время.
  3. Установить пакеты на не подключенные к Интернету системы. Это основная причина для локальной загрузки пакетов с зависимостями. Вы можете загрузить пакеты в систему, подключенную к Интернету, а затем перенести их в автономную систему через USB-накопитель или локальную сеть и установить их в нем без Интернета.

Скачать рекурсивные зависимости пакета в Ubuntu

В целях данного руководства мы возьмем в качестве примера программу Vim.

Сначала давайте перечислим рекурсивные зависимости пакета Vim с помощью следующей команды:

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

Давайте продолжим и загрузим рекурсивные зависимости пакета Vim с помощью команды:

Источник

Оцените статью