Это команда dpkg-shlibdeps, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
dpkg-shlibdeps - генерирует зависимости подварки разделяемой библиотеки
СИНТАКСИС
dpkg-shlibdeps [вариант...] [-e]выполнимый [вариант...]
ОПИСАНИЕ
dpkg-shlibdeps вычисляет зависимости разделяемой библиотеки для исполняемых файлов, названных в ее
аргументы. Зависимости добавляются в файл подстановочных переменных. debian / substvars
как имена переменных шлибы:поле зависимости в котором поле зависимости это поле зависимости
имя. Любые другие переменные, начинающиеся с шлибы: удаляются из файла.
dpkg-shlibdeps имеет два возможных источника информации для генерации информации о зависимостях.
Или Символы файлы или шлибы файлы. Для каждого двоичного файла, который dpkg-shlibdeps анализирует, это
узнает список библиотек, с которыми он связан. Затем для каждой библиотеки это выглядит
вверх либо Символы файл или шлибы файл (если первого не существует или если
debian / shlibs.local содержит соответствующую зависимость). Оба файла должны быть
предоставляется пакетом библиотеки и, следовательно, должен быть доступен как
/ var / lib / dpkg / info /пакет.Символы or / var / lib / dpkg / info /пакет.шлибы. Название пакета
идентифицируется в два этапа: найдите файл библиотеки в системе (ищите в том же
каталоги, которые ld.so будет использовать), затем используйте Dpkg -S библиотека-файл искать пакет
предоставление библиотеки.
Символы файлов
Файлы символов содержат более детальную информацию о зависимостях, предоставляя минимум
зависимость для каждого символа, который экспортирует библиотека. Скрипт пытается найти символы
файл, связанный с пакетом библиотеки, в следующих местах (используется первое совпадение):
debian / * / DEBIAN / символы
Информация об общей библиотеке, созданная текущим процессом сборки, который также вызвал
dpkg-shlibdeps. Они созданы dpkg-gensymbols(1). Они используются только в том случае, если
библиотека находится в дереве сборки пакета. Файл символов в этом дереве построения
имеет приоритет над файлами символов из других двоичных пакетов.
/ и т. д. / dpkg / символы /пакет.символы.арка
/ и т. д. / dpkg / символы /пакет.символы
Системная переопределение информации о зависимостях разделяемой библиотеки. арка это
архитектура текущей системы (получена dpkg-архитектура -qDEB_HOST_ARCH).
Вывод из «dpkg-запрос --control-путь пакет символы »
Предоставляемая пакетом информация о зависимостях разделяемой библиотеки. Если не отменено
--админдирэти файлы находятся в / var / lib / dpkg.
При сканировании символов, используемых всеми двоичными файлами, dpkg-shlibdeps помнит (самый большой)
минимальная версия, необходимая для каждой библиотеки. В конце процесса он может написать
минимальную зависимость для каждой используемой библиотеки (при условии, что информация о
Символы файлы точны).
В качестве меры безопасности файл символов может содержать Сборка-Зависит-Пакет мета-
информационное поле и dpkg-shlibdeps извлечет минимальную версию, требуемую
соответствующий пакет в Зависит от сборки поле и используйте эту версию, если она выше, чем
минимальная версия, вычисленная путем сканирования символов.
Шлебс файлов
Файлы Shlibs напрямую связывают библиотеку с зависимостью (не глядя на
символы). Таким образом, он часто сильнее, чем действительно необходимо, но очень безопасен и прост в обращении.
Зависимости для библиотеки ищутся в нескольких местах. Первый файл, обеспечивающий
информация для интересующей библиотеки используется:
debian / shlibs.local
Локальная для пакета информация о зависимостях разделяемой библиотеки.
/etc/dpkg/shlibs.override
Системная переопределение информации о зависимостях разделяемой библиотеки.
debian / * / DEBIAN / shlibs
Информация об общей библиотеке, созданная текущим процессом сборки, который также вызвал
dpkg-shlibdeps. Они используются только в том случае, если библиотека находится в сборке пакета.
дерево. Файл shlibs в этом дереве сборки имеет приоритет над файлами shlibs из
другие бинарные пакеты.
Вывод из «dpkg-запрос --control-путь пакет шлибы »
Предоставляемая пакетом информация о зависимостях разделяемой библиотеки. Если не отменено
--админдирэти файлы находятся в / var / lib / dpkg.
/etc/dpkg/shlibs.default
Информация о зависимостях разделяемой библиотеки по умолчанию для каждой системы.
Затем извлеченные зависимости используются напрямую (кроме случаев, когда они отфильтрованы, потому что
они были идентифицированы как повторяющиеся или более слабые, чем другая зависимость).
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
dpkg-shlibdeps интерпретирует аргументы, не являющиеся опциями, как имена исполняемых файлов, как если бы они были
поставляется как -eвыполнимый.
-eвыполнимый
Включите зависимости, подходящие для разделяемых библиотек, требуемых выполнимый.
Эту опцию можно использовать несколько раз.
-lкаталог
Добавить каталог в список каталогов для поиска частных разделяемых библиотек
(начиная с dpkg 1.17.0). Эту опцию можно использовать несколько раз.
Примечание. Используйте эту опцию вместо установки LD_LIBRARY_PATH, поскольку эта среда
переменная используется для управления компоновщиком времени выполнения и злоупотребления ею для установки общего
пути к библиотекам во время сборки могут быть проблематичными, например, при кросс-компиляции.
-dполе зависимости
Добавить зависимости для добавления в поле зависимостей управляющего файла поле зависимости.
(Зависимости для этого поля помещаются в переменную шлибы:зависимость
поле.)
Команда -dполе зависимости опция вступает в силу для всех исполняемых файлов после опции,
до следующего -dполе зависимости. По умолчанию поле зависимости is Зависит.
Если одна и та же запись зависимости (или набор альтернатив) появляется более чем в одном из
распознанные имена полей зависимостей Предварительно зависит, Зависит, рекомендует, Усиливает or
Предлагает тогда dpkg-shlibdeps автоматически удалит зависимость от всех
поля, кроме одного, представляющего наиболее важные зависимости.
-pпрефикс varname
Начните замену переменных с префикс varname: вместо шлибы:, Точно так же,
любые существующие подстановочные переменные, начинающиеся с префикс varname: (скорее, чем
шлибы:) удаляются из файла подстановочных переменных.
-O[имя файла]
Вывести параметры подстановки переменных в стандартный вывод (или имя файла если указано,
начиная с dpkg 1.17.2), а не добавляется в файл переменных подстановки
(debian / substvars по умолчанию).
-tнапишите Предпочитать информацию о зависимостях разделяемой библиотеки, помеченную для данного типа пакета. Если
помеченная информация недоступна, возвращается к немаркированной информации. По умолчанию
тип упаковки дебютантка. Информация о зависимостях общей библиотеки помечена для данного
type, добавив к нему префикс с именем типа, двоеточием и пробелом.
-Lлокальный-файл-шлиб
Прочтите информацию о зависимостях общей библиотеки от локальный-файл-шлиб
вместо debian / shlibs.local.
-Tsubstvars-файл
Записать переменные подстановки в substvars-файл; по умолчанию debian / substvars.
-v Включите подробный режим (начиная с dpkg 1.14.8). На экран выводятся многочисленные сообщения.
объяснить, что dpkg-shlibdeps делает.
-xпакет
Исключить пакет из сгенерированных зависимостей (начиная с dpkg 1.14.8). Это
полезно, чтобы избежать самозависимости для пакетов, которые предоставляют двоичные файлы ELF
(исполняемые файлы или плагины библиотеки) с использованием библиотеки, содержащейся в том же пакете.
Эту опцию можно использовать несколько раз, чтобы исключить несколько пакетов.
-Sпакет-build-dir
Посмотрите пакет-build-dir сначала при попытке найти библиотеку (поскольку dpkg
1.14.15). Это полезно, когда исходный пакет создает несколько разновидностей
та же библиотека, и вы хотите убедиться, что получаете зависимость от данного двоичного файла
упаковка. Вы можете использовать эту опцию несколько раз: каталоги будут проверены в
в том же порядке перед каталогами других бинарных пакетов.
--ignore-отсутствующая-информация
Не терпите неудач, если не удается найти информацию о зависимостях для разделяемой библиотеки (поскольку
dpkg 1.14.8). Использование этой опции не рекомендуется, все библиотеки должны предоставлять
информация о зависимостях (либо с файлами shlibs, либо с файлами символов), даже если
они еще не используются другими пакетами.
--warnings =ценностное
ценностное это битовое поле, определяющее набор предупреждений, которые могут быть выданы
dpkg-shlibdeps (начиная с dpkg 1.14.17). Бит 0 (значение = 1) включает предупреждающий символ «.
сим используется двоичный не найден ни в одной из библиотек », бит 1 (значение = 2) включает
предупреждение «пакет может избежать бесполезной зависимости», а бит 2 (значение = 4) включает
предупреждение "двоичный не следует связывать с библиотека». По умолчанию ценностное это 3:
первые два предупреждения активны по умолчанию, последнее - нет. Установленный ценностное до 7, если
вы хотите, чтобы все предупреждения были активными.
--admindir =директория
Измените расположение Dpkg база данных (начиная с dpkg 1.14.0). Местоположение по умолчанию
is / var / lib / dpkg.
-?, --Помогите
Показать сообщение об использовании и выйти.
--версия
Покажи версию и выйди.
ДИАГНОСТИКИ
Предупреждения
С dpkg-shlibdeps анализирует набор символов, используемых каждым двоичным кодом сгенерированного
пакет, он может выдавать предупреждения в нескольких случаях. Они сообщают вам о том, что может
быть улучшенным в пакете. В большинстве случаев эти улучшения касаются исходных кодов верхнего уровня.
напрямую. В порядке убывания важности вот различные предупреждения, которые вы можете
сталкиваться:
символ сим использовал by двоичный найденный in нет of библиотеки.
Указанный символ не найден в библиотеках, связанных с двоичным файлом.
Команда двоичный скорее всего, это библиотека, и ее нужно связать с дополнительным
библиотека в процессе сборки (опция -lбиблиотека компоновщика).
двоичный содержит an неразрешимый ссылка в символ сим: это вероятно a плагин
Указанный символ не найден в библиотеках, связанных с двоичным файлом.
Команда двоичный скорее всего, плагин, и символ, вероятно, предоставлен
программа, которая загружает этот плагин. Теоретически у плагина нет SONAME, кроме этого
двоичный файл действительно имеет один, и поэтому его нельзя четко идентифицировать как таковой.
Однако тот факт, что двоичный файл хранится в закрытом каталоге, является сильным
указание на то, что это не обычная разделяемая библиотека. Если двоичный файл действительно
plugin, проигнорируйте это предупреждение. Но всегда есть вероятность, что это
настоящая библиотека, и программы, связывающиеся с ней, используют RPATH, так что динамический
загрузчик его находит. В этом случае библиотека повреждена и ее необходимо исправить.
пакет могли бы избежать a бесполезный зависимость if двоичный законопроект связанный против которого выступает большинство исследователей в области общественного здравоохранения. библиотека (Это использования
нет of библиотеки символы)
Ни один из двоичные файлы которые связаны с библиотека используйте любой из предоставленных символов
у библиотеки. Исправив все двоичные файлы, вы избежите зависимости
связанный с этой библиотекой (если такая же зависимость не генерируется другим
библиотека, которая действительно используется).
пакет могли бы избежать a бесполезный зависимость if двоичные файлы были связанный против которого выступает большинство исследователей в области общественного здравоохранения. библиотека (Они
использования нет of библиотеки символы)
Точно так же, как и в предыдущем предупреждении, но для нескольких двоичных файлов.
двоичный должен be связанный против которого выступает большинство исследователей в области общественного здравоохранения. библиотека (Это использования нет of библиотеки символы)
Команда двоичный связан с библиотекой, которая ему не нужна. Это не проблема, но некоторые
небольшие улучшения производительности во время загрузки двоичного файла могут быть получены без связывания
эту библиотеку в этот двоичный файл. Это предупреждение проверяет ту же информацию, что и
предыдущий, но делает это для каждого двоичного файла вместо того, чтобы делать глобальную проверку для всех
двоичные файлы проанализированы.
ошибки
dpkg-shlibdeps завершится ошибкой, если он не сможет найти публичную библиотеку, используемую двоичным файлом, или если это
библиотека не имеет связанной информации о зависимостях (файл shlibs или файл символов). А
публичная библиотека имеет SONAME и имеет версии (libsomething.so.X). Частная библиотека (например,
плагин) не должен иметь SONAME и не требует управления версиями.
не мог найдите библиотека имя-библиотека необходимый by двоичный (его РПУТЬ is 'RPATH')
Команда двоичный использует библиотеку под названием имя-библиотека но dpkg-shlibdeps не смог
найти библиотеку. dpkg-shlibdeps создает список каталогов для проверки как
следующее: каталоги, перечисленные в RPATH двоичного файла, каталоги, перечисленные в
/etc/ld.so.conf, каталоги добавлены -l вариант, каталоги, перечисленные в
LD_LIBRARY_PATH переменная среды и стандартные общедоступные каталоги (/ Lib,
/ USR / Lib, / lib32, / usr / lib32, / lib64, / usr / lib64). Затем он проверяет эти каталоги
в дереве сборки пакета анализируемого двоичного файла, в сборке пакетов
деревья, обозначенные -S параметр командной строки, в деревьях сборки других пакетов
который содержит файл DEBIAN / shlibs или DEBIAN / symbols и, наконец, в корне
каталог. Если библиотека не найдена ни в одном из этих каталогов, вы получите
эта ошибка.
Если библиотека не найдена в частном каталоге того же пакета, тогда вы
хотите добавить каталог с -l. Если он находится в другом собираемом двоичном пакете,
вы хотите убедиться, что файл shlibs / symbols этого пакета уже
создан и что -l содержит соответствующий каталог, если он также находится в частной
каталог.
нет зависимость информация найденный для библиотека-файл (используемый by двоичный).
Библиотека, необходимая двоичный был найден dpkg-shlibdeps in библиотека-файл но
dpkg-shlibdeps не смог найти никакой информации о зависимостях для этой библиотеки.
Чтобы выяснить зависимость, он попытался сопоставить библиотеку с пакетом Debian.
с помощью Dpkg -S библиотека-файл. Потом проверил соответствующие шлибы
и файлы символов в / var / lib / dpkg / info /, и в различных деревьях сборки пакетов
(дебиан / * / ДЕБИАН /).
Этот сбой может быть вызван неправильным или отсутствующим файлом shlib или символами в
пакет библиотеки. Это также может произойти, если библиотека построена в
тот же исходный пакет, и если файлы shlibs еще не созданы (в этом случае
вы должны исправить debian / rules, чтобы создать файлы shlib перед вызовом dpkg-shlibdeps). Плохой
RPATH также может привести к обнаружению библиотеки под неканоническим именем (пример:
/usr/lib/openoffice.org/../lib/libssl.so.0.9.8 вместо /usr/lib/libssl.so.0.9.8)
это не связано ни с одним пакетом, dpkg-shlibdeps пытается обойти это с помощью
пытается вернуться к каноническому имени (используя реальный путь(3)), но не всегда
Работа. Всегда лучше очистить RPATH двоичного файла, чтобы избежать проблем.
призвание dpkg-shlibdeps в подробном режиме (-v) предоставит гораздо больше информации
о том, где он пытался найти информацию о зависимости. Это может быть полезно, если
вы не понимаете, почему он дает вам эту ошибку.
Используйте dpkg-shlibdeps онлайн с помощью сервисов onworks.net