Вопрос или проблема
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. В данном случае рекомендуется воспользоваться следующими командами:
-
Переустановка пакетов:
brew reinstall glib gtksourceview
-
Обновление или переустановка библиотеки с последующей компиляцией из исходного кода:
brew upgrade --build-from-source gtksourceview
либо
brew reinstall --build-from-source gtksourceview
Эти команды позволят компилировать gtksourceview
исходя из доступной версии glib
у вас в системе. Опция --build-from-source
гарантирует, что все зависимости будут корректно объединены.
Подводя итог, /usr/local/lib
является важной составной частью macOS, предназначенной для хранения пользовательских библиотек. Если у вас возникли проблемы с несовместимостью версий библиотек, следует воспользоваться системой управления пакетами Homebrew для обновления или переустановки соответствующих компонентов.