Fedora — мой любимый дистрибутив Linux, спонсируемый Red Hat. Fedora 28 вышла с множеством функций. Вместо обновления моей федоры с помощью dnf-plugin-system-upgrade или способа GNOME Software я бы всегда люблю загружать ISO и устанавливать его с USB-накопителя (потому что он возвращает указатель на ISO, и я могу использовать его где угодно (ಠ⌣ಠ)).
У меня есть отношение любви/ненависти к Автоматическому разделу Red Hat, который обычно оставляет всего 50 ГБ для Компьютера (/), а остальное — для вашего $HOME. Поэтому я обычно делаю Разметку вручную и выделяю разделам нужное пространство. Но «Автоматические разделы» сэкономят вам время, автоматически предоставив другим разделам нужное количество места.
На этот раз я выбрал Автоматическое разбиение, и теперь у меня осталось всего 52,6 ГБ. На самом деле это всего 42,7 ГБ после апгрейда dnf. В прошлом, впервые попробовав Fedora, я использовал ее больше дней, чем думал, и боролся с ‹12 ГБ свободного места. Я подумал, что это было время, я хотел бы знать, как настраивать и устанавливать библиотеки по моим локальным путям, не прерывая работу всех существующих пакетов (pkg-config).
Теперь я, наконец, нашел способ установить библиотеки по своему пути. Мне нравится использовать $HOME/.local/.
Обычный способ
Обычно, когда вы компилируете библиотеки из исходного кода, обычным способом будет
./configure make sudo make install
or
./autogen.sh ./configure make sudo make install
Как вы думаете, куда устанавливаются библиотеки?
Это /usr/local/include для заголовков, /usr/local/lib/ для библиотек, которые вы можно связать с вашими программами. Кроме того, pkg-config легко находит ваши библиотеки и пакеты.
Что делать, если у вас меньше места на вашем Компьютере или вы хотите установить пакет в другое место (например, как я сказал $HOME/.local/ )?
Что тебе необходимо сделать
Впрочем, это легко. Сценарий configure также имеет аргумент — префикс, который позволяет установить пакет по указанному пути.
./configure — prefix $HOME/.local make make install
Обратите внимание, что вам не нужна команда sudo, так как $HOME не требует наличия root привилегии.
После установки
[monster@monster json-c]$ whereis json-c json-c: /home/monster/.local/include/json-c
Но будут ли ваши пакеты найдены и связаны с другими программами, использующими эти пакеты?
Теперь я наконец-то могу устанавливать пакеты по своим локальным путям. (ДА)
Смогу ли я используй это? Ответ НЕТ. (БООО)
Вы должны добавить путь к переменной $PATH.
# ~.bashrc export PATH=”$PATH:$HOME/.local/lib:$HOME/.local/share:$HOME/.local/include:$HOME/.local/bin”
Иногда вы получаете жалобы на общие библиотеки.
# ~/.bashrc export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:$HOME/.local/lib” export LIBRARY_PATH=”$LIBRARY_PATH:$HOME/.local/lib”
Кроме того, вам нравится pkg-config
# ~/.bashrc export PKG_CONFIG_PATH=”$PKG_CONFIG_PATH:$HOME/.local/lib/pkgconfig” ```
При компиляции вручную компилятор C/C++ жалуется, что не может найти заголовки.
# ~/.bashrc export CPATH=”$CPATH:$HOME/.local/include” export C_INCLUDE_PATH=”$C_INCLUDE_PATH:$HOME/.local/include” export CPLUS_INCLUDE_PATH=”$CPLUS_INCLUDE_PATH:$HOME/.local/include”