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

Deepin V23 / 统信UOS 下安装与配置 tftp

几个月前,我将开发系统从 ubuntu 切换到 Deepin,当时写过一篇文章《使用国产操作系统作为开发系统》。几个月下来,没有感觉有什么不适应,Ubuntu 能做的事情,在 Deepin 上都能做。而且有 UOS 应用商店的加持,很多 Windows/Linux 应用程序,可以直接从应用商店安装,不需要自己去配置安装,所以总体感觉比 Ubuntu 用得更顺手一些。

昨天有个朋友在《统信UOS / Deepin系统任务栏卡死解决方法》这篇文章下留言:

我本来想用deepin v23做工作机的,结果连安装个tftp服务都要烧脑,果断换回Ubuntu 24.04.1了

当时我就回复,安装 tftp 不就是一条命令的事吗?

2305881d5c338e22f10fc3a4bc2b33d2.png

没想到,打脸了。今天有空,在家尝试了一把,使用熟知的命令:

(base) alex@alex-deepin-os:~$ sudo apt install tftpd-hpa
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成           
没有可用的软件包 tftpd-hpa,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到E: 软件包 tftpd-hpa 没有可安装候选
(base) alex@alex-deepin-os:~$ sudo apt install tftpd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成           
E: 无法定位软件包 tftpd
(base) alex@alex-deepin-os:~$ sudo apt install tftp-hpa
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成           
E: 无法定位软件包 tftp-hpa
(base) alex@alex-deepin-os:~$ sudo apt install tftp
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成           
E: 无法定位软件包 tftp

Deepin V23 的仓库中确实没有 tftp 相关的包,不是一个安装命令就能搞定的事。

但作为一名程序员,怎么可能止步如此呢?当然是继续找出答案啦。

在开始之前,先简单介绍一下 tftp。

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种简单的文件传输协议,它很轻量。大众可能更熟悉 FTP 或 SFTP,TFTP 则是程序员用得比较多,比如烧写板子的固件或操作系统。

印象中,Debian 的 packages 中有 tftp 的包,没理由 Deepin 没有。所以,我就去 deepin 的包列表网站去找是否有 deb 包。结果一查看,真的有。

43735d2d66fc5ebe30a4bdb3f0b19058.png

但这个包并没有在 Deepin V23 的仓库中,因为 Deepin V23 的官方源如下:

$ cat /etc/apt/sources.list
## Generated by deepin-installer
deb https://community-packages.deepin.com/beige/ beige main commercial community
#deb-src https://community-packages.deepin.com/beige/ beige main commercial community

为什么 tftp 的包没有放在 Deepin V23 的仓库中?我猜想的原因是 Deepin V23 开始支持 arm、龙芯、RISC-V 架构,但这个包只 build 出 x86 架构的,还没有构建出其它架构的包,所以就没有加入到 Deepin 的源中。

如果你只是在 x86 架构的 Deepin 系统上安装 tftp,接下来就简单了。

第 1 步:安装 tftpd 和 tftp

下载 tftpd-hpa_5.2+20150808-1+b1_amd64.deb、tftp-hpa_5.2+20150808-1+b1_amd64.deb 包,双击安装。

安装之后,检查 tftp 服务是否启动:

(base) alex@alex-deepin-os:~$ sudo systemctl status tftpd-hpa.service
请输入密码:
验证成功
● tftpd-hpa.service - LSB: HPA's tftp serverLoaded: loaded (/etc/init.d/tftpd-hpa; generated)Active: active (running) since Sun 2024-10-20 15:24:27 CST; 2min 23s agoDocs: man:systemd-sysv-generator(8)Process: 12333 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=0/SUCCESS)Tasks: 1 (limit: 38286)Memory: 688.0K (peak: 1.7M)CPU: 63msCGroup: /system.slice/tftpd-hpa.service└─12346 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /srv/tftp10月 20 15:24:27 alex-deepin-os systemd[1]: Starting tftpd-hpa.service - LSB: HPA's tftp server...
10月 20 15:24:27 alex-deepin-os tftpd-hpa[12333]: Starting HPA's tftpd: in.tftpd.
10月 20 15:24:27 alex-deepin-os systemd[1]: Started tftpd-hpa.service - LSB: HPA's tftp server.

第 2 步:配置 TFTP 服务器

安装完成后,需要配置位于 /etc/default/tftpd-hpa 的 TFTP 服务器主配置文件。

sudo vi /etc/default/tftpd-hpa 在编辑器中,修改 TFTP_DIRECTORY 的值,指定 tftp 服务器存放文件的目录,比如指定为 /var/lib/tftpboot:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

