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, ospacotes de arquivos de configuração e os arquivos pkg-config 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
Dfor "bin" ou "sbin",Dserá 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
Para obter informações detalhadas sobre a pesquisa de pacote, consulte a seção de procedimento de pesquisa do CMake 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
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.die.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 pacote 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. Isso se baseia no comportamento especificado pelas especificações do diretório base do XDG e pela hierarquia de arquivos systemd comum no Linux e em vários BSDs, mas não é um padrão em outras plataformas.
Em sistemas Linux e BSD, é comum utilizar o diretório $HOME/.local como o prefixo para instalações de pacote específicas do usuário. Essa convenção se origina na especificação do diretório base do XDG e na 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.