现象
我ssh到远端主机,输入ranger命令,没问题。
我tmux一个窗口,ssh到远端主机,输入ranger命令,报异常。
ranger version: ranger 1.9.3
Python version: 3.7.10 (default, Jun 3 2021, 00:02:01) [GCC 7.3.1 20180712 (Red Hat 7.3.1-13)]
Locale: en_US.UTF-8
Traceback (most recent call last):
File "/home/wjsu/.local/lib/python3.7/site-packages/ranger/core/main.py", line 171, in main
fm.initialize()
File "/home/wjsu/.local/lib/python3.7/site-packages/ranger/core/fm.py", line 132, in initialize
self.ui.initialize()
File "/home/wjsu/.local/lib/python3.7/site-packages/ranger/gui/ui.py", line 127, in initialize
self.handle_multiplexer()
File "/home/wjsu/.local/lib/python3.7/site-packages/ranger/gui/ui.py", line 504, in handle_multiplexer
['screen', '-Q', 'title']).strip()
File "/home/wjsu/.local/lib/python3.7/site-packages/ranger/ext/spawn.py", line 35, in check_output
process = Popen(popenargs, stderr=fd_devnull, **kwargs)
File "/usr/lib64/python3.7/subprocess.py", line 800, in __init__
restore_signals, start_new_session)
File "/usr/lib64/python3.7/subprocess.py", line 1551, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'screen': 'screen'
怀疑
1、我最开始怀疑,是tmux里面,python的版本不对。但是很快排除了这个点。因为ranger的可执行文件,就是一个python,可以vim直接打开,print出来各种你想要的变量。
为什么tmux有问题,不使用tmux直接ssh没问题。
1、tmux里,env | grep TERM,显示 TERM=screen-256color
2、iterm里,env | grep TERM,显示 TERM=xterm-256color
注意,tmux里面包含"screen",就会走到一个分支里去(而iterm不会),这里就是最根本的问题。
为什么报异常
1、在远程主机上,执行['screen', '-Q', 'title']时,没有screen这个命令,所以报了异常。
如何解决
1、这个问题有多种解决方法,比如可以注释掉设置title这一行代码,也可以使用ranger最新的master代码(已经修复了此问题)。
2、但是我这里没必要去修复这个问题,因为我意识到另外一个问题:我在mac机,开启tmux,在tmux里ssh远程主机的方式是不对的,我应该在远程主机开启tmux,才会用不掉线。
收获
1、知道了如何debug python的应用,直接看代码就行,vim能打开可执行文件。
2、最重要的,知道了如何使用tmux。
转载请注明:牛哥678 » ranger: debug tmux exception