Как установить pkg config на linux
Самые современные 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 :
полезный скрипт будет echo $(pkg-config --variable pc_path pkg-config)$$ Это отличный ответ, который помог мне. Однако, чтобы уточнить, вы должны сказать «Добавить к этому пути», а не «Чтобы изменить», так как можно иметь пустые PKG_CONFIG_PATH и все еще иметь каталоги по умолчанию, плюс установка непустого значения не сбрасывает значения по умолчанию. Этот ответ был действительно полезен для меня, спасибо! Я пытался выяснить, каким был путь поиска по умолчанию для pkg-config, так как мой установлен с Linuxbrew, поэтому пути по умолчанию не существует. Спасибо!Разделенный двоеточиями (в Windows, разделенный точкой с запятой) список каталогов для поиска файлов .pc. Каталог по умолчанию всегда будет искать после поиска пути; по умолчанию это libdir / pkgconfig: datadir / pkgconfig, где libdir - это libdir, где pkg-config и datadir - это каталог данных, где был установлен pkg-config.
Вы пытаетесь создать часть программного обеспечения, скажем, 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-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-файлы могут выглядеть так:
Версии модулей можно получить с помощью опции --modversion.
Чтобы напечатать флаги ссылок, необходимые для каждого модуля, используйте параметр --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?
Чтобы установить новый пакет, выполните следующие действия:
- Выполните команду dpkg, чтобы убедиться, что пакет еще не установлен в системе:…
- Если пакет уже установлен, убедитесь, что это нужная вам версия. …
- Запустите 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, чтобы выбрать его, а затем щелкните «Разархивировать»Для извлечения файлов.
Читайте также: