2017-02-12 14 views
2

Как сообщить MacPorts, что у меня уже установлена ​​определенная библиотека?Macports регистрирует существующую библиотеку, построенную из источника

Например, я построил libcurl с нуля, чтобы получить протокол http2 с nghttp2, openssl и zlib. Я установил их в /opt/local - то же место, что и все MacPort libs в моей системе. Однако Macports не признает, что они уже установлены.

Как сообщить MacPorts, что они уже установлены, а также их версии? Зачем? Потому что я пытаюсь сделать:

port install py35-pip, но в нем указано, что libz и openssl не установлены.

ответ

2

MacPorts не поддерживает это, по нескольким причинам:

  1. Вы не должны вручную изменять файлы в /opt/local, которые обычно управляется MacPorts. MacPorts сохраняет определенные метаданные (например, требуемые зависимости) об установленных файлах, которые больше не работают, когда вы вручную устанавливаете файлы в /opt/local.
  2. MacPorts не знает, какую конфигурацию вы использовали для сборки двоичного файла, который вы вручную установили в /opt/local. Это может быть версия, которая больше не работает с определенной зависимостью, она может быть построена против другой стандартной библиотеки C++ в случае кода C++ или может быть несовместимой по ряду других причин. Поскольку MacPorts хочет уменьшить нагрузку на поддержку запросов от людей, которые изменили некоторые из своих портов, это не является функцией поддержки MacPorts.

Однако MacPorts уже поддерживает установку завитка с поддержкой nghttp2. Смотрите вывод port variants curl:

curl has the variants: 
    ares: Support resolving names asynchronously 
    darwinssl: Allow secure connections using GNU TLS 
    * conflicts with gnutls ssl wolfssl 
    gnutls: Allow secure connections using GNU TLS 
    * conflicts with darwinssl ssl wolfssl 
    gss: Support the Generic Security Service API 
    http2: Support HTTP/2 with nghttp2 
    idn: Enable support for internationalized domain names (IDN) 
    metalink: Support Metalink XML download description files 
    openldap: Support performing Lightweight Directory Access Protocol queries with OpenLDAP 
    sftp_scp: Support SFTP/SCP connections via libssh2 
    spnego: Enable SPNEGO authentication support 
[+]ssl: Allow secure connections using OpenSSL 
    * conflicts with darwinssl gnutls wolfssl 
    universal: Build for multiple architectures 
    wolfssl: Allow secure connections using wolfSSL, formerly CyaSSL 
    * conflicts with darwinssl gnutls ssl 

Таким образом, в этом случае, вы можете просто установить curl +http2, либо с помощью sudo port install curl +http2 (если вы не устанавливали это уже есть) или с помощью sudo port upgrade --enforce-variants curl +http2 (если у вас она уже установлена) в добиться того же.

См. Также https://trac.macports.org/wiki/FAQ#usrlocal для /usr/local и MacPorts в целом.

+0

Но тогда он начинает устанавливать все эти зависимости для завитки, которые мне не нужны. Мне не нужен python 2.7, потому что он уже установлен в системе по умолчанию. Мне не нужны janson и все другие зависимости. – Brandon

+0

Также есть FAQ для этого вопроса: https://trac.macports.org/wiki/FAQ#ownlibs. – neverpanic