小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
一键安装崩溃
-
45.28
45.28 欢迎使用一键更换系统源,本工具由作者小鱼提供
45.95 RUN Choose Task:[请输入括号内的数字]
46.77 请选择换源方式,如果不知道选什么请选2
46.80 [1]:仅更换系统源
46.86 [2]:更换系统源并清理第三方源
46.95 [0]:quitTraceback (most recent call last):
47.00 File "/tmp/fishinstall/install.py", line 134, in <module>
47.00 main()
47.00 File "/tmp/fishinstall/install.py", line 123, in main
47.00 run_tool_file(tools[code]['tool'].replace("/","."))
47.00 File "/tmp/fishinstall/tools/base.py", line 1476, in run_tool_file
47.00 if tool.run()==False: return False
47.00 File "/tmp/fishinstall/tools/tool_config_system_source.py", line 225, in run
47.00 self.change_sys_source()
47.00 File "/tmp/fishinstall/tools/tool_config_system_source.py", line 177, in change_sys_source
47.00 self.clean_old_source()
47.00 File "/tmp/fishinstall/tools/tool_config_system_source.py", line 75, in clean_old_source
47.00 code,result = ChooseTask(dic, "请选择换源方式,如果不知道选什么请选2").run()
47.00 File "/tmp/fishinstall/tools/base.py", line 1089, in run
47.00 return ChooseTask.__choose(self.dic,self.tips,self.array)
47.00 File "/tmp/fishinstall/tools/base.py", line 1073, in __choose
47.00 PrintUtils.print_text(tr.tr("为您从配置文件找到默认选项:"),choose_item)
47.00 File "/tmp/fishinstall/tools/base.py", line 835, in print_text
47.00 print(values,end=end,flush=flush)
47.00 TypeError: end must be None or a string, not dict
47.00
47.00
47.00 检测到程序发生异常退出,请打开:https://fishros.org.cn/forum 携带如下内容进行反馈
47.00
47.00
47.00 标题:使用一键安装过程中遇到程序崩溃
47.0047.00
47.00 本次运行详细日志文件已保存至 /tmp/fishros_install.logDockerfile:25
24 | # 鱼香ros 一键换源
25 | >>> RUN cd /home/rbt
26 | >>> && apt update
27 | >>> && apt install -y wget python3 python3-yaml python3-distro apt-utils
28 | >>> && echo "chooses:\n" > fish_install.yaml
29 | >>> && echo "- {choose: 5, desc: '一键安装:ROS(支持ROS和ROS2,树莓派Jetson)'}\n" >> fish_install.yaml
30 | >>> && echo "- {choose: 2, desc: 更换源继续安装}\n" >> fish_install.yaml
31 | >>> && echo "- {choose: 1, desc: 清理三方源}\n" >> fish_install.yaml
32 | >>> && wget http://fishros.com/install -O fishros && /bin/bash fishros
33 | >>> # 清理 fish_install.yaml
34 | >>> && rm -rf /home/rbt/fish_install.yaml
35 |ERROR: failed to solve: process "/bin/sh -c cd /home/rbt && apt update && apt install -y wget python3 python3-yaml python3-distro apt-utils && echo "chooses:\n" > fish_install.yaml && echo "- {choose: 5, desc: '一键安装:ROS(支持ROS和ROS2,树莓派Jetson)'}\n" >> fish_install.yaml && echo "- {choose: 2, desc: 更换源继续安装}\n" >> fish_install.yaml && echo "- {choose: 1, desc: 清理三方源}\n" >> fish_install.yaml && wget http://fishros.com/install -O fishros && /bin/bash fishros && rm -rf /home/rbt/fish_install.yaml" did not complete successfully: exit code: 1
-
从您提供的错误日志来看,问题出现在Python脚本的
print
函数使用中。具体来说,print
函数的end
参数被错误地设置为一个字典(dict
)类型,而它应该是一个字符串或者None
。这导致了TypeError: end must be None or a string, not dict
这个错误。这个问题很可能是由于某个地方的代码修改或者配置错误导致的。在您的Docker构建过程中,您正在运行一个名为
fishros
的脚本,这个脚本内部调用了print_text
函数,并且错误地传递了end
参数。解决步骤:
-
检查并修改源代码:
- 如果您有权限修改
/tmp/fishinstall/tools/base.py
中的print_text
函数,请确保print
函数调用时end
参数是一个字符串或未设置(默认为None
)。 - 查看
print_text
函数的调用处,确认end
参数的值。
- 如果您有权限修改
-
临时修复:
- 如果不方便修改源代码,您可以尝试在运行Docker镜像前,先手动下载
fishros
脚本并修改其中的print_text
函数,确保end
参数正确。
- 如果不方便修改源代码,您可以尝试在运行Docker镜像前,先手动下载
-
联系脚本作者:
- 如果这个脚本是第三方提供的,您可以联系作者报告这个错误,并请求修复。
-
查看文档和社区:
- 访问
https://fishros.org.cn/forum
查看是否有其他用户遇到相同的问题或解决方案。
- 访问
-
重新构建Docker镜像:
- 在修复或更新脚本后,重新构建您的Docker镜像,并检查是否还有问题。
Dockerfile中的命令
您的Dockerfile中的命令看起来基本正确,但是确保在执行
/bin/bash fishros
之前,所有的依赖和环境都已正确设置。特别是确保/home/rbt
目录存在且可写。示例修正
如果问题确实出在
print_text
函数的end
参数上,您可以尝试在本地修改print_text
函数,例如:def print_text(values, end='\n', flush=False): print(values, end=end, flush=flush)
确保
end
参数有一个默认值(如'\n'
),这样在调用时不提供end
参数时就不会出错。然后重新构建并运行Docker镜像。
以上为生成回答,仅供参考~
-
-
@shangui 正在修复,请10min后尝试