CentOS7 安装 Archiver Appliance 的 Grafana服务

2023-05-16

1. 安装 Grafana 7

采用rpm的安装方式:

$ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-7.5.13-1.x86_64.rpm
$ sudo rpm -Uvh grafana-enterprise-7.5.13-1.x86_64.rpm 

开启Grafana服务(默认服务端口3000)

$ systemctl daemon-reload
$ systemctl start grafana-server
$ systemctl status grafana-server

安装的详细细节:
Installs binary to /usr/sbin/grafana-server
Copies init.d script to /etc/init.d/grafana-server
Installs default file (environment vars) to /etc/sysconfig/grafana-server
Copies configuration file to /etc/grafana/grafana.ini
Installs systemd service (if systemd is available) name grafana-server.service to /usr/lib/systemd/system/grafana-server.service
The default configuration uses a log file at /var/log/grafana/grafana.log
The default configuration specifies an sqlite3 database at /var/lib/grafana/grafana.db

Grafana的介绍与使用
Install on RPM-based Linux (CentOS, Fedora, OpenSuse, Red Hat)

2. 安装 Go

$ wget https://studygolang.com/dl/golang/go1.17.6.linux-amd64.tar.gz
$ tar -xvf go1.17.6.linux-amd64.tar.gz
$ mkdir -p $HOME/gopath		//用于存放go get的安装包
$ vim ~/.bashrc
添加
GOROOT=$HOME/go
GOPATH=$HOME/gopath
export PATH=$GOROOT/bin:$PATH
export GOPATH
$ . ~/.bashrc

查看go版本:

$ go version
go version go1.17.6 linux/amd64

CentOS7安装Go环境
Go语言Centos7安装

3. 安装nodejs和yarn

安装nodejs 14:

$ wget https://nodejs.org/download/release/v14.9.0/node-v14.9.0-linux-x64.tar.gz
$ tar -xvf node-v14.9.0-linux-x64.tar.gz
$ wget https://github.com/yarnpkg/yarn/releases/download/v1.22.17/yarn-v1.22.17.tar.gz
$ tar -zxvf yarn-v1.22.17.tar.gz
$ vim ~/.bashrc
添加
NODEJS=$HOME/node-v14.9.0-linux-x64
YARN_HOME=$HOME/yarn-v1.22.17
export PATH=$YARN_HOME/bin:$NODEJS/bin:$PATH
$ . ~/.bashrc

查看nodejs、npm和yarn版本:

$ node -v
v14.9.0
$ npm -v
6.14.8
$ yarn -v
1.22.17

CentOS7 安装 nodejs
在centos7下安装nodejs14
centos7 安装nodejs和yarn最新版本

4. 下载grafana-plugin-sdk-go

$ go get -u github.com/grafana/grafana-plugin-sdk-go

直接执行以上命令会报错go get: module github.com/grafana/grafana-plugin-sdk-go: Get "https://proxy.golang.org/github.com/grafana/grafana-plugin-sdk-go/@v/list": dial tcp 142.251.42.241:443: i/o timeout
因为默认的GOPROXY指定的网站无法访问:

$ go env GOPROXY
GOPROXY="https://proxy.golang.org,direct"

更改GOPROXY为国内代理,并再次执行该命令:

$ go env -w GOPROXY=https://goproxy.cn
$ go get -u github.com/grafana/grafana-plugin-sdk-go
go: downloading github.com/grafana/grafana-plugin-sdk-go v0.125.0
go: downloading github.com/magefile/mage v1.11.0
go: downloading github.com/magefile/mage v1.12.1

Go proxy 设置
go get命令——一键获取代码、编译并安装
go get
go安装依赖包(go get, go module)

5. 安装mage

由于上一步骤中已经下载了mage安装包,所以可直接安装:

$ cd ~/gopath/pkg/mod/github.com/magefile/mage@v1.12.1
$ go run bootstrap.go 

报错Error: error creating generated mainfile: open mage_output_file.go: permission denied exit status 1
这是因为mage@v1.12.1文件夹及其中的文件只有可读属性:

