前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >conan入门(一):conan 及 JFrog Artifactory 安装

conan入门(一):conan 及 JFrog Artifactory 安装

作者头像
10km
发布2022-04-13 11:11:30
4K0
发布2022-04-13 11:11:30
举报
文章被收录于专栏:10km的专栏10km的专栏

conan 安装

Conan是一个面向 C 和 C++ 开发人员的软件包管理器。

Conan是通用且便携的。它适用于所有操作系统,包括 Windows、Linux、OSX、FreeBSD、Solaris 等,并且可以针对任何平台,包括桌面、服务器以及嵌入式和裸机设备的交叉构建。它与 Docker、MinGW、WSL 等其他工具以及 CMake、MSBuild、Makefiles、Meson、SCons 等所有构建系统集成。它甚至可以与任何专有的构建系统集成。

Conan 是完全免费和开源的,并且完全去中心化。它与 JFrog Artifactory 原生集成(包括免费的Conan Artifactory 社区版),使开发人员能够在自己的服务器上托管自己的私有包。ConanCenter中央存储库包含数百个流行的开源库包,其中包含许多用于主流编译器版本的预编译二进制文件。

Conan 可以为不同的构建配置管理任意数量的不同二进制文件,包括不同的架构、编译器、编译器版本、运行时、C++ 标准库等。当二进制文件不适用于一种配置时,它们可以根据需要从源构建。Conan 可以在每个平台上使用相同的命令和流程创建、上传和下载二进制文件,从而节省大量开发和持续集成时间。二进制兼容性甚至可以在每个包的基础上进行配置和定制。

conan 为Client/Server架构,前端只有一个conan程序用于与后台服务交互,后端为JFrog Artifactory.

打conan下载页面 https://conan.io/downloads.html就可以找到你需要的Client和Servert程序:

在这里插入图片描述
在这里插入图片描述

conan (Client)

conan 提供了各种操作系统平台的Client,下载你的操作系统所需要的版本,安装就可以了

在这里插入图片描述
在这里插入图片描述

python3

python3,python3,python3----重要的事性说三遍 conan 需要Python3 才能运行,所以不论你是什么平台,请勿必确认你当前python是python3,

在这里插入图片描述
在这里插入图片描述

命令行窗口输入python --version确认你的python版本

在这里插入图片描述
在这里插入图片描述

JFrog Artifactory

如果你不需要搭建私有制品库,或使用已经创建的私有制品库,可以跳过本章。

Artifactory 直译即为制品工厂(artifact factory ).

JFrog Artifactory是conan的后台服务.

JFrog Artifactory是通用制品管理系统(与Sonatype是同类产品),不仅支持conan,还支持支持所有包类型(maven,gladle,npm,go,rpm,deb,docker,nuget…) ,全部开发语言

connan官网提供的后端程序 JFrog Artifactory 准确说是免费的JFrog Artifactory 社区版 (JFrog Artifactory Community Edition For C/C++),只用于conan前端管理C/C++的制品。

原本为了省事打算试用 JFrog Artifactory的云端版本,这样就不需要安装服务端了,可是在申请云端版本试用过程中报了错,无法进行下去,所以我只能安装本地版本。

下载JFrog Artifactory安装包

你可以根据自己的服务端系统平台下载需要的JFrog Artifactory CPP-CE 安装包.我用的服务后台为Ubuntu 18.04.5 LTS,以下就以Ubuntu 18.04.5 LTS为例,说明安装JFrog Artifactory CPP-CE过程

所有Linux安装包都不适用于Arm64服务器

在这里插入图片描述
在这里插入图片描述

安装JFrog Artifactory

artifactory服务有两种可选择的安装方式:deb/rpm包自动安装(适用于特定的Linux发行版)和tar.gz包安装(适用于所有通用Linux发行版)

deb/rpm包安装

下载deb/rpm包安装更加方便,会将解压缩和执行installService.sh安装artifactory.service一步完成:

代码语言:javascript
复制
sudo dpkg -i jfrog-artifactory-cpp-ce-7.33.9.deb
  • 启动Artifactory 服务
代码语言:javascript
复制
sudo systemctl start artifactory.service
  • 停止Artifactory 服务
代码语言:javascript
复制
sudo systemctl stop artifactory.service
  • 查看Artifactory 服务状态