第 3 步:创建 tftp 文件目录

配置完成后,创建共享目录并设置允许用户访问所需的权限。

sudo mkdir -p /var/lib/tftpboot
sudo chown -R nobody:nogroup /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot

为了避免权限问题,这里给了完全的读写权限。在实际工作中,可能只是用作固件下载,可以给只读权限,这个取决于需求。

然后重启 tftp 服务器:

sudo systemctl restart tftpd-hpa

第 4 步:测试 tftp 服务

前面安装的 tftp-hpa_5.2+20150808-1+b1_amd64.deb 实际上是 tftp 的客户端。所以,可以在命令行中使用 tftp 命令连接到服务器,后面跟服务器的 IP 地址:

tftp 192.168.3.202

连接成功后显示 tftp> 提示符。可以输入 tftp 命令,比如 status、get、put 等。

(base) alex@alex-deepin-os:~/Downloads$ tftp 192.168.3.202
tftp> status
Connected to 192.168.3.202.
Mode: netascii Verbose: off Tracing: off Literal: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds

下载文件用 get 命令,比如:

tftp> get tecmint.info
Error code 1: File not found
tftp> get 2.png
tftp>

上传文件使用 put 命令:

tftp> put tecmint.txt

tftp 设计得相当简单,没有很大的提示。如果你在烧写固件中碰到错误,可以尝试一下将配置文件中的

TFTP_OPTIONS="--secure"

改成空试试。

小结

由于 Deepin V23 仓库中没有包含 tftp 相关包,所以在安装上会有点小麻烦。但这点小麻烦在程序员眼里不知一提。在下载了安装包后,后面的安装配置就相当简单。

Deepin V23 仓库中没有 tftp 的包,可能是由于缺少多架构支持,加上 tftp 确实比较使用的人很少,所以没有包含在官方仓库中。希望在后面的更新中可以包含进来。

相关文章:

Deepin V23 / 统信UOS 下安装与配置 tftp

几个月前,我将开发系统从 ubuntu 切换到 Deepin,当时写过一篇文章《使用国产操作系统作为开发系统》。几个月下来,没有感觉有什么不适应,Ubuntu 能做的事情,在 Deepin 上都能做。而且有 UOS 应用商店的加持&#xff0c…...

java基础学习:定时任务常见实现方式

一、Timer解析 TaskQueue:小顶堆,存放timeTask。 TimerThread:任务执行线程 死循环不断检查是否有任务需要开始执行,有就执行它。始终是一个线程在执行。 单线程执行任务,任务有可能相互阻塞: schedul…...

句柄是什么?有什么用?举例说明

在C#编程中,“句柄”(Handle)是一个与操作系统资源相关联的标识符。句柄是一个指针或者索引,用于在程序代码中引用系统资源,如窗口、文件、线程等。由于直接操作这些资源非常危险且复杂,操作系统提供句柄作…...

Jenkins学习笔记

Jenkins学习笔记 NumTitleComments1官网 官方网站 中文文档2基础Jenkins基础3groovy1.groovy语法 2.groovy 入门4pipelinepipeline基本语法介绍5Github actiongithub action6Shared library1 2...

AI 解读软考高级操作系统顺序存取、直接存取、随机存取、相联存取的区别

这几个术语描述了不同类型的存储方式,它们涉及数据存取的顺序和灵活性。为了更好地理解,我们可以先通过生活中的例子来感受这些概念。 生活化例子 1. 顺序存取: 想象你在看一盘录像带(比如老式的VHS录像带)。如果你想…...

STM32烧写准备

目录 一.安装stlink驱动二.烧写器固件升级三.安装烧写程序四.进行测试1.流水灯 五.出现的问题1.升级固件问题2.测试时连接问题 一.安装stlink驱动 amd64是用在64位的,x86用在32位;双击运行即可 出现以下情况表示安装完成当连接上STM32开发板时&#xff…...

为Windows Terminal 配置zsh + Oh-My-Zsh!

参考: 为Windows Terminal 配置zsh Oh-My-Zsh! [非WSL] https://zhuanlan.zhihu.com/p/625583037 Package: zsh - MSYS2 Packages 安装配置 1、安装 Windows Terminal(必须) Method 1: 打开 Microsoft Store,搜索 “Windows Terminal”。点击 “…...

RNN、LSTM 与 Bi-LSTM