$ ll ~/gopath/pkg/mod/github.com/magefile
dr-xr-xr-x.  9 dongxw dongxw 4096 Feb  8 16:22 mage@v1.11.0
dr-xr-xr-x. 10 dongxw dongxw 4096 Feb  8 16:40 mage@v1.12.1

为其添加可写属性后,即可执行成功:

$ go run bootstrap.go 
Running target: Install
exec: go "env" "GOBIN"
exec: go "env" "GOPATH"
exec: git "rev-parse" "--short" "HEAD"
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
exec: git "describe" "--tags"
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
exec: go "build" "-o" "/home/dongxw/gopath/bin/mage" "-ldflags=-X \"github.com/magefile/mage/mage.timestamp=2022-02-08T16:40:51+08:00\" -X \"github.com/magefile/mage/mage.commitHash=\" -X \"github.com/magefile/mage/mage.gitTag=dev\"" "github.com/magefile/mage"

此时mage的可执行文件已经安装在$GOPATH/bin路径下。在~/.bashrc文件中更改PATH:

PATH=$GOPATH/bin:$PATH

https://github.com/magefile/mage

6. 下载datasource plugin到Grafana的plugins文件夹下

测试了两种datasource plugin,分别为keck-observatory-epics-grafana-datasource和sasaki77-archiverappliance-datasource。

6.1 下载keck-observatory-epics-grafana-datasource
$ wget https://github.com/KeckObservatory/epics-grafana-datasource.zip
$ sudo unzip epics-grafana-datasource-master.zip -d /var/lib/grafana/plugins
6.2 下载sasaki77-archiverappliance-datasource
$ wget https://github.com/sasaki77/archiverappliance-datasource/releases/archiverappliance-datasource-1.3.3.tar.gz
$ tar -zxvh archiverappliance-datasource-1.3.3.tar.gz
$ cd /var/lib/grafana/plugins
$ sudo mv /home/dongxw/archiverappliance-datasource-1.3.3 .

7. 构建plugin

7.1 使用keck-observatory-epics-grafana-datasource
$ cd /var/lib/grafana/plugins/epics-grafana-datasource-master/
$ mage -v

$ yarn install --ignore-engines
yarn install v1.22.17
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning "@grafana/toolkit > @grafana/eslint-config@1.0.0-rc1" has incorrect peer dependency "eslint-plugin-jsdoc@^21.0.0".
warning "@grafana/toolkit > @grafana/ui > storybook-dark-mode@0.4.0" has unmet peer dependency "@storybook/api@>= 5.x".
warning "@grafana/toolkit > @grafana/ui > storybook-dark-mode@0.4.0" has unmet peer dependency "@storybook/addons@>= 5.x".
warning "@grafana/toolkit > @grafana/ui > storybook-dark-mode@0.4.0" has unmet peer dependency "@storybook/components@>= 5.x".
warning "@grafana/toolkit > @grafana/ui > storybook-dark-mode@0.4.0" has unmet peer dependency "@storybook/core-events@>= 5.x".
warning "@grafana/toolkit > @grafana/ui > storybook-dark-mode@0.4.0" has unmet peer dependency "@storybook/theming@>= 5.x".
warning "@grafana/toolkit > @grafana/ui > @grafana/slate-react > slate-react-placeholder@0.2.9" has unmet peer dependency "slate-react@>=0.22.0".
[4/4] Building fresh packages...
Done in 271.61s.

$ yarn build
yarn run v1.22.17
$ grafana-toolkit plugin:build
鉅?Preparing  Created: /var/lib/grafana/plugins/epics-grafana-datasource-master/.prettierrc.js
鉁?Preparing
鉁?Linting
鉅?Running tests  Using standard jest plugin config /var/lib/grafana/plugins/epics-grafana-datasource-master/node_modules/@grafana/toolkit/src/config/jest.plugin.config.local.js
No tests found, exiting with code 0
鉁?Running tests
鉅?Compiling...  Starting type checking service...
  Using 1 worker with 2048MB memory limit
鉅?Compiling...  Browserslist: caniuse-lite is outdated. Please run:
  npx browserslist@latest --update-db
