Como: Instalar libbson/libmongoc a partir da fonte
Nesta página
Importante
Esta página pressupõe que você possa configurar e construir com êxito os componentes que deseja instalar, o que é detalhado e explicado na página de tutorial Criando Bibliotecas de Driver C a partir da Origem . Enquanto esse tutorial orienta a compilação das fontes e o funcionamento de uma instalação mínima, esta página oferecerá orientações mais profundas sobre as nuances e as opções disponíveis para instalar as bibliotecas mongo-c-driver
a partir de uma compilação de origem.
mongo-c-driver
usa CMake para gerar suas regras de instalação e instala uma variedade de artefatos de interesse. Para integração com programas downstream, os pacotes de arquivos de configuração e pkg-config arquivos seriam de particular interesse.
Se você pretende importar libbson
ou libmongoc
via CMake ou pkg-config, pode ser útil estar ciente de como a respectiva ferramenta procura metadados do pacote.
O CMake cria um conjunto de caminhos de pesquisa com base em um conjunto de prefixos, que são lidos do ambiente e das configurações do CMake em tempo de configuração.
Em particular, a variável de ambiente $PATH
será utilizada para construir os prefixos padrão para o sistema. Para cada diretório D
em $PATH
:
Se o componente de caminho final de
D
for "bin
" ou "sbin
",D
será substituído pelo caminho pai deD
.D
é adicionado como um prefixo do Atlas Search .
Isso tem o efeito de que diretórios comuns específicos do Unix em $PATH
, como /usr/bin
e /usr/local/bin
acabarão causando CMake para Atlas Search em /usr
e /usr/local
é prefixos, respectivamente. Se você tiver o diretório $HOME/.local/bin
no seu $PATH
, o diretório $HOME/.local
também será adicionado ao caminho do Atlas Search . Ter $HOME/.local/bin
em $PATH
é um padrão cada vez mais comum para muitos shell Unix e é recomendado se você pretende usar um Prefixo de Instalação Local de Usuário sem Privilégios (Recomendado) para sua instalação.
Além disso, a variável de ambiente CMAKE_PREFIX_PATH
será utilizada para construir uma lista de caminhos. Por padrão, esta variável de ambiente não está definida.
No Windows, os diretórios %ProgramW6432%
, %ProgramFiles%
, %ProgramFiles(x86)%
, %SystemDrive%\\Program Files
e %SystemDrive%\\Program Files (x86)
também serão adicionados. (Eles vêm da variável CMAKE_SYSTEM_PREFIX_PATH
CMake, que é definida durante a detecção de plataforma do CMake.)
Dica
Veja também:
Para obter informações detalhadas sobre a pesquisa de pacotes, consulte o procedimento de pesquisa do CMake seção para obter detalhes completos.
A ferramenta de linha de comando pkg-config
procura arquivos .pc
em vários diretórios, por padrão em relação ao caminho da própria ferramenta pkg-config
. Para obter a lista de diretórios que seu pkg-config
pesquisará por padrão, utilize o seguinte comando:
$ pkg-config "pkg-config" --variable="pc_path"
Diretórios adicionais podem ser especificados usando a variável de ambiente $PKG_CONFIG_PATH
. Esses caminhos serão pesquisados antes dos caminhos pkg-config
padrão.
No Windows, as chaves de registro HKCU\Software\pkgconfig\PKG_CONFIG_PATH
e HKLM\Software\pkgconfig\PKG_CONFIG_PATH
podem ser usadas para especificar diretórios de pesquisa adicionais para pkg-config
. A adição de diretórios à chave HKCU\…
é recomendada para persistir diretórios de pesquisa específicos do usuário.
Dica
Veja também:
Se você tiver man
e pkg-config
instalados em seu sistema, os procedimentos de pesquisa serão detalhados em man 1 pkg-config
. Esta documentação também pode ser encontrada em muitos arquivos de páginas de manual na web, como pkg-config em linux.dia.net.
Escolher um prefixo
Chamaremos o diretório para a instalação local do usuário $PREFIX
. A seleção do caminho para esse diretório é um tanto arbitrária, mas há algumas recomendações a serem consideradas. O diretório $PREFIX
é o caminho que você fornecerá ao CMake ou pkg-config
ao configurar um projeto downstream.
Usando um prefixo de instalação local do usuário sem privilégios (recomendado)
É recomendável instalar bibliotecas mongo-c-driver
personalizadas em um local do sistema de arquivos sem privilégios específico para a conta de usuário.
Ao contrário de outros sistemas do tipo Unix, o macOS não tem um diretório específico para instalações de pacotes locais do usuário, e cabe ao usuário criar esses diretórios.
A escolha do diretório a ser usado é essencialmente arbitrária. Para instalações por usuário, o único requisito é que o diretório possa ser gravável pelo usuário que deseja executar e usar a instalação.
Para fins de uniformidade com outras variantes do Unix, este guia fará uma leve referência ao uso de $HOME/.local
como um prefixo de instalação local do usuário. Isto é baseado no comportamento especificado pelo diretório base XDG especificações e a hierarquia de arquivos systemd comum no Linux e em vários BSDs, mas não é padrão em outras plataformas.
Em sistemas Linux e BSD, é comum utilizar o $HOME/.local
diretório como o prefixo para instalações de pacote específicas do usuário. Esta convenção se origina no diretório base do XDG especificação e a hierarquia de arquivos systemd
Devido ao seu uso amplo e suporte em muitas outras ferramentas, este guia recomenda o uso de $HOME/.local
como um prefixo de instalação local do usuário.
No Windows, existe um diretório dedicado para arquivos locais do usuário no %UserProfile%\\AppData\\Local
. Para referenciá-lo, expanda a variável de ambiente do %LocalAppData%
. (Não use a variável de ambiente %AppData%
):
Apesar de existir, esse diretório não tem uma estrutura prescrita que se adapte aos nossos fins. A escolha do prefixo de instalação local do usuário é arbitrária. Este guia desaconselha a criação de arquivos e diretórios adicionais diretamente no diretório inicial do usuário.
Considere usar %LocalAppData%\\MongoDB
como prefixo para fins de componentes instalados manualmente.
Selecionando um prefixo de instalação em todo o sistema
Se você deseja instalar as bibliotecas do mongo-c-driver
em um diretório visível para todos os usuários, existem algumas opções padrão.
Usar uma instalação $PREFIX
de /usr/local/
é a principal recomendações para todas as plataformas Unix, mas isso pode variar em alguns sistemas obscuros.
Aviso
NÃO use /usr/
nem /
(o diretório raiz) como prefixo: esses diretórios foram projetados para serem cuidadosamente gerenciados pelo sistema. O diretório /usr/local
é intencionalmente reservado com o objetivo de instalação de software não gerenciado.
Como alternativa, considere instalar em um diretório distinto que possa ser facilmente removido ou realocado, como /opt/mongo-c-driver/
. Isso será facilmente identificável e não interagirá com outros softwares no sistema sem optar explicitamente por participar.
Aviso
É altamente desaconselhado instalar manualmente software em todo o sistema no Windows. Em vez disso, prefira usar um prefixo de instalação sem privilégios por usuário.
Se você deseja executar uma instalação em todo o sistema no Windows, prefira usar um subdiretório nomeado do %ProgramData%
, que não exige privilégios administrativos para ler e escrever. (por exemplo, %ProgramData%\\mongo-c-driver
)
Instalando com CMake
Depois de configurar e construir as bibliotecas com êxito e selecionar um $PREFIX
adequado, você poderá instalar os resultados construídos. Faça com que o nome $BUILD
se refira ao diretório onde você executou a construção (este é o diretório que contém CMakeCache.txt
, entre muitos outros arquivos).
A partir de uma linha de comando, a instalação no $PREFIX
escolhido pode ser executada via CMake usando a opção cmake --install subcommand
:
$ cmake --install "$BUILD" --prefix "$PREFIX"
Importante
Se você configurou as bibliotecas enquanto usava um gerador de múltiplas configurações (por exemplo, Visual Studio, Xcode), também precisará passar a opção de linha de comando --config
e deverá passar o valor da configuração de compilação que deseja instalar . Para qualquer valor escolhido de --config
usado para instalação, você também deve ter executado anteriormente um cmake --build
dentro desse diretório com o mesmo valor --config
.
Observação
Se você optar por usar uma instalação de todo o sistema $PREFIX
, é possível que precise executar a instalação como um usuário privilegiado. Se você não puder ou não quiser executar a instalação como um usuário privilegiado, deverá usar um prefixo de instalação por usuário.
Dica
Não é necessário definir um CMAKE_INSTALL_PREFIX
se você usar a opção de linha de comando --prefix
com cmake --install
. A opção --prefix
substituirá o que tiver sido especificado por CMAKE_INSTALL_PREFIX
quando o projeto foi configurado.