Как установить pkg config на linux

Обновлено: 07.07.2024

Самые современные Unix-подобные операционные системы предлагают централизованные механизмы для поиска и установки пакетов. Программное обеспечение, как правило, распространяется в виде пакетов, которые хранятся в репозиториях. Пакеты содержат основные компоненты операционной системы, а также общие библиотеки, приложения, услуги и документацию.

Система управления пакетами, помимо установки программного обеспечения, предоставляет множество других функций и инструментов для модернизации уже установленных пакетов. Репозитории пакетов гарантируют, что код прошел необходимую проверку для использования в системе, и что установленные версии программного обеспечения были одобрены разработчиками.

При настойке сервера или окружения разработки лучше искать пакеты в официальных репозиториях. Пакеты в стабильной версии дистрибутива могут оказаться устаревшими, особенно если программное обеспечение быстро обновляется.

Управление пакетами является жизненно важным навыком для системных администраторов и разработчиков.

Это руководство охватывает основы управления пакетами: поиск, установку и обновление пакетов для различных дистрибутивов.

Системы управления пакетами: краткий обзор

Большинство систем управления пакетами строятся на наборах файлов пакетов. Файл пакета – это, как правило, архив, который содержит скомпилированные бинарные файлы, скрипты установки и другие ресурсы, составляющие программу. Также пакеты содержат ценные метаданные, в том числе их зависимости (список пакетов, необходимых для запуска программы).

Операционная система Формат
Debian .deb
Ubuntu .deb
CentOS .rpm
Fedora .rpm
FreeBSD порты, .txz

CentOS, Fedora и другие системы Red Hat используют файлы RPM. В CentOS для взаимодействия с пакетами и репозиториями используется менеджер yum. В последних версиях Fedora yum был заменён модернизированным менеджером dnf.В системе Debian и основанных на ней системах (Ubuntu, Linux Mint, Raspbian) используется формат .deb. Пакетный менеджер APT (Advanced Packaging Tool) предоставляет команды, используемые для наиболее распространенных операций: поиска репозиториев, управления обновлениями, установки набора пакетов и их зависимостей. Команды APT работают как фронтэнд утилиты нижнего уровня dpkg, которая обрабатывает установку индивидуальных пакетов .deb на локальную систему; при необходимости эту утилиту можно вызывать явно.

Системой бинарных файлов FreeBSD управляет команда pkg. Кроме того, FreeBSD предоставляет коллекцию портов, локальную структуру каталогов и инструментов, которые позволяют извлекать, компилировать и устанавливать пакеты из исходного кода с помощью make-файлов. Обычно удобнее пользоваться менеджером pkg, но иногда предварительно скомпилированные пакеты недоступны.

Обновление списка пакетов

Большинство систем содержит локальную базу данных пакетов, доступных в удаленных репозиториях. Перед установкой или обновлением пакета рекомендуется обновить эту базу данных. Частичным исключением из этого шаблона являются yum и DNF, которые проверяют наличие обновлений пакетов перед выполнением некоторых операций.

Операционная система Команда
Debian / Ubuntu sudo apt-get update
CentOS yum check-update
Fedora dnf check-update
FreeBSD Packages sudo pkg update
FreeBSD Ports sudo portsnap fetch update

Обновление установленных пакетов

Поддержка установленного программного обеспечения в актуальном состоянии без помощи системы управления пакетами – довольно трудоёмкое задание. Вам придется самостоятельно отслеживать обновления пакетов и извещения безопасности для сотен разных пакетов. Конечно, пакетный менеджер не решит всех проблем, которые могут возникнуть при обновлении программного обеспечения, но он поможет поддерживать большинство компонентов системы в актуальном состоянии при помощи всего нескольких команд.

В системе FreeBSD обновление установленных портов может потребовать ручной настройки. Прежде чем обновлять portmaster, рекомендуется ознакомиться с /usr/ports/UPDATING.

Система Команда
Debian / Ubuntu sudo apt-get upgrade
sudo apt-get dist-upgrade
CentOS sudo yum update
Fedora sudo dnf upgrade
FreeBSD Packages sudo pkg upgrade
FreeBSD Ports less /usr/ports/UPDATING
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a

Поиск пакетов

Большинство дистрибутивов предоставляет графический или управляемый в режиме меню интерфейс для наборов пакетов. Он позволяет просматривать категории и искать новое программное обеспечение. Однако чаще всего самым быстрым и самым эффективным способом поиска пакетов является поиск с помощью инструментов командной строки.

Система Команда
Debian / Ubuntu apt-cache search search_string
CentOS yum search search_string
yum search all search_string
Fedora dnf search search_string
dnf search all search_string
FreeBSD (пакеты) pkg search search_string
pkg search -f search_string
pkg search -D search_string
FreeBSD (порты) cd /usr/ports && make search name=package
cd /usr/ports && make search key=search_string

Информация о пакетах

Принимая решение, как пакет установить, обратитесь за помощью к подробному описанию пакетов. Этот удобочитаемый текст часто содержит полезные метаданные: номера версий, список зависимостей и т.п.

Установка пакетов из репозиториев

Зная имя необходимого пакета, его можно очень быстро установить при помощи одной команды. Также в одной команде можно перечислить все пакеты, которые нужно установить.

Установка пакета из локальной файловой системы

Иногда разработчики или поставщики предлагают пакетные файлы для скачивания, даже если приложение официально не упаковано для данной операционной системы.

Как правило, такие пакеты можно загрузить при помощи веб-браузера или утилиты curl в командной строке. После загрузки пакета его можно установить с помощью одной команды.

В Debian-подобных системах индивидуальными файлами пакетов управляет dpkg. Если пакет имеет зависимости, которых не установлены в системе, gdebi может загрузить их из официального репозитория.

В системах CentOS и Fedora для установки отдельных файлов и обработки необходимых зависимостей используется yum и dnf.

Система Команда
Debian / Ubuntu sudo dpkg -i package.deb
sudo apt-get install -y gdebi&& sudo gdebi package.deb
CentOS sudo yum install package.rpm
Fedora sudo dnf install package.rpm
FreeBSD (пакеты) sudo pkg add package.txz
sudo pkg add -f package.txz

Удаление пакетов

Менеджер пакетов знает, какие именно файлы предоставляет каждый конкретный пакет, потому с его помощью можно легко удалить все ненужные программы.

Система Команда
Debian / Ubuntu sudo apt-get remove package
sudo apt-get autoremove
CentOS sudo yum remove package
Fedora sudo dnf erase package
FreeBSD (пакеты) sudo pkg delete package
sudo pkg autoremove
FreeBSD (порты) sudo pkg delete package
cd /usr/ports/path_to_port && make deinstall

Получение справки

Кроме веб-документации системы Unix предоставляют удобный справочник, в котором можно найти информацию о большинстве команд оболочки. Чтобы открыть мануал, введите:

В справочнике можно перемещаться при помощи кнопок со стрелками. Нажмите /, чтобы искать по тексту страницы, и q, чтобы выйти.

Система Команда Примечания
Debian / Ubuntu man apt-get Обновление локальной базы данных пакетов и работа с пакетами.
man apt-cache Запрос локальной базы данных пакетов.
man dpkg Управление индивидуальными файлами пакетов и запрос установленных пакетов.
CentOS man yum
Fedora man dnf
FreeBSD пакеты man pkg Управление предварительно скомпилированными файлами пакетов.
FreeBSD порты man ports Управление коллекцией портов.

Дополнительные ссылки

Данное руководство знакомит с основами управления пакетами в Unix-подобных системах. Более подробную информацию по этой довольно сложной теме можно найти по следующим ссылкам:

Рассмотрите возможность настройки переменной среды PKG_CONFIG_PATH, если вы установили программное обеспечение с нестандартным префиксом. Что это значит ?

Я бы почти спросил об этом точно так же, за исключением того, что вы могли бы попросить примеры правильного использования переменной среды PKG_CONFIG_PATH, например, "что это такое и как я могу это использовать?" Кажется, что ответы, которые вы получили, пытались сказать вам это. Я часто нахожу это шоу во время ./configure, когда не удается найти зависимости.

PKG_CONFIG_PATH переменная окружения, которая указывает дополнительные пути, по которым pkg-config будут выполняться поиск файлов .pc