鉅?Compiling...  
   Hash: 91397ae504d2f08e5a19
  Version: webpack 4.41.5
  Time: 7132ms
  Built at: 02/08/2022 5:06:26 PM
                  Asset       Size  Chunks                   Chunk Names
                LICENSE   11.1 KiB          [emitted]        
              README.md   1.79 KiB          [emitted]        
           img/logo.svg   13.7 KiB          [emitted]        
              module.js   16.8 KiB       0  [emitted]        module
  module.js.LICENSE.txt  808 bytes          [emitted]        
          module.js.map   81.7 KiB       0  [emitted] [dev]  module
            plugin.json  942 bytes          [emitted]        
  Entrypoint module = module.js module.js.map
   [0] external "react" 42 bytes {0} [built]
   [1] external "@grafana/ui" 42 bytes {0} [built]
   [2] ../node_modules/lodash/isObject.js 733 bytes {0} [built]
   [6] ../node_modules/lodash/identity.js 370 bytes {0} [built]
  [10] ../node_modules/lodash/eq.js 799 bytes {0} [built]
  [11] ../node_modules/lodash/isArrayLike.js 830 bytes {0} [built]
  [13] ../node_modules/lodash/_isIndex.js 759 bytes {0} [built]
  [15] external "@grafana/data" 42 bytes {0} [built]
  [16] external "@grafana/runtime" 42 bytes {0} [built]
  [17] ../node_modules/lodash/defaults.js 1.71 KiB {0} [built]
  [18] ../node_modules/lodash/_baseRest.js 559 bytes {0} [built]
  [19] ../node_modules/lodash/_overRest.js 1.07 KiB {0} [built]
  [35] ../node_modules/lodash/_isIterateeCall.js 877 bytes {0} [built]
  [36] ../node_modules/lodash/keysIn.js 778 bytes {0} [built]
  [51] ./module.ts + 5 modules 21.6 KiB {0} [built]
       | ./module.ts 296 bytes [built]
       | ./DataSource.ts 1.6 KiB [built]
       | ./ConfigEditor.tsx 2.58 KiB [built]
       | ./QueryEditor.tsx 6.97 KiB [built]
       | ../node_modules/tslib/tslib.es6.js 10 KiB [built]
       | ./types.ts 91 bytes [built]
      + 37 hidden modules 
  
鉁?Compiling...
Done in 17.13s.

$ mage -v
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.Backend-fm
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.Darwin-fm
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.Linux-fm
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.Windows-fm
exec: go build -o dist/gpx_epics-grafana-datasource_darwin_amd64 -tags netgo -ldflags -w ./pkg
exec: go build -o dist/gpx_epics-grafana-datasource_windows_amd64.exe -tags netgo -ldflags -w ./pkg
exec: go build -o dist/gpx_epics-grafana-datasource_linux_amd64 -tags netgo -ldflags -w ./pkg
7.2 使用sasaki77-archiverappliance-datasource
$ cd /var/lib/grafana/plugins/archiverappliance-datasource-1.3.3/

########## build frontend ##########
$ yarn install --ignore-engines  # 若未加--ignore-engines,则会提示node版本错误

$ yarn dev  # Build plugin in development mode
yarn run v1.22.17
$ grafana-toolkit plugin:dev
鉁?Linting
鉅?Bundling plugin in dev mode  Starting type checking service...
  Using 1 worker with 2048MB memory limit
鉅?Bundling plugin in dev mode  Browserslist: caniuse-lite is outdated. Please run:
  npx browserslist@latest --update-db