一. RNN 循环神经网络(Recurrent Neural Network, RNN)是深度学习领域一类具有内部自连接的神经网络能够学习复杂的矢量到矢量的映射。 最大特点:前面的序列数据可以用作后面的结果预测中。 一个简单的循环神经网络结构,其结构包…...

第一性原理

第一性原理是指从最基本的真理出发,分析和推导复杂现象或问题,不依赖于传统的假设或经验,而是从根本的原则出发进行思考。 将复杂问题拆解为更小的部分,逐一分析。在理解了这些基本部分的基础上,再进行组合和构建&…...

DOM NamedNodeMap 接口详解

DOM NamedNodeMap 接口详解 引言 在文档对象模型(DOM)中,NamedNodeMap 接口提供了一种方式来操作元素的属性集合。它是一种特殊的 NodeList,其中的每个节点都有一个名称和值。本文将详细介绍 NamedNodeMap 接口,包括其属性、方法和使用场景。 NamedNodeMap 接口概述 N…...

EasyExcel自定义下拉注解的三种实现方式

文章目录 一、简介二、关键组件1、ExcelSelected注解2、ExcelDynamicSelect接口(仅用于方式二)3、ExcelSelectedResolve类4、SelectedSheetWriteHandler类 三、实际应用总结 一、简介 在使用EasyExcel设置下拉数据时,每次都要创建一个SheetWr…...

Burp Suite Professional 2024.9 for macOS x64 ARM64 - 领先的 Web 渗透测试软件

Burp Suite Professional 2024.9 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件 世界排名第一的 Web 渗透测试工具包 请访问原文链接:https://sysin.org/blog/burp-suite-pro-mac/ 查看最新版。原创作品,转载请保留出处。 作者主页&#xff1…...

使用Mock库进行依赖注入的实用指南

使用Mock库进行依赖注入的实用指南 在现代软件开发中,测试是确保代码质量的重要环节。尤其是在进行单元测试时,依赖注入(Dependency Injection, DI)是一种常用的设计模式,它可以帮助我们更好地管理依赖关系,提高代码的可测试性。本文将深入探讨如何使用Python的unittest…...

nosql课本习题

nosql题目 1. 文档数据库相比其他 NoSQL 的突出优势和特点是什么? 答案: 文档数据库的突出优势在于它的灵活性和可扩展性。不同于传统的关系型数据库,文档数据库允许存储半结构化和非结构化数据,每个文档可以有不同的字段&#x…...

springboot 3.2.5集成spring security 只放行get请求,其他请求403

环境配置 jdk 17 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.5</version><relativePath/> <!-- lookup parent from repository --></…...

【linux】麒麟v10安装ELKB(ARM架构)

安装elasticsearch 创建目录 #放安装软件的位置 mkdir -pv /software#安装elasticsearch目录 mkdir -pv /usr/local/elasticsearch#安装kibana目录 mkdir -pv /usr/local/kibana 解压elasticsearch tar -zxvf elasticsearch-8.8.1-linux-aarch64.tar.gz -C /usr/local/elast…...

帝国CMS – AutoTitlePic 自动生成文章标题图片插件

帝国CMS – AutoTitlePic 自动生成文章标题图片插件 AutoTitlePic&#xff0c;自动生成文章标题图片插件。功能特点&#xff1a; 1、安装方便、使用简单。老站、新站都能使用。 2、自动生成图片&#xff0c;安装后静默运行。所以本插件也没有预览图片。 3、扩展性强&#x…...

Docker安装Mysql5.7,解决无法访问DockerHub问题

Docker安装Mysql5.7&#xff0c;解决无法访问DockerHub问题 简介 Docker Hub 无法访问&#xff0c;应用安装失败&#xff0c;镜像拉取超时的解决方案。 摘要 &#xff1a; 当 Docker Hub 无法访问时&#xff0c;可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的…...

React中使用Antd开源组件Popover等部分组件原生样式改变问题

1.如果发现某个组件的样式在单独的样式文件中更改不了&#xff0c;得在全局中更改时&#xff0c;我们可以使用一下方法&#xff1a; <Popoverplacement"bottomLeft"title{null}trigger"click"content{contentopic}overlayClassName{pinsInputLess.nop…...

Linux 配置 ssh —— ubuntu

Linux 配置 ssh —— ubuntu 设置 ip 这里我们选择使用系统 DHCP 自动分配的 IP&#xff0c;有些教程推荐使用自定义 IP&#xff0c;但是这样我们就没法上网&#xff0c;所有这里采用自定义 IP 即可 安装并启动 ssh 首先需要安装 ssh&#xff1a; sudo apt-get install op…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...