Эта переменная используется для дополнения пути поиска по умолчанию в pkg-config. В типичной системе Unix, он будет искать в каталогах /usr/lib/pkgconfig и /usr/share/pkgconfig . Это обычно покрывает установленные модули системы. Однако некоторые локальные модули могут быть установлены с другим префиксом, например /usr/local . В этом случае необходимо предварительно указать путь поиска, чтобы pkg-config могла найти файлы .pc.

pkg-config Программа используется для получения информации об установленных библиотек в системе. Основное назначение pkg-config - предоставить необходимую информацию для компиляции и связывания программы с библиотекой. Эти метаданные хранятся в файлах pkg-config. Эти файлы имеют суффикс .pc и находятся в определенных местах, известных инструменту pkg-config.

Чтобы проверить PKG_CONFIG_PATH значение, используйте эту команду:

Для установки PKG_CONFIG_PATH значения используйте:

@NathanKidd Спасибо за напоминание, комментарий удален. Первоначальная ошибка, похоже, была вызвана не оригинальным авторским редактированием. @remram похоже, что ошибки сейчас исправлены, но ваш комментарий оставляет людей в замешательстве, если они не внимательно изучают историю редактирования. Не могли бы вы проверить, довольны ли вы текущей точностью, и, возможно, удалить комментарий? (И я удалю мою.)

Первый ответ не является технически достаточно явным. На странице руководства (откройте терминал, введите man pkg-config ):

pkg-config извлекает информацию о пакетах из специальных файлов метаданных. Эти файлы названы в честь пакета и имеют .pc расширение. В большинстве систем, pkg-config выглядит /usr/lib/pkgconfig , /usr/share/pkgconfig , /usr/local/lib/pkgconfig и /usr/local/share/pkgconfig для этих файлов. Кроме того, он будет выглядеть в списке каталогов, разделенных двоеточиями (в Windows, разделенных точкой с запятой), указанных в PKG_CONFIG_PATH переменной среды.

Таким образом, pkg-config программа не находится в PKG_CONFIG_PATH каталоге; однако, если вы устанавливаете библиотеку, информация о том, чтобы использовать ее в automake сценарии, была доступна, и она должна находиться в каталоге pkg-config .

Чтобы узнать, где pkg-config (версия 0.24 или новее) ищет установленные библиотеки по умолчанию, используйте следующую команду:

Чтобы изменить этот путь, установите PKG_CONFIG_PATH переменную среды. Man-файл гласит PKG_CONFIG_PATH :

Разделенный двоеточиями (в Windows, разделенный точкой с запятой) список каталогов для поиска файлов .pc. Каталог по умолчанию всегда будет искать после поиска пути; по умолчанию это libdir / pkgconfig: datadir / pkgconfig, где libdir - это libdir, где pkg-config и datadir - это каталог данных, где был установлен pkg-config.

полезный скрипт будет echo $(pkg-config --variable pc_path pkg-config)$$ Это отличный ответ, который помог мне. Однако, чтобы уточнить, вы должны сказать «Добавить к этому пути», а не «Чтобы изменить», так как можно иметь пустые PKG_CONFIG_PATH и все еще иметь каталоги по умолчанию, плюс установка непустого значения не сбрасывает значения по умолчанию. Этот ответ был действительно полезен для меня, спасибо! Я пытался выяснить, каким был путь поиска по умолчанию для pkg-config, так как мой установлен с Linuxbrew, поэтому пути по умолчанию не существует. Спасибо!

Вы пытаетесь создать часть программного обеспечения, скажем, Widget. Виджет опирается на другую библиотеку, libcog ради аргумента. Процесс сборки виджета (возможно, скрипт configure) использует pkg-config, чтобы определить, как использовать libcog. pkg-config ничего не знает о libcog.

Если libcog не установлен, это ваша проблема. Есть большая вероятность, что стандартная установка libcog решит проблему. В зависимости от вашей системы вам может потребоваться установить дополнительную версию пакета для разработчиков; он часто имеет «-devel» или «-dev» в конце, поэтому, если вы устанавливаете «libcog», вам также может понадобиться установить «libcog-devel».

Если libcog установлен, он, вероятно, установлен не так, чтобы pkg-config могла его найти. Вероятно, где-то в вашей системе есть файл libcog.pc. Ради аргумента, это в /opt/cog/lib/pkgconfig/libcog.pc. В этом случае вы можете сообщить об этом pkg-config, установив PKG_CONFIG_PATH в каталог, содержащий libcog.pc. Так что в оболочке Борна или аналогичной, что-то вроде