鉅?Bundling plugin in dev mode  
   Hash: 0c3dd2d9e1067553ff8f
  Version: webpack 4.41.5
  Time: 15185ms
  Built at: 02/09/2022 3:24:35 PM
                 Asset       Size  Chunks                          Chunk Names
          CHANGELOG.md    3.2 KiB          [emitted]               
               LICENSE   1.09 KiB          [emitted]               
             README.md    8.3 KiB          [emitted]               
               dark.js   3.85 KiB    dark  [emitted]               dark
           dark.js.map   3.62 KiB    dark  [emitted] [dev]         dark
    img/EPICS_Logo.png   2.47 KiB          [emitted]               
              light.js   3.86 KiB   light  [emitted]               light
          light.js.map   3.62 KiB   light  [emitted] [dev]         light
             module.js   4.35 MiB  module  [emitted]        [big]  module
         module.js.map   3.09 MiB  module  [emitted] [dev]         module
           plugin.json    1.1 KiB          [emitted]               
       styles/dark.css  679 bytes    dark  [emitted]               dark
   styles/dark.css.map   1.05 KiB    dark  [emitted] [dev]         dark
      styles/light.css  680 bytes   light  [emitted]               light
  styles/light.css.map   1.05 KiB   light  [emitted] [dev]         light
  Entrypoint module [big] = module.js module.js.map
  Entrypoint light = styles/light.css light.js styles/light.css.map light.js.map
  Entrypoint dark = styles/dark.css dark.js styles/dark.css.map dark.js.map
  [../node_modules/ms/index.js] 2.95 KiB {module} [built]
  [../node_modules/tslib/tslib.es6.js] 10 KiB {module} [built]
  [../node_modules/uuid/dist/esm-browser/index.js] 412 bytes {module} [built]
  [./DataSource.ts] 23.6 KiB {module} [built]
  [./aafunc.ts] 6.6 KiB {module} [built]
  [./components/ConfigEditor.tsx] 1.81 KiB {module} [built]
  [./components/QueryEditor.tsx] 11.9 KiB {module} [built]
  [./components/index.ts] 91 bytes {module} [built]
  [./module.ts] 479 bytes {module} [built]
  [./styles/dark.css] 39 bytes {dark} [built]
  [./styles/light.css] 39 bytes {light} [built]
  [?86c8] css ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src??ref--6-2!./styles/dark.css 642 bytes {dark}
  [?fe0f] css ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src??ref--6-2!./styles/light.css 642 bytes {light}
  [@grafana/data] external "@grafana/data" 42 bytes {module} [built]
  [@grafana/runtime] external "@grafana/runtime" 42 bytes {module} [built]
      + 1040 hidden modules
  Child mini-css-extract-plugin ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src/index.js??ref--6-2!styles/dark.css:
      Entrypoint mini-css-extract-plugin = *
      [../node_modules/css-loader/dist/cjs.js?!../node_modules/postcss-loader/src/index.js?!./styles/dark.css] ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src??ref--6-2!./styles/dark.css 1.91 KiB {mini-css-extract-plugin} [built]
      [../node_modules/css-loader/dist/runtime/api.js] 2.46 KiB {mini-css-extract-plugin} [built]
  Child mini-css-extract-plugin ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src/index.js??ref--6-2!styles/light.css:
      Entrypoint mini-css-extract-plugin = *
      [../node_modules/css-loader/dist/cjs.js?!../node_modules/postcss-loader/src/index.js?!./styles/light.css] ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src??ref--6-2!./styles/light.css 1.91 KiB {mini-css-extract-plugin} [built]
      [../node_modules/css-loader/dist/runtime/api.js] 2.46 KiB {mini-css-extract-plugin} [built] 
  
鉁?Bundling plugin in dev mode
Done in 27.52s.

$ yarn build  # Build plugin in production mode
yarn run v1.22.17
$ grafana-toolkit plugin:build
  Using Node.js [object Object]
  Using @grafana/toolkit [object Object]
鉁?Preparing
鉁?Linting
ts-jest[config] (WARN) The option `tsConfig` is deprecated and will be removed in ts-jest 27, use `tsconfig` instead
ts-jest[config] (WARN) The option `tsConfig` is deprecated and will be removed in ts-jest 27, use `tsconfig` instead
ts-jest[config] (WARN) The option `tsConfig` is deprecated and will be removed in ts-jest 27, use `tsconfig` instead
 PASS  src/specs/utils.test.ts (19.9 s)
 PASS  src/components/QueryEditor.test.tsx (80.99 s)
 PASS  src/specs/aafunc.test.ts (101.021 s)
 PASS  src/components/FunctionParams.test.tsx (8.707 s)
 PASS  src/components/FunctionParam.test.tsx
 PASS  src/components/Functions.test.tsx (9.757 s)
 PASS  src/components/FunctionElem.test.tsx
 PASS  src/components/ConfigEditor.test.tsx
 PASS  src/components/FunctionAdd.test.tsx
 PASS  src/specs/datasource.test.ts (126.526 s)