代码语言:javascript
复制
sudo systemctl status artifactory.service
tar.gz包安装

如果下载tar.gz包,则解压下载的安装包后就完成了安装,Artifactory服务需要手工启动,如果需要以systemctl方式启动服务,执行installService.sh脚本。

代码语言:javascript
复制
$ tar xvf jfrog-artifactory-cpp-ce-7.33.9-linux.tar.gz
  • 启动Artifactory 服务

以后台方式启动Artifactory 服务

代码语言:javascript
复制
$ cd artifactory-cpp-ce-7.33.9/app/bin
$ ./artifactoryctl start
  • 停止Artifactory 服务
代码语言:javascript
复制
$ cd artifactory-cpp-ce-7.33.9/app/bin
$ ./artifactoryctl stop
  • 查看Artifactory 服务状态
代码语言:javascript
复制
$ cd artifactory-cpp-ce-7.33.9/app/bin
$./artifactoryctl status
  • 安装systemctl 服务

执行installService.sh安装artifactory.service

代码语言:javascript
复制
$ sudo ./installService.sh

然后执行systemctl启动服务命令:

代码语言:javascript
复制
$ sudo systemctl daemon-reload
$ sudo systemctl start artifactory.service

防火墙

artifactory服务默认的对外服务端口是8081,8082,需要在防火墙开启端口,以ufw防火为例:

代码语言:javascript
复制
sudo ufw allow 8081
sudo ufw allow 8082

第一次登录

这里输入JFrog Artifactory的web服务入口地址 http://127.0.0.1:8081(请将127.0.0.1改为你的服务IP或域名),准备第一次登录

当服务已经启动但还未准备好时,打开入口会显示如下动图:

在这里插入图片描述
在这里插入图片描述

初始的管理帐户和密码为:admim/password

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一次成功登录后根据提示,创建制品仓库(Repository),创建用户,创建用户组等等,所有步骤完成。一个JFrog Artifactory conan制品仓库就算初始化完成啦。后续的工作就是在前端使用conan来发布,上传制品的工作了。

conan 连接JFrog Artifactory

在本文开始就已经安装了conan,现在私有的JFrog Artifactory制品库已经安装就绪,就可以将这制品库添加到conan的制品库列表来使用了

添加私有仓库

执行conan remote list看一下都有那些远程仓库(制品库),显示conan默认的制品库列表只有一个conan自己维护的中央仓库conancenter

代码语言:javascript
复制
$ conan remote list
conancenter: https://center.conan.io [Verify SSL: True]

conancenter(https://center.conan.io)保存了大部分知名的,常用的开源库,般的linux,windows开发都可以直接引用,这个后续再展开讲

将私有制品库添加到conan远程仓库列表中,命名为privrepo

代码语言:javascript
复制
conan remote add privrepo http://127.0.0.1:8082/artifactory/api/conan/${repo}
# add a remote repository as 'privrepo'
# ${repo}为前面创建的制品仓库的名字-'stable'

如果添加错了,可以删除之后再重新添加

代码语言:javascript
复制
conan remote remove privrepo
# remove remote repository named 'privrepo'

添加私有制品库后再执行conan remote list,就可以在列表中看到已经添加的privrepo仓库

代码语言:javascript
复制
$ conan remote list
conancenter: https://center.conan.io [Verify SSL: True]
privrepo: http://127.0.0.1:8082/artifactory/api/conan/${repo} [Verify SSL: True]

设置登录用户和密码

为私有制品库privrepo指定访问的用户名和密码,以支持后续免密上传操作

代码语言:javascript
复制
conan user -p $your_password -r privrepo $your_username
# set connect username/password for remote repository named 'privrepo'

执行conan user不加任何参数显示所有仓库对应的登录用户名

代码语言:javascript
复制
$ conan user
Current user of remote 'conancenter' set to: 'None' (anonymous)
Current user of remote 'privrepo' set to: '${your_username}' [Authenticated]
# ${your_username}设置的登录用户名

第一次上传

以下是根据conan官方文档《Getting started》整理的上传示例

conan new

首先使用conan new 命令创建一个 Hello World C++ 库示例工程:

代码语言:javascript
复制
$ mkdir hellopkg && cd hellopkg
$ conan new hello/0.1 --template=cmake_lib
File saved: conanfile.py
File saved: CMakeLists.txt
File saved: src/hello.cpp
File saved: src/hello.h
File saved: test_package/conanfile.py
File saved: test_package/CMakeLists.txt
File saved: test_package/src/example.cpp

hello/0.1是 conan的一个官方示例项目,执行上面的conan new命令后会生成如下文件:

  • conanfile.py:在根文件夹中有一个conanfile.py,它是主要的配置文件,负责定义包的构建和使用方式。
  • CMakeLists.txt:一个简单的通用CMakeLists.txt,其中没有关于conan的任何具体内容。
  • src文件夹:包含简单 C++ “hello”库的src文件夹。
  • (可选)test_package文件夹:包含一个示例应用程序,该应用程序将需要并与创建的包链接。这不是强制性的,但检查我们的包是否正确创建很有用。 文件夹的内容test_package现在对于理解包是如何创建的并不重要,重要的是:
  • test_package文件夹不同于单元测试或集成测试。这些测试是“包”测试,并验证包是否正确创建,以及包使用者将能够链接它并重用它。
    • 它本身是一个小型的柯南项目,它包含自己的conanfile.py,以及它的源代码,包括构建脚本,这取决于正在创建的包,并构建和执行一个需要包中的库的小应用程序。
    • 它不属于包。它仅存在于源存储库中,而不存在于包中。

conan create

接下来我们使用当前默认配置(默认配置文件)从源构建包,然后让test_package文件夹测试包:

代码语言:javascript
复制
$ conan create . demo/testing
...
hello/0.1: Hello World Release!
  hello/0.1: _M_X64 defined
  ...

如果显示“ Hello World Release!” ,表明成功了。

在这里插入图片描述
在这里插入图片描述

conan search

我们现在可以执行conan search验证二进制包文件是否在conan本地仓库中:

代码语言:javascript
复制
$ conan search
Existing package recipes:

hello/0.1@demo/testing

conan本地仓库保存在$HOME/.conan/data下,资源管理器器打开文件夹也能看到conan create生成的数据

在这里插入图片描述
在这里插入图片描述

conan upload

如下执行conan upload 命令上传hello/0.1到远程私有制品仓库privrepo

代码语言:javascript
复制
$ conan upload hello/0.1@demo/testing --all -r=privrepo
Uploading to remote 'privrepo':
Uploading hello/0.1@demo/testing to remote 'privrepo'                            
Compressing recipe sources...
Uploading conan_sources.tgz -> hello/0.1@demo/testing
Uploading conanfile.py -> hello/0.1@demo/testing
Uploading conanmanifest.txt -> hello/0.1@demo/testing
Uploaded conan recipe 'hello/0.1@demo/testing' to 'privrepo': http://127.0.0.1:8082/artifactory/api/conan/stable
Uploading package 1/1: 63da998e3642b50bee33f4449826b2d623661505 to 'facelib'    
Compressing package...
Uploading conan_package.tgz -> hello/0.1@demo/testing:63da
Uploading conaninfo.txt -> hello/0.1@demo/testing:63da
Uploading conanmanifest.txt -> hello/0.1@demo/testing:63da

上传成功在JFrog Artifactory后台制品仓库(stable)就可以上传的包:

在这里插入图片描述
在这里插入图片描述

参考资料

《conan的安装、使用、创建包、上传包等一系列操作》

《Getting started》

《Uploading Packages to Remotes》

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • conan 安装
    • conan (Client)
      • python3
    • JFrog Artifactory
      • 下载JFrog Artifactory安装包
      • 安装JFrog Artifactory
      • 防火墙
      • 第一次登录
    • conan 连接JFrog Artifactory
      • 添加私有仓库
      • 设置登录用户和密码
    • 第一次上传
      • conan new
      • conan create
      • conan search
      • conan upload
    • 参考资料
    相关产品与服务
    制品库
    CODING 制品库(CODING Artifact Repositories,CODING-AR)用以管理源代码编译后的构建产物,支持 Docker、Maven、Helm、Npm 包等常见制品库类型,制品库可以跟源代码协同进行版本化控制,可以与本地各构建工具和云上的持续集成,持续部署无缝结合,并支持漏洞扫描等特性。为研发团队提供优质高效的构建物管理服务,把控构建物质量。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档