Что такое /usr/local/lib на macOS?

Вопрос или проблема

Libgtksourceview-2.0.0.dylib требует версию 6001.0.0 или более позднюю, но libgio-2.0.0.dylib предоставляет версию 5503.0.0

Тем не менее, я не знаю, как повысить версию libgio-2.0.0.dylib.
Какой в первую очередь является директорией /usr/local/lib?
пожалуйста, расскажите мне.

Весь /usr/local предназначен для того, что вы (или ваш системный администратор) установили, и что не поставляется с ОС от Apple. /usr/local/lib предназначен для библиотек: пакетов предварительно скомпилированного кода, реализующих различные полезные функции, которые могут быть загружены и использованы приложениями, но сами не являются приложениями.

Если вы не помните, что устанавливали эти библиотеки, они, вероятно, были установлены системой управления пакетами программного обеспечения с открытым исходным кодом, такой как Homebrew. Попробуйте использовать brew, чтобы обновить их.

Из Руководства по программированию файловой системы Apple

/usr – Содержит неосновные бинарные файлы командной строки, библиотеки, заголовочные
файлы и другие данные.

Более конкретно, /usr/lib это для установленных macOS общих библиотек. Всё, что находится под /usr/local, установлено пользователем. Таким образом, /usr/local/lib содержит общие библиотеки, установленные вами.

Скорее всего, это относится к libgtksourceview-2.0.0.dylib установленному через Homebrew gtksourceview и libgio-2.0.0.dylib относится к glib. Сообщение об ошибке показывает, что gtksourceview скомпилирован с более новой версией glib, которая доступна на вашей системе.

Есть несколько решений, предполагая, что у вас установлен Homebrew.

Переустановите gtksourceview и glib

Переустановите оба программных пакета

brew reinstall glib gtksourceview

Переустановите или обновите gtksourceview

Или

brew upgrade --build-from-source gtksourceview

или

brew reinstall --build-from-source gtksourceview

Если зависимость от glib устарела, она также будет обновлена. Опция --build-from-source гарантирует, что gtksourceview будет перекомпилирован заново, связываясь с доступной версией glib на вашей системе.

Для установки пакета, вам необходимо скомпилировать его с использованием существующих компиляторов (в зависимости от того, на каком языке разработчики писали этот пакет). Есть библиотеки, которые необходимы компилятору для установки этого пакета. Это задача связчика – связать эти библиотеки.

/usr/local/lib является одной из директорий, которые связчик ищет для необходимых библиотек. Есть конфигурационные файлы вместе с установочным пакетом, которые ищут необходимые библиотеки.

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

Тем не менее, если кто-то хочет установить динамическую библиотеку, чтобы сделать её доступной для других приложений на MacOS, вы найдете лучшую поддержку в /Library/Frameworks/ – где можно найти наших старых друзей ‘bin’,’include’,’lib’,’sbin’ и ‘share’.

Это так же как использование /usr/ вместо /usr/local, поэтому вам нужно быть рутом, чтобы устанавливать ваши библиотеки там.

Возможно, можно использовать /Users/Shared/Library/Frameworks или лучше всего /Users/daisuke/Library/Frameworks, но такие директории обычно не существуют, и я никогда этого не тестировал.

.

Ответ или решение

Директория /usr/local/lib играет важную роль в экосистеме macOS как место хранения библиотек, которые устанавливаются пользователями или системными администраторами, но не входят в стандартную поставку операционной системы. Здесь хранятся библиотеки, необходимые для работы различных приложений, но сами по себе не являющиеся приложениями.

Теория

На macOS директория /usr/local/lib предназначена для хранения библиотек, которые вам могут понадобиться для установки или работы программ, не входящих в стандартную комплектацию системы. Обычно содержимое этой директории устанавливается через системы управления пакетами, такие как Homebrew. Эти библиотеки представляют собой скомпилированный код, который может быть загружен и использован различными приложениями. Значительное обновление библиотеки, как в данном случае, связано с тем, что библиотека libgtksourceview-2.0.0.dylib требует более новой версии libgio-2.0.0.dylib, чем та, которая установлена у вас.

Пример

Рассмотрим приведённую проблему: libgtksourceview-2.0.0.dylib требует версию 6001.0.0 или более новую, но libgio-2.0.0.dylib предоставляет версию 5503.0.0. Это типичная ситуация в управлении версиями, где одна библиотека требует более новую версию другой, чем та, что установлена в системе. Чтобы исправить это, можно использовать Homebrew для обновления соответствующих библиотек.

Применение

Если вы не уверены в том, как была установлена текущая версия библиотек, скорее всего, это было осуществлено с помощью Homebrew. В данном случае рекомендуется воспользоваться следующими командами:

  1. Переустановка пакетов:

    brew reinstall glib gtksourceview
  2. Обновление или переустановка библиотеки с последующей компиляцией из исходного кода:

    brew upgrade --build-from-source gtksourceview

    либо

    brew reinstall --build-from-source gtksourceview

Эти команды позволят компилировать gtksourceview исходя из доступной версии glib у вас в системе. Опция --build-from-source гарантирует, что все зависимости будут корректно объединены.

Подводя итог, /usr/local/lib является важной составной частью macOS, предназначенной для хранения пользовательских библиотек. Если у вас возникли проблемы с несовместимостью версий библиотек, следует воспользоваться системой управления пакетами Homebrew для обновления или переустановки соответствующих компонентов.

Оцените материал
Добавить комментарий

Капча загружается...