Test Suites: 10 passed, 10 total
Tests:       88 passed, 88 total
Snapshots:   12 passed, 12 total
Time:        130.383 s
Ran all test suites with tests matching "".
鉁?Running tests
鉅?Compiling...  Starting type checking service...
  Using 1 worker with 2048MB memory limit
鉅?Compiling...  Browserslist: caniuse-lite is outdated. Please run:
  npx browserslist@latest --update-db
鉅?Compiling...  
   Hash: 2a1c1058abae74a680f6
  Version: webpack 4.41.5
  Time: 24365ms
  Built at: 02/09/2022 3:27:50 PM
                  Asset        Size  Chunks                          Chunk Names
           CHANGELOG.md     3.2 KiB          [emitted]               
                LICENSE    1.09 KiB          [emitted]               
              README.md     8.3 KiB          [emitted]               
                dark.js  1010 bytes       0  [emitted]               dark
            dark.js.map    4.53 KiB       0  [emitted] [dev]         dark
     img/EPICS_Logo.png    2.47 KiB          [emitted]               
               light.js  1010 bytes       1  [emitted]               light
           light.js.map    4.53 KiB       1  [emitted] [dev]         light
              module.js     256 KiB       2  [emitted]        [big]  module
  module.js.LICENSE.txt   399 bytes          [emitted]               
          module.js.map    1.45 MiB       2  [emitted] [dev]         module
            plugin.json     1.1 KiB          [emitted]               
        styles/dark.css   545 bytes       0  [emitted]               dark
       styles/light.css   542 bytes       1  [emitted]               light
  Entrypoint module [big] = module.js module.js.map
  Entrypoint light = styles/light.css light.js light.js.map
  Entrypoint dark = styles/dark.css dark.js dark.js.map
   [0] external "react" 42 bytes {2} [built]
   [1] external "lodash" 42 bytes {2} [built]
   [3] external "@grafana/data" 42 bytes {2} [built]
   [4] external "@grafana/ui" 42 bytes {2} [built]
   [7] external "@grafana/runtime" 42 bytes {2} [built]
  [15] ../node_modules/react-autosuggest/dist/index.js 68 bytes {2} [built]
  [19] external "rxjs" 42 bytes {2} [built]
  [35] ../node_modules/ms/index.js 2.95 KiB {2} [built]
  [36] ../node_modules/lodash/defaults.js 1.71 KiB {2} [built]
  [94] ./styles/light.css 39 bytes {1} [built]
  [95] ./styles/dark.css 39 bytes {0} [built]
  [96] ./module.ts + 313 modules 1.2 MiB {2} [built]
       | ./module.ts 479 bytes [built]
       | ./DataSource.ts 23.6 KiB [built]
       | ./components/index.ts 91 bytes [built]
       | ../node_modules/tslib/tslib.es6.js 10 KiB [built]
       | ./types.ts 643 bytes [built]
       | ./aafunc.ts 6.6 KiB [built]
       | ./utils.ts 3.1 KiB [built]
       | ./components/QueryEditor.tsx 11.9 KiB [built]
       | ./components/ConfigEditor.tsx 1.81 KiB [built]
       | ../node_modules/uuid/dist/esm-browser/validate.js 141 bytes [built]
       | ../node_modules/uuid/dist/esm-browser/stringify.js 1.43 KiB [built]
       | ../node_modules/uuid/dist/esm-browser/v4.js 544 bytes [built]
       | ./dataProcessor.ts 5.54 KiB [built]
       | ./components/Functions.tsx 3.73 KiB [built]
       | ../node_modules/uuid/dist/esm-browser/rng.js 1.02 KiB [built]
       |     + 299 hidden modules
  [99] ../node_modules/uuid/dist/esm-browser/index.js 412 bytes [built]
   [] css ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src??ref--6-2!./styles/dark.css 642 bytes {0}
   [] css ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src??ref--6-2!./styles/light.css 642 bytes {1}
      + 723 hidden modules
  Child mini-css-extract-plugin ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src/index.js??ref--6-2!styles/dark.css:
      Entrypoint mini-css-extract-plugin = *
      [0] ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src??ref--6-2!./styles/dark.css 1.91 KiB {0} [built]
      [1] ../node_modules/css-loader/dist/runtime/api.js 2.46 KiB {0} [built]
  Child mini-css-extract-plugin ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src/index.js??ref--6-2!styles/light.css:
      Entrypoint mini-css-extract-plugin = *
      [0] ../node_modules/css-loader/dist/cjs.js??ref--6-1!../node_modules/postcss-loader/src??ref--6-2!./styles/light.css 1.91 KiB {0} [built]
      [1] ../node_modules/css-loader/dist/runtime/api.js 2.46 KiB {0} [built] 
  
