最新消息:

ranger: debug tmux exception

Mac工具 niuge678 605浏览 0评论

现象

我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

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址