2023年解惑
第 1 章 Swagger
1.1 套接字地址
- 错误描述:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
- 错误:
(flyfuture) E:\>python service.py 127.0.0.1 8080
Traceback (most recent call last):
File "service.py", line 3038, in <module>
application.listen(int(port), ip)
File "D:\Anaconda3\envs\flyfuture\lib\site-packages\tornado\web.py", line 2042, in listen
server.listen(port, address)
File "D:\Anaconda3\envs\flyfuture\lib\site-packages\tornado\tcpserver.py", line 143, in listen
sockets = bind_sockets(port, address=address)
File "D:\Anaconda3\envs\flyfuture\lib\site-packages\tornado\netutil.py", line 168, in bind_sockets
sock.bind(sockaddr)
OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
- 解决办法:
# cmd命令
netstat -ano
netstat: 网络状态
-a: 显示所有网络连接
-n: 不解析服务名称,显示IP和端口
-o: 显示占用连接的进程
taskkill -PID 1324 -F
taskkill: 终止进程
-PID: 终止进程PID
1324: PID值
-F: 强制终止
第 2 章 pandas
2.1 插值函数失效
- 错误描述:DataFrame中的元素是字符串类型,并且在没有类型转换的情况下进行插值,导致插值函数无效。
- 处理办法:
# 这个是传入的数据是非数字,进行插值运算后非数值依然是nan一起数值异常
data[data_names] = DataFrame(np.asarray(data[data_names], dtype=float))
if temp.isnull().any().any(): # linear interpolation.
temp = temp.interpolate(method='linear', axis=0)
2.2 保留两位有效数字
- 错误描述:DataFrame以字典的形式输出时,无法保留两位有效数字。
- 错误:
y_predict = xgb_tuned.predict(predict_data[self.feature_name])
y_predict = DataFrame(y_predict, columns=data_names)
outputs = concat((predict['date'].reset_index(drop=True).astype(str), y_predict), axis=1).to_dict("records")
- 处理办法:
y_predict = xgb_tuned.predict(predict_data[self.feature_name])
y_predict = DataFrame(y_predict, columns=data_names).astype(float).round(2)
outputs = concat((predict['date'].reset_index(drop=True).astype(str), y_predict), axis=1).to_dict("records")
第 3 章 进程
3.1 异步
- 错误描述:创建进程,并使用异步调用函数出现类内访问错误。
- 错误:
Traceback (most recent call last):
File "D:\Anaconda3\envs\flyfuture\lib\site-packages\tornado\web.py", line 1590, in _execute
result = method(*self.path_args, **self.path_kwargs)
File "E:\以前的文件\futureFly\项目文件\service.py", line 268, in post
res = ret.get()
File "D:\Anaconda3\envs\flyfuture\lib\multiprocessing\pool.py", line 644, in get
raise self._value
File "D:\Anaconda3\envs\flyfuture\lib\multiprocessing\pool.py", line 424, in _handle_tasks
put(task)
File "D:\Anaconda3\envs\flyfuture\lib\multiprocessing\connection.py", line 206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "D:\Anaconda3\envs\flyfuture\lib\multiprocessing\reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
AttributeError: Can't pickle local object '_make_coroutine_wrapper.<locals>.wrapper.<locals>.<lambda>'
- 解决方法:
异步不能进行类内访问,所以异步调用函数时保证函数是外部函数或者是静态方法,这里self.main调用的静态方法。
import multiprocessing
pool = multiprocessing.Pool(processes=1) # 创建进程池并指定进程数量为1
ret = pool.apply_async(self.main, (input,)) # 异步调用函数main, 并传入input参数(上面的错误是由异步引起)
pool.close() # 关闭进程池不接受新的任务
pool.join() # 等待所有任务完成,确保异步任务执行完毕
res = ret.get() # 获取异步任务结果
第 4 章 pyarmor
4.1 pyarmor选项
- 错误描述: pyarmor选项少些一项,导致错误。
- 错误:
pyarmor obfuscate --recursive --platform linux.x86_64.7 windows.x86_64 service.py
INFO PyArmor Version 7.7.3
INFO Python 3.6.5
INFO Target platforms: ['linux.x86_64.7']
INFO Update target platforms to: ['linux.x86_64.7']
ERROR Only one path is allowed
- 解决办法:
pyarmor obfuscate --recursive --platform linux.x86_64 --platform windows.x86_64 service.py
或
pyarmor obfuscate --recursive --platform linux.x86_64 --platform windows.x86_64 --output taizhou service.py
--recursive:递归
--output:输出
4.2 pyarmor版本
- 错误描述:python版本和pyarmor版本不兼容,导致服务启动
- 错误:
(base) [root@server010 diagnosis]# python service.py 127.0.0.1 8000
Traceback (most recent call last):
File "<service.py>", line 3, in <module>
File "<frozen service>", line 1073, in <module>
File "<frozen service>", line 1067, in protect_pytransform
File "<frozen service>", line 1030, in check_mod_pytransform
RuntimeError: unexpected pytransform.py
- 解决办法:
(1) 安装anaconda: https://www.anaconda.com/download/
(2) 利用powershell创建环境, 激活环境
conda create --name my_env python=3.7.13
conda activate my_env
(3) 重新安装加密依赖
pip install pyarmor
第 5 章 python依赖
5.1 在线安装依赖
- 问题描述:在线下载各种python依赖安装包。
- 解决办法:
pip download --dest E:\EnergyFly\offline_packages\windows -r E:\EnergyFly\offline_packages\requirments.txt
--dest E:\EnergyFly\offline_packages\windows: pip下载命令的选项,用于指定离线安装包保存的目标路径。
-r E:\EnergyFly\offline_packages\requirments.txt: pip下载命令的选项,用于指定包含要下载的依赖包列表的文本文件.
5.2 tensorflow 2.1.0
- 问题描述:tensorflow2.1.0 下载包,找不到。
- 错误:
ef@ef-AI:offline_packages$ pip3 download tensorflow==2.1.0
Collecting tensorflow==2.1.0
Could not find a version that satisfies the requirement tensorflow==2.1.0 (from versions: 0.12.1, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.2, 1.12.3, 1.13.1, 1.13.2, 1.14.0)
No matching distribution found for tensorflow==2.1.0
- 解决办法:
conda deactivate
conda: 包管理器的命令工具
deactivate: 停用当前环境命令
conda create -n mypython3.6.5 python=3.6.5
create: conda创建环境的命令
-n: 可以用--name是一个选项
mypython3.6.5: 环境的名称,可以自己命名。
python=3.6.5: 指定环境中安装的python版本。
conda activate mypython3.6.5
activate: 激活当前环境命令
pip3 download tensorflow==2.1.0
pip3: Python的包管理工具,用于安装,升级和管理python包。
download: pip3的一个命令,用于下载python包的源代码或二进制分发包。
tensorflow==2.1.0:tensorflow包的名称和版本号。
第 6 章 matplotlib
6.1 图片空白
- 问题描述:我们将画好的图片保存后,是一张空白图片。
- 问题:
from matplotlib import pyplot as plt
import numpy as np
def sigmoid(t, k=1, r=1):
return k / (1 + np.exp(-r * t))
x = np.linspace(-100, 100, 1000)
y = sigmoid(x)
y_1 = sigmoid(x, k=0.5)
y_2 = sigmoid(x, k=3)
plt.figure(dpi=300)
plt.plot(x, y, c='k', alpha=0.7)
plt.plot(x, y_1, c='r', alpha=0.7)
plt.plot(x, y_2, c='g', alpha=0.7)
plt.title('Sigmoid Increment Model')
plt.legend(['K=1', 'K=0.5', 'K=3'])
plt.show()
plt.savefig('sigmoid_increment_model.png')
- 解决办法:
在调用 plt.show() 后,图形对象会被关闭,如果之后再调用 plt.savefig() 来保存图形,可能会得到一片空白的图片。为了避免这种情况,可以在调用 plt.savefig() 之后再调用 plt.show()。
plt.savefig('sigmoid_increment_model.png')
plt.show()
第 7 章 目标检测
7.1 目标检测服务
from flask import Flask, request, jsonify, send_file
from mmdet.apis import init_detector, inference_detector, show_result_pyplot
import argparse
import tempfile
import os
# 创建应用程序对象
app = Flask(__name__)
# 设置图像检测模型的配置文件路径和权重文件路径
config_file = './configs/detector/object_detector.py'
checkpoint_file = './configs/model/weight.pth'
# 初始化图像检测模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')
@app.route('/detect', methods=['POST'])
def detect_objects():
# 获取上传的图像文件
image_file = request.files['image']
# 创建临时文件对象,设置delete为False, 关闭文件后不会自动删除该文件
temp_file = tempfile.NamedTemporaryFile(delete=False)
# 将上传图像保存到临时文件中, 其中temp_file.name为临时文件路径
image_file.save(temp_file.name)
# 关闭临时文件,关闭文件可以释放资源并确保文件的完整性
temp_file.close()
# 使用模型对图像进行推断,以进行对象检测
result = inference_detector(model, temp_file.name)
# 创建临时文件,并设置文件名后缀
output_file = tempfile.NamedTemporaryFile(suffix='.jpg', delete=False)
# 将检测结果保存在临时文件中
show_result_pyplot(model, temp_file.name, result, out_file=output_file.name)
output_file.close()
# 删除临时文件
os.unlink(temp_file.name)
# 返回带有检测结果的图像
return send_file(output_file.name, mimetype='image/jpeg')
def argsParser():
# 创建命令解析对象
parser = argparse.ArgumentParser()
# 设置默认参数
parser.add_argument("--host", default="0.0.0.0", type=str, help="ip address")
parser.add_argument("--port", default=8080, type=int, help="port")
# 将命令行参数解析为一个命名空间对象,可以通过属性的方式来访问这些值
args = parser.parse_args()
return args
if __name__ == '__main__':
arg = argsParser()
host = arg.host
port = arg.port
app.run(host=host, port=port)
第 8 章 日志
8.1 打印日志
- 问题描述:logging.info()无法在终端窗口显示
- 解决办法:
# 配置日志记录器
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 创建一个终端处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
# 创建一个格式化器
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
# 将格式化器添加到终端处理器
console_handler.setFormatter(formatter)
# 将终端处理器添加到日志记录器
logger = logging.getLogger()
logger.addHandler(console_handler)
第 9 章 git
9.1 git所有权问题
- 错误描述: Git 检测到了仓库中的文件或目录存在可疑的所有权设置而引起的。它指出在指定的路径下存在一个所有权问题,即文件或目录的所有者与当前用户不匹配。
$ git add lighting_arrester.py
fatal: detected dubious ownership in repository at 'E:/EnergyFly/Platform/SurgeArrester'
'E:/EnergyFly/Platform/SurgeArrester' is owned by:
'S-1-5-32-544'
but the current user is:
'S-1-5-21-1328744092-2206425613-3480276468-1001'
To add an exception for this directory, call:
git config --global --add safe.directory E:/EnergyFly/Platform/SurgeArrester
- 修改办法:
git config --global --add safe.directory "*";
- git config: git的配置命令;
- --global: 对全局的git进行操作;
- --add: 向配置里面添加新的键值对;
- "*": 通配符,表示所有目录。
第 10 章 pycharm
10.1 conda创建的环境不显示安装依赖
- 错误描述: 路径中有空格
C:\Users\Lee Wen-tsao>conda create --name pytorch python=3.10
WARNING: A space was detected in your requested environment path:
'D:\Users\Lee Wen-tsao\anaconda3\envs\pytorch'
Spaces in paths can sometimes be problematic. To minimize issues,
make sure you activate your environment before running any executables!
Collecting package metadata (current_repodata.json): / ERROR conda.auxlib.logz:stringify(171): Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\requests\models.py", line 971, in json
return complexjson.loads(self.text, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\conda\auxlib\logz.py", line 165, in stringify
requests_models_Response_builder(builder, obj)
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\conda\auxlib\logz.py", line 141, in requests_models_Response_builder
resp = response_object.json()
^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\requests\models.py", line 975, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
ERROR conda.auxlib.logz:stringify(171): Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\requests\models.py", line 971, in json
return complexjson.loads(self.text, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\conda\auxlib\logz.py", line 165, in stringify
requests_models_Response_builder(builder, obj)
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\conda\auxlib\logz.py", line 141, in requests_models_Response_builder
resp = response_object.json()
^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\requests\models.py", line 975, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
- ERROR conda.auxlib.logz:stringify(171): Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\requests\models.py", line 971, in json
return complexjson.loads(self.text, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\conda\auxlib\logz.py", line 165, in stringify
requests_models_Response_builder(builder, obj)
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\conda\auxlib\logz.py", line 141, in requests_models_Response_builder
resp = response_object.json()
^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\requests\models.py", line 975, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
ERROR conda.auxlib.logz:stringify(171): Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\requests\models.py", line 971, in json
return complexjson.loads(self.text, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\conda\auxlib\logz.py", line 165, in stringify
requests_models_Response_builder(builder, obj)
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\conda\auxlib\logz.py", line 141, in requests_models_Response_builder
resp = response_object.json()
^^^^^^^^^^^^^^^^^^^^^^
File "D:\Users\Lee Wen-tsao\anaconda3\Lib\site-packages\requests\models.py", line 975, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
done
Solving environment: done
## Package Plan ##
environment location: D:\Users\Lee Wen-tsao\anaconda3\envs\pytorch
added / updated specs:
- python=3.10
The following packages will be downloaded:
package | build
---------------------------|-----------------
openssl-3.0.9 | h2bbff1b_0 7.4 MB https://mirrors.aliyun.com/anaconda/pkgs/main
pip-23.1.2 | py310haa95532_0 2.8 MB https://mirrors.aliyun.com/anaconda/pkgs/main
python-3.10.12 | he1021f5_0 15.8 MB https://mirrors.aliyun.com/anaconda/pkgs/main
setuptools-67.8.0 | py310haa95532_0 1.1 MB https://mirrors.aliyun.com/anaconda/pkgs/main
wheel-0.38.4 | py310haa95532_0 83 KB https://mirrors.aliyun.com/anaconda/pkgs/main
------------------------------------------------------------
Total: 27.1 MB
The following NEW packages will be INSTALLED:
bzip2 anaconda/pkgs/main/win-64::bzip2-1.0.8-he774522_0
ca-certificates anaconda/pkgs/main/win-64::ca-certificates-2023.05.30-haa95532_0
libffi anaconda/pkgs/main/win-64::libffi-3.4.4-hd77b12b_0
openssl anaconda/pkgs/main/win-64::openssl-3.0.9-h2bbff1b_0
pip anaconda/pkgs/main/win-64::pip-23.1.2-py310haa95532_0
python anaconda/pkgs/main/win-64::python-3.10.12-he1021f5_0
setuptools anaconda/pkgs/main/win-64::setuptools-67.8.0-py310haa95532_0
sqlite anaconda/pkgs/main/win-64::sqlite-3.41.2-h2bbff1b_0
tk anaconda/pkgs/main/win-64::tk-8.6.12-h2bbff1b_0
tzdata anaconda/pkgs/main/noarch::tzdata-2023c-h04d1e81_0
vc anaconda/pkgs/main/win-64::vc-14.2-h21ff451_1
vs2015_runtime anaconda/pkgs/main/win-64::vs2015_runtime-14.27.29016-h5e58377_2
wheel anaconda/pkgs/main/win-64::wheel-0.38.4-py310haa95532_0
xz anaconda/pkgs/main/win-64::xz-5.4.2-h8cc25b3_0
zlib anaconda/pkgs/main/win-64::zlib-1.2.13-h8cc25b3_0
Proceed ([y]/n)?
第 11 章 Linux
11.1 压缩文件(tape archive)
- 问题描述:压缩文件和解压文件
- 解决方法:
mkdir day01 // 创建目录
touch abc.txt // 创建文件
echo Hello World, Linux! > abc.txt // 给新创建的文件夹添加文本
cat abc.txt // 查看文件内容
tar zcvf day01.tar.gz day01
|-- z: 通过gzip处理备份文件
|-- c: 建立备份文件
|-- v: 显示指令执行过程
|-- f: 指定备份文件
tar zxvf day01.tar.gz
|-- x: 从备份文件中还原文件
11.2 制作链接文件(lnk files)
- 制作快捷方式
- 解决方法:
ln [参数][源文件或目录][目标文件或目录]
ln abc.txt bb.txt
ln -s abc.txt bb.txt
|-- 软链接
11.3 查看进程状态(process status)
- 显示当前进程状态
- 解决办法:
ps // 显示当前进程状态
第 12 章 Pycharm
12.1 pycharm关闭卡顿问题
步骤 1:在菜单栏点击help;
步骤 2:在help下拉菜单中,点击Find Action…
步骤 3:搜索Registry,点击Registry…;
步骤 4:ctrl + f搜索ide.await.scope.completion,将其禁用。
第13章 Ubuntu系统
13.1 u盘挂载问题
第一步:运行以下命令,查看已连接的设备列表;
sudo fdisk -l
-- fdisk: 磁盘分区命令行工具,通过fdisk可以查看和管理计算机的磁盘分区。
第二步:创建目录,用于挂载u盘;
mkdir myusb
第四步:挂载u盘。
mount /dev/sdb1 myusb/
13.2 向日葵安装问题
- 问题描述:
(base) leewentsao@leewentsao:~/software$ sudo dpkg --install SunloginClient_15.2.0.63062_amd64.deb
(正在读取数据库 ... 系统当前共安装有 175076 个文件和目录。)
准备解压 SunloginClient_15.2.0.63062_amd64.deb ...
正在解压 sunloginclient (15.2.0.63062) 并覆盖 (15.2.0.63062) ...
dpkg: 依赖关系问题使得 sunloginclient 的配置工作不能继续:
sunloginclient 依赖于 libgconf-2-4;然而:
未安装软件包 libgconf-2-4。
dpkg: 处理软件包 sunloginclient (--install)时出错:
依赖关系问题 - 仍未被配置
正在处理用于 gnome-menus (3.36.0-1.1ubuntu3) 的触发器 ...
正在处理用于 desktop-file-utils (0.27-2build1) 的触发器 ...
在处理时有错误发生:
sunloginclient
- 解决办法参考
https://huikon.cn/article/307.html
第 14 章 Ubuntu子系统ssh开启22端口允许root远程登录
第一步:安装openssh-server插件
apt update
apt install openssh-server
第二步:修改配置文件
cat /etc/ssh/sshd_config
打开注释 #PermitRootLogin prohibit-password
修改为:PermitRootLogin yes
第三步:重启ssh
service ssh restart