鉁?Compiling...
Done in 163.80s.

######### build backend #########
$ mage -v
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.LinuxARM-fm
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.Linux-fm
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.LinuxARM64-fm
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.Darwin-fm
Running dependency: github.com/grafana/grafana-plugin-sdk-go/build.Build.Windows-fm
exec: go build -o dist/gpx_archiver-datasource-backend_linux_arm64 -ldflags -w -s -extldflags "-static" ./pkg
exec: go build -o dist/gpx_archiver-datasource-backend_linux_arm -ldflags -w -s -extldflags "-static" ./pkg
exec: go build -o dist/gpx_archiver-datasource-backend_windows_amd64.exe -ldflags -w -s -extldflags "-static" ./pkg
exec: go build -o dist/gpx_archiver-datasource-backend_darwin_amd64 -ldflags -w -s -extldflags "-static" ./pkg
exec: go build -o dist/gpx_archiver-datasource-backend_linux_amd64 -ldflags -w -s -extldflags "-static" ./pkg

8. 更改Grafana配置并重启其服务

$ sudo vi /etc/grafana/grafana.ini 
去掉allow_loading_unsigned_plugins注释并作如下更改:
allow_loading_unsigned_plugins = sasaki77-archiverappliance-datasource # 或keck-observatory-epics-grafana-datasource

$ systemctl restart grafana-server

9. 打开网页端进行相应设置

  1. 打开web浏览器,访问http://localhost:3000,进入Grafana登录页面,用户名和密码都为admin;
  2. 参考sasaki77-archiverappliance-datasource的设置方式进行datasource的添加和设置。

【其它参考文章】

Grafana 的插件开发
Grafana容器的文件路径、数据保存、配置文件的位置及环境变量的使用
Grafana 插件开发从零到一
Grafana入门系列

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS7 安装 Archiver Appliance 的 Grafana服务 的相关文章