Как только это будет сделано, мы надеемся, что повторный запуск команды, которая не удалась, сработает.

pkg-config - это компьютерная программа, предоставляющая унифицированный интерфейс для опроса установленных библиотек с целью компилирования программного обеспечения из его исходного кода. Это позволяет программистам и сценариям установки работать без явного знания подробной информации о пути к библиотеке. Pkg-config первоначально был разработан для Linux, но теперь он также доступен для различных операционных систем BSD,Microsoft Windows, Mac OS X и Solaris.

Он выводит различную информацию об установленных библиотеках. Эта информация может включать:

  • Параметры для компилятора C или C ++
  • Параметры для компоновщика
  • Версия рассматриваемого пакета

Первая реализация была написана в shell. Позднее она была переписана на C,с использованием библиотеки GLib.

Содержание

Описание

Когда библиотека установлена (автоматически с использованием RPM, deb или другой системы двоичной упаковки или путем компиляции из исходного кода), файл .pc должен быть включен и помещен в каталог с другими .pc (точный каталог зависит от вашей системы и указывается в man-странице pkg-config). Этот файл имеет несколько записей.

Эти записи обычно содержат список зависимых библиотек, которые также необходимо компилировать программам, использующим пакет. Записи также обычно включают расположение файлов заголовков, информацию о версии и описание.


Такие переменные как Name начинаются с ключевого слова, сопровождаемого двоеточием, и значения. Такие переменные, как prefix =, являются строкой, а значение - знаком равенства. Ключевые слова определены и экспортированы pkg-config. Переменные не нужны, но могут использоваться определениями ключевых слов для гибкости или для хранения данных, не охваченных pkg-config.

Ниже приводится краткое описание полей ключевых слов.

  • Name: читаемое человеком имя библиотеки или пакета. Это не влияет на использование инструмента pkg-config, который использует имя файла .pc.
  • Description: Краткое описание пакета.
  • URL: URL, где люди могут получить дополнительную информацию и загрузить пакет.
  • Version: строка, определяющая версию пакета.
  • Requires: список пакетов, необходимых для этого пакета. Версии этих пакетов могут быть указаны с помощью операторов сравнения =, <,>, <= или> =.
  • Requires.private: Список частных пакетов, необходимых для этого пакета, но не предназначенных для приложений. Здесь также применяются правила, специфичные для версии, из поля Requires.
  • Conflicts: необязательное поле, описывающее пакеты, с которыми конфликтует этот. Здесь также применяются правила, специфичные для версии, из поля Requires. Это поле также принимает несколько экземпляров одного и того же пакета. Например, Conflicts: bar < 1.2.3, bar >= 1.3.0.
  • Cflags: флаги компилятора, специфичные для этого пакета, и любые требуемые библиотеки, которые не поддерживают pkg-config. Если требуемые библиотеки поддерживают pkg-config, их следует добавить в Requires или Requires.private.
  • Libs: флаги ссылок, специфичные для этого пакета, и любые необходимые библиотеки, которые не поддерживают pkg-config. Здесь применяется то же правило, что и Cflags.
  • Libs.private: флаги ссылок для частных библиотек, которые требуются для этого пакета, но не для приложений. Здесь применяется то же правило, что и Cflags.

Написание файлов pkg-config

При создании файлов pkg-config для пакета сначала необходимо решить, как они будут распространяться. Каждый файл лучше всего использовать для описания одной библиотеки, поэтому каждый пакет должен иметь как минимум столько файлов pkg-config, сколько они устанавливают библиотек.

Имя пакета определяется через имя файла файла метаданных pkg-config. Это часть имени файла перед суффиксом .pc. Общий выбор - совместить имя библиотеки с именем .pc. Например, пакет, устанавливающий libfoo.so, будет иметь соответствующий файл libfoo.pc, содержащий метаданные pkg-config. Этот выбор не нужен; Файл .pc должен быть просто уникальным идентификатором для вашей библиотеки. Следуя приведенному выше примеру, foo.pc или foolib.pc, вероятно, будут работать так же хорошо.

Прежде чем описывать более полезные поля, будем демонстрировать определения переменных. Чаще всего используется определение путей установки, чтобы они не загромождали поля метаданных. Поскольку переменные рекурсивно разворачиваются, это очень полезно при использовании в сочетании с производными путями autoconf.

Pkg-config2.jpg

Наиболее важными полями метаданных pkg-config являются Requires, Requires.private, Cflags, Libs и Libs.private. Они будут определять метаданные, используемые внешними проектами, для компиляции и связывания с библиотекой.

Поскольку pkg-config всегда предоставляет флаги ссылок в библиотеках Requires, эти модули станут прямыми зависимостями программы. С другой стороны, библиотеки из Requires.private будут включены только при статической привязке. По этой причине обычно бывает целесообразно добавлять модули из одного пакета в Requires.

Поле Libs содержит флаги ссылок, необходимые для использования этой библиотеки. Кроме того, Libs и Libs.private содержат флаги ссылок для других библиотек, не поддерживаемых pkg-config. Как и в поле Requires, предпочтительно добавлять флаги ссылок для внешних библиотек в поле Libs.private, чтобы программы не приобретали дополнительную прямую зависимость.

Наконец, Cflags содержит флаги компилятора для использования библиотеки. В отличие от поля Libs, нет частного варианта Cflags. Это связано с тем, что типы данных и определения макросов необходимы независимо от сценария связывания.

Предполагая, что в системе установлены файлы .pc, инструмент pkg-config используется для извлечения метаданных для использования. Краткое описание параметров можно увидеть, выполнив

Рассмотрим систему с двумя модулями: foo и bar. Их .pc-файлы могут выглядеть так:

Pkg-config3.jpg

Версии модулей можно получить с помощью опции --modversion.

Pkg-config4.jpg

Чтобы напечатать флаги ссылок, необходимые для каждого модуля, используйте параметр --libs.

Установить пакеты: чтобы установить пакет, найдите его с помощью Пакет не установленных пакетов категории с помощью клавиш со стрелками на клавиатуре и клавиши ENTER. Выделите желаемый пакет, затем нажмите кнопку +. Запись о пакете должна стать зеленой, указывая на то, что он помечен для установки.

Смотрите также Ваш вопрос: Как мне найти маршруты в Linux?

Что такое pkg config Ubuntu?

Программа pkg-config используется для получения информации об установленных библиотеках в системе. Обычно он используется для компиляции и компоновки с одной или несколькими библиотеками. … В большинстве систем pkg-config ищет эти файлы в / usr / lib / pkgconfig, / usr / share / pkgconfig, / usr / local / lib / pkgconfig и / usr / local / share / pkgconfig.

Как установить пакет Linux?

Чтобы установить новый пакет, выполните следующие действия:

  1. Выполните команду dpkg, чтобы убедиться, что пакет еще не установлен в системе:…
  2. Если пакет уже установлен, убедитесь, что это нужная вам версия. …
  3. Запустите apt-get update, затем установите пакет и обновите:

.PKG работает в Linux?

Нет, вы не можете просто запускать приложения OS X в Linux. Да, ark может открывать архивы Apple pgk. Спасибо.

В чем разница между APT и PKG?

APT, Advanced Packaging Tool, предоставляет команды, используемые для наиболее распространенных операций: поиск в репозиториях, установка наборов пакетов и их зависимостей, а также управление обновлениями. … Система двоичных пакетов FreeBSD администрируется с помощью команды pkg.

Какое приложение открывает файлы PKG?

Поскольку файлы PKG сохраняются в виде обычного текста, их можно открывать и изменять с помощью текстового редактора, например Блокнот Microsoft или Apple TextEdit, которые входят в состав Windows и macOS. Если вы не можете открыть файл PKG в текстовом редакторе, скорее всего, у вас другой тип файла PKG.

Что значит PKG?

Упак. письменное сокращение для пакет.

Как мне извлечь файл .PKG?

Нажмите «Файл» в меню «Unarchiver», а затем нажмите «Разархивировать в текущую папку». Щелкните папку на вашем компьютере, содержащую файл PKG, из которого вы хотите извлечь файлы. Щелкните файл PKG, чтобы выбрать его, а затем щелкните «Разархивировать»Для извлечения файлов.

Читайте также: