当前位置: 首页 > news >正文

「解析」Jetson配置 git服务

这两天感冒了在家休养,想着把之前买的 Jetson 开发板用起来,买Jetson的初衷就是用来学习Linux系统,顺道可以部署算法,以及一些其他需求,相比树莓派而言,Jetson开发相对更贵,但是其配备了英伟达的显卡以及CUDA,这一点是树莓派所无法比拟的,正好在家休息就补个坑。之前一直有个想法:如何在开发板上配置 git服务,将自己的项目代码 备份到自己的服务器,即保证数据的版本管理,也保证了数据的安全性,顺道还可以学习下 git / linux 的相关命令。

之前有给自己装备一款NAS,因为功能简单只能当做纯文件存储器使用,因此无法将git部署到NAS,但是无妨 差生文具多,NAS不行 Jetson来凑。

在这里插入图片描述

上一次讲了 Windows如何优雅使用Terminal,但是Windows的Terminal终究不如Linux系统的舒服,因此Windows作为生活学习的主力,Jetson开发板配置的Ubuntu20.04作为 学习Linux的主力。

1、jetson 部署 git服务

1.1 安装 git

一般情况下,jetson安装完系统,会自动安装 git,可以通过 git --version 查看安装版本,也可以通过以下命令安装更新 git

sudo apt-get update
sudo apt-get install git		# 初次安装 git

1.2 创建 git 用户

非必要性,如果你也跟我一样,是自己使用,其实都无所谓

sudo adduser git

根据自己实际情况填写用户信息,密码需记牢,git账号的信息,可以使用默认设置

创建完 git用户之后,可能存在以下错误:

git is not in the sudoers file. This incident will be reported.

这是因为没有给 git 用户加入到 sudo 配置中,因此在切换到 git用户时,无法使用 sudo 命令

首先修改下 sudoers 的写入权限

chmod u+w /etc/sudoers

然后编辑 sudoers

vim /etc/sudoers

找到 root ALL=(ALL) ALL,在其下方添加

root ALL=(ALL) ALL
git  ALL=(ALL) ALL		# 将 git 改为你自己的用户名

添加完成后,再将 sudoers的权限给修改回去

chmod u-w /etc/sudoers

这样 git 用户就也可以调用 duso 命令了

1.3 创建 git 仓库

目前需要先创建一个空的仓库,然后才能够进行上传,后续我再测试下直接上传不存在的仓库

选择一个 保存 git仓库的路径,在此以 /git/ 为例

sudo su - git
mkdir /git/demo.git
cd /git/demo.git
git init --bare				# 初始化仓库

1.4 修改仓库路径权限

其实创建 git 用户就是避免其他用户不小心修改 其中的仓库,因此创建一个新的用户更加安全,另外,也可以给仓库路径设置 用户权限,是其他用户无法访问,这样就保证了数据的安全性

可以通过以下命令修改 仓库的访问权限

sudo chown -R git:git /git/

其中 -R 是为了保证 /git 路径的权限支持向下兼容,不至于每次都修改权限;
git:git 表示的是 git用户以及 git组,可以通过 id git 查看 git用户所属的 组,其中 uid 是用户名,gid是组名,grous 是用户 git 同时也附加与其他组

uid=1001(git) gid=1001(git) groups=1001(git),29(audio),44(video),103(render),113(i2c),130(gdm),999(gpio),996(weston-launch)

通过 ll 命令就可以查看当前路径下的权限信息,可以看到 git用户已经有了 ./ 以及其中的 DeepSort_Pytorch.git/ 仓库的权限了,并且其他非root用户没有权限

git@ubuntu:/git$ ll
total 12
drwxr-xr-x  3 git  git  4096 Jan 16 02:39 ./
drwxr-xr-x 20 root root 4096 Jan 16 02:18 ../
drwxrwxr-x  7 git  git  4096 Jan 16 02:43 DeepSort_Pytorch.git/

至此,jetson 已经配置好了 git 服务,只差代码上传

1.5 配置 SSH

博主因为是使用的 windows系统进行上传,通常使用 ssh 连接 jetson,因此还需要再配置下 SSH

sudo apt-get install openssh-server

然后,为 git用户配置 SSH

sudo su - git
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

此处需要在 windows系统上生成下 ssh 公钥,方法如下

ssh-keygen -t rsa -C "youremail@example.com"

密钥类型可以用 -t 选项指定,如果没有指定则默认生成用于SSH-2的RSA密钥,这个命令使用的是rsa。

完成之后一般会保存在 C:\Users\Administrator\.ssh\id_rsa ,可以通过 txt文本打开

