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”

Полезные ссылки