随机推荐

  • Linux shell的数组详解

    Linux shell的数组详解 前提变量数组数组声明声明索引数组声明关联数组 数组赋值数组引用数组中常用的变量数组中的其它操作 示例 前提 程序是指 指令 43 数据 的组合 指令 xff1a bash脚本中的代码 xff08 函数 调用
  • cannot find trajectory file at ./examples/trajectory.txt

    slam十四讲 3 7显示运动轨迹的程序 trajectory txt文件路径修改 string trajectory file 61 34 examples trajectory txt 34 改为 string trajectory f
  • slam14讲,李代数库Sophus遇到的问题及解决办法

    首先遇到sophus安装问题是在第4章时 xff0c 高博虽然书上说 我们使用带模板的Sophus库 xff0c 但实际的代码使用的是非模板库 高博在git上给的sophus库文件我在make的时候报错 xff0c 找不到解决办法 xff0
  • PX4添加新的msg和topic

    本人也是初次接触PX4固件没几天 xff0c 学习了msg的一些知识后写下这个以供自己以后参考 一 首先在 PX4 Autopilot msg文件夹下新建一个 msg文件 xff1a 这里我添加的是Data link msg msg 在 m
  • 物理机安装LINUX后的网卡配置问题

    基础材料 xff1a CentOS7 物理服务器 背景说明 xff1a 安装完LINUX操作系统的网卡配置让主机连通网络 xff0c 对于系统管理员来说是再常见不过的事情 xff0c 而且基本上也没什么难度 xff0c 但凡做过系统管理员的
  • PX4添加新的库(lib)

    就在前一两天 xff0c PX4源代码更新了 xff0c 固件库的名称从Firmware变成了PX4 Autopilot 一 首先在lib下新建一个文件夹并添加 cpp hpp和CMakeLists txt 其中 cpp和 hpp是自己写的
  • PX4添加新的应用

    研究了四天怎么添加新的应用程序 xff0c 前几天都尝试着添加 cpp文件的应用程序 xff0c 跟着网上的方法都失败了 xff0c 结果今天试着添加一个 c文件的应用程序居然成功了 先把 c的添加方法写一写 xff0c 以后学会了怎么添加
  • PX4应用程序开机自启动

    修改启动脚本 新版本的PX4固件这些rc文件位置为 xff1a PX4 Autopilot ROMFS px4fmu common init d文件夹中 1 以rc为开头的都是飞控的启动脚本的文件 xff0c 通过这些文件决定那些应用程序应
  • 自由链表(free list)——SGI STL的空间配置器(allocator)第二级配置器维护方法

    参考 xff1a STL源码剖析 以及 STL空间配置器之第二级配置器的free list详解 span class token comment free list的节点 span span class token keyword unio
  • 【C语言 Linux系统开发 视频课程学习笔记】

    学习的课程在b站 xff1a 史上最强最细腻的linux嵌入式C语言学习教程 李慧芹老师 感谢李老师 xff01 感谢up主 xff01 本篇博客只是收集一下学习过程中遇到的函数和其他知识点 xff0c 并不会详细展开 某个函数的具体情况还
  • pthread线程私有数据TSD 几点测试结果

    更加详细的内容查看man手册或百度 xff0c 这里只是几个实际测试的结果 仅代表实验现象 xff0c 并不考虑实现原理 pthread key t key可以定义为全局变量 xff0c 全局变量属于所有线程共有的 在不同的线程中可以用pt
  • 【muduo库】server端流程图

    1 首先是根据陈硕老师的muduo库手册p11的类图 xff0c 结合自己的学习所得画的一个更详细的流程 xff0c 使用IO线程池与计算线程池 xff08 1 xff09 计算线程中 xff0c task 调用TcpConnection
  • std::bind实现在类外访问类私有成员函数

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • 树莓派(linux)安装scipy

    这里写目录标题 成功案例失败案例1 xff08 使用pip直接安装 xff09 失败案例2 xff08 使用pip安装依赖 xff09 命令安装yum使用alien 失败案例3 xff08 whl 43 setup py安装 xff09 查
  • 计算机的基本组成

    一个完整的计算机系统包括硬件系统和软件系统两大部分 xff1a 硬件系统 xff1a 是我们肉眼所见的实体 如 xff1a 电源 显示器 主机箱等 软件系统 xff1a 是我们使用的程序 xff0c 如 xff1a 微信 QQ音乐 浏览器等
  • pycharm关闭拼写检查

    pycharm默认会对函数名 xff0c 类名进行拼写检查 xff0c 不符合规则的会有一些提示和警告 xff0c 虽然不会影响程序运行 xff0c 但是看着还是比较不爽 xff0c 所以写一下关闭拼写检查的方法 打开pycharm xff
  • ROS基础——tf相关

    service和srv 我们有一个节点A会计算出右臂逆向关节运动学坐标 xff0c 我们有一个节点B xff0c 不会经常用到 xff0c 但是偶尔会用到节点A的这个坐标 假设我们用主题来通信 xff0c 那么我们的节点A要不停的来发布消息
  • EPICS的学习过程

    在此之前 xff0c 最好先学习下Linux系统的基本操作 一 了解什么是EPICS 了解EPICS base Channel Access IOC OPI 的概念 高能所内网可参考这些材料 xff1b 打开USPAS xff0c 熟悉其大
  • CentOS 7下ArchiveViewer的安装与使用

    1 下载 安装jdk 下载安装包https www oracle com java technologies downloads java8 xff1b 解压 xff1b 将 JAVA HOME bin路径添加到 PATH中 注意 xff1
  • CentOS7 安装 Archiver Appliance 的 Grafana服务

    1 安装 Grafana 7 采用rpm的安装方式 xff1a span class token function wget span https dl grafana com enterprise release grafana ente