当前位置: 首页 > 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…...

eCAP超声波测距-ePWM电机调速

目录 eCAP超声波测距 整体框架 关键模块 实验效果 PWM电机调速 DRV8833基本介绍 整体框架 eCAP超声波测距 本实验所用的超声波HC-SR04模块如下图所示&#xff0c;左边为正面图&#xff0c;右边为反面图。 HC-SR04基本工作原理&#xff1a; &#xff08;1&#xff09;采…...

【K8s】Kubernetes 词汇表

微思网络 厦门微思网络 K8S认证工程师&#xff08;CKA&#xff09;备考与学习指南https://mp.weixin.qq.com/s/XsEVpU7dKnJDBopynWW3GQ K8S-CKA课程试听:Container 概述 词汇表 此术语表旨在提供 Kubernetes 术语的完整、标准列表。其中包含特定于 Kubernetes 的技术术语以及…...

高级java每日一道面试题-2024年10月20日-数据库篇[Redis篇]-Redis为什么是单线程的?

如果有遗漏,评论区告诉我进行补充 面试官: Redis为什么是单线程的? 我回答: Redis的单线程模型 Redis在6.0版本之前的设计是基于单线程模型的&#xff0c;这意味着Redis的网络IO和键值对数据的读写操作是由单个主线程来完成的。这种设计选择主要是出于以下几个原因&#x…...

SW-LIMS在化妆品行业稳定性试验中的应用

化妆品的稳定性是提供产品相关质量安全和潜在安全风险评价的一个重要数据来源,能为产品的安全性评估以及安全性预期提供佐证,通过设置产品保质期的边界和相关内容也能为化妆品上市后的监管提供依据。 通过稳定性试验,可以发现化妆品中可能存在的有害物质,避免这些物质在使用过…...

vue 项目i18n国际化,快速抽离中文,快速翻译

国际化大家都知道vue-i18n 实现的&#xff0c;但是有个问题&#xff0c;就是繁杂的抽离中文字符的过程&#xff0c;以及翻译中文字符的过程&#xff0c;关于这个有些小工具可以希望可以帮到大家 1.安装vue-i18n npm i vue-i18n8.22.22.ElementUI多语言配置 在src目录下创建…...

java--多态(详解)

目录 一、概念二、多态实现的条件三、向上转型和向下转型3.1 向上转型3.2 向下转型 四、重写和重载五、理解多态5.1练习&#xff1a;5.2避免在构造方法中调用重写的方法&#xff1a; 欢迎来到权权的博客~欢迎大家对我的博客提出指导这是我的博客主页&#xff1a;点击 一、概念…...

windows DLL技术-DLL概述

动态链接库 (DLL) 是一个模块&#xff0c;其中包含可由另一个模块 (应用程序或 DLL) 使用的函数和数据。 DLL 可以定义两种类型的函数&#xff1a;导出函数和内部函数。 导出的函数旨在由其他模块调用&#xff0c;以及从定义它们的 DLL 中调用。 内部函数通常只能从定义内部函…...

C++ —— 实现一个日期类

目录 一. 对日期类的介绍 二. 实现日期类 1. 运算符重载 2.日期类实现代码 一. 对日期类的介绍 通过对类和对象&#xff08;这里链接是类和对象的介绍&#xff09;的学习&#xff0c;类就是一种模型一样的东西&#xff0c;是对象一种抽象的描述。所以实现日期类&#xff0…...

Java全栈经典面试题剖析5】JavaSE高级 -- 集合

目录 面试题3.18 Java中有多少种数据结构&#xff0c;分别是什么&#xff1f; 面试题3.19 List、Set和Map的区别&#xff1f; 面试题3.20 List遍历方式有多少种 面试题3.21 Arraylist&#xff0c;Vector和Linkedlist 的区别 面试题3.22 Collection和Collections的区别 面试…...

python中如何获取对象信息

目录 一、获取对象类型 二、使用isinstance()函数 三、使用dir()函数 四、使用对象的__dict__属性&#xff08;适用于大多数自定义对象&#xff09; 五、使用文档字符串&#xff08;__doc__属性&#xff09;获取对象的文档信息 一、获取对象类型 使用type()函数&#xff…...