将其公钥保存至 jetson:~/.ssh/authorized_keys 文件中,这样就不需要每次输入用户名/邮箱名 和 密码了

1.6 启动 git 服务

退出 git 用户,并重启 SSH 服务

exit
sudo service ssh restart

至此,Git 服务器应该已经在 Jetson 上成功部署。


2、Windows 连接 jetson

因为使用的局域网,没有购买公网ip,因此也就无法外网访问了,虽然损失了方便性,但是保证了安全,而且出发点就是在家自用,基本需求满足即可,后续有外网访问的需求再说。

windows连接 ubutnu 一般直接采用 ssh连接,连接方式为 ssh <username>@<jetson_ip>


3、从 Windows 上传仓库到 Jetson

首先需要确保 jetson 上有对应的 git 仓库,没有的话,先创建一个空仓库 见 1.3。然后对windows本次代码 git 初始化,并提交推送 至 jetson的git服务中

git init
git add .
git commit -m "Initial commit"
git remote add origin git@<jetson_ip>:/git/demo.git

3.1 最后推送

使用以下命令将代码推送到 Jetson git服务器

git push -u origin master

这将把你的本地代码推送到 Jetson Git 服务器的 master 分支。如果这是第一次推送,可能需要输入 Git 用户的用户名和密码。

如果你使用 SSH 密钥进行身份验证,确保你的 SSH 密钥已经添加到 Jetson Git 服务器的 ~/.ssh/authorized_keys 文件中。

3.2 仓库拉取

如果在 Jetson 上有其他人推送了更改,你可以使用以下命令拉取这些更改:

git pull				
# 或
git pull origin master

这会将 Jetson Git 服务器上的最新更改拉到你的本地仓库。

相关文章:

「解析」Jetson配置 git服务

这两天感冒了在家休养&#xff0c;想着把之前买的 Jetson 开发板用起来&#xff0c;买Jetson的初衷就是用来学习Linux系统&#xff0c;顺道可以部署算法&#xff0c;以及一些其他需求&#xff0c;相比树莓派而言&#xff0c;Jetson开发相对更贵&#xff0c;但是其配备了英伟达的…...

uniapp使用安装sass

1.首先你要安装node-sass npm install node-sass --save-dev2.安装sass-loader npm install sass-loader --save-dev3.修改style标签&#xff0c;声明使用sass <style lang"scss" scoped>...

ClickHouse学习笔记(六):ClickHouse物化视图使用

文章目录 1、ClickHouse 物化视图2、物化视图 vs 普通视图3、物化视图的优缺点4、物化视图的用法4.1、基本语法4.2、准备表结构4.3、准备数据4.3、查询结果 1、ClickHouse 物化视图 ClickHouse 的物化视图是一种查询结果的持久化&#xff0c;它的存在是为了带来查询效率的提升…...

华为OD机试真题-最小矩阵宽度-2023年OD统一考试(C卷)

题目描述: 给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。 输入描述: 第一行输入两个正整数N,M,表示矩阵大小。 接下来N行M列表示矩阵内容。 下一行包含一个正整数K。 下一行包含…...

java stream distinct根据list某个字段去重

项目场景&#xff1a; java stream distinct根据list某个字段去重&#xff0c;普通List简单去重&#xff1a; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;public class TestMain {public static void main(String[] args) {List&l…...

超精简虚拟机镜像

前经常有人问我要极度精简的win 7 虚拟机镜像&#xff0c;开个贴直接发吧&#xff0c;这次包括 win10 和 win7 镜像,另有一个 win 8 win7 镜像压缩包只有 300Mb&#xff0c; win 10 镜像 有 800Mb&#xff0c; win 8 有 700Mb 系统极度精简&#xff0c;可以运行 qq 微信&#…...

【JVM】常用命令

一、前言 Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的基础设施&#xff0c;它负责将Java字节码转换为本地机器代码并执行。在开发过程中&#xff0c;我们经常需要使用一些命令来监控和管理JVM的性能和状态。本文将详细介绍6个常用的JVM命令&#xff1a;jps、jstat…...

第 7 章 排序算法

文章目录 7.1 排序算法的介绍7.3 算法的时间复杂度7.3.1 度量一个程序(算法)执行时间的两种方法7.3.2 时间频度7.3.3 时间复杂度7.3.4 常见的时间复杂度7.3.5 平均时间复杂度和最坏时间复杂度 7.4 算法的空间复杂度简介7.4.1 基本介绍 7.5 冒泡排序7.5.1 基本介绍7.5.2 演示冒泡…...

机器人持续学习基准LIBERO系列7——计算并可视化点云

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新机器人持续学习基准LIBERO系列4——robosuite最基本demo机器人持续学习基准LIBERO系列5——…...

基于 Level set 方法的医学图像分割

摘 要 医学图像分割是计算机辅助诊断系统设计中的关键技术。对于医学图像分割问题,它一般可分为两部分:(l)图像中特定目标区域(器官或组织)的识别;(2)目标区域完整性的描述与提取。相比于其他图像,医学图像的复杂性和多样性,使得传统的基于底层图像信息的分割方法很难取得好的…...

【C++入门】C++ STL中string常用函数用法总结

目录 前言 1. string使用 2. string的常见构造 3. string类对象的访问及遍历 迭代器遍历&#xff1a; 访问&#xff1a; 4. string类对象的容量操作 4.1 size和length 4.2 clear、empty和capacity 4.3 reserve和resize reserve resize 5. string类对象的修改操作 push_back o…...

Rust变量、常量声明与基本数据类型

Rust是一门系统级别的编程语言&#xff0c;注重安全性、性能和并发。在这篇博客中&#xff0c;我们将介绍Rust中的变量、常量声明以及基本数据类型&#xff0c;并通过示例说明每一种类型的用法。 变量声明 在Rust中&#xff0c;使用 let 关键字声明变量。变量默认是不可变的&…...

【MATLAB】 SSA奇异谱分析信号分解算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 SSA奇异谱分析&#xff08;Singular Spectrum Analysis&#xff09;是一种处理非线性时间序列数据的方法&#xff0c;可以对时间序列进行分析和预测。 它基于构造在时间序列上的特定矩阵的奇异值分解&#…...

Nginx+Tomcat负载均衡、动静分离以及Nginx负载均衡和四层代理

目录 NginxTomcat负载均衡、动静分离 Nginx 负载均衡模式&#xff1a; Nginx 四层代理配置&#xff1a; NginxTomcat负载均衡、动静分离 Nginx 服务器&#xff1a;192.168.80.10:80 Tomcat服务器1&#xff1a;192.168.80.100:80 Tomcat服务器2&#xff1a;192.168.80.101:80…...

Vue3中provide,inject使用

一&#xff0c;provide,inject使用&#xff1a; 应用场景&#xff1a;向孙组件传数据 应用Vue3碎片&#xff1a; ref&#xff0c;reactive&#xff0c;isRef&#xff0c;provide, inject 1.provide,inject使用 a.爷组件引入 import {ref,provide} from vue const drinkListre…...

Django命令模块

这篇文章我们主要来介绍一下关于 Django 的命令模块&#xff0c;我们经常会使用到&#xff0c;比如以下几个常用的命令&#xff0c;都属于 Django 的命令模块&#xff1a; python manage.py makemigrations python manage.py migrate python manage.py startapp python manage…...

【linux驱动开发】在linux内核中注册一个杂项设备与字符设备以及内核传参的详细教程

文章目录 注册杂项设备驱动模块传参注册字符设备 开发环境&#xff1a; windows ubuntu18.04 迅为rk3568开发板 注册杂项设备 相较于字符设备&#xff0c;杂项设备有以下两个优点: 节省主设备号:杂项设备的主设备号固定为 10&#xff0c;在系统中注册多个 misc 设备驱动时&…...

Golang条件编译 | 获取系统的磁盘空间内存占用demo | gopsutil/disk库(跨平台方案)

文章目录 一、Golang条件编译1. 构建标签( Build tags)2. 文件后缀&#xff08;File suffixes&#xff09; 二、GO golang 获取磁盘空间 条件编译思路 三、【推荐】使用github.com/shirou/gopsutil/disk这个库&#xff0c;如何获取机器下不同磁盘分区的内容 一、Golang条件编译…...

22/76-池化

池化&#xff08;最大池化层&#xff1a;选每个kernel中最大的数&#xff09; 填充、步幅、多个通道&#xff1a; 池化层与卷积层类似&#xff0c;都具有填充和步幅。 没有可学习的参数。 在每个输入通道应用池化层以获得相应的输出通道。 输出通道数输入通道数。 平均池化层…...

江科大STM32 下

目录 ADC数模转换器DMA直接存储器存取USART串口9-2 串口发送接受9-3 串口收发HEX数据包 I2C(mpu6050陀螺仪和加速度计)SPI协议10.1 SPI简介W25Q64简介10.3 SPI软件读写W25Q6410.4 SPI硬件读写W25Q64 BKP、RTC11.0 Unix时间戳11.1 读写备份寄存器BKP11.2 RTC实时时钟 十二、PWR1…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...