nvbn / thefuck

Magnificent app which corrects your previous console command.
MIT License
85.32k stars 3.43k forks source link

running `fuck` after successful `apt update` errors after several seconds #1158

Open T3sT3ro opened 3 years ago

T3sT3ro commented 3 years ago

Correct me if I'm wrong, but shouldn't TheFuck also recognize recommended commands from the previous successful command?

Running fuck after successful sudo apt update errors and prints long stacktrace on terminal.

Expected behavior:

either `apt list --upgradable` or `sudo apt upgrade` is recommended or `no fucks given`.

The output of thefuck --version (something like The Fuck 3.1 using Python 3.5.0 and Bash 4.4.12(1)-release):

`The Fuck 3.30 using Python 3.8.5 and Bash 5.0.17(1)-release`

Your system (Debian 7, ArchLinux, Windows, etc.):

Ubuntu 20.04 LTS

How to reproduce the bug:

1. execute `sudo apt update`
2. execute `fuck`

The output of The Fuck with THEFUCK_DEBUG=true exported (typically execute export THEFUCK_DEBUG=true in your shell before The Fuck):

 0  ◣ tooster@toosterLap:~$ sudo apt update
Hit:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 http://pl.archive.ubuntu.com/ubuntu focal InRelease                                                                                                                                                                          
Hit:3 http://ppa.launchpad.net/appimagelauncher-team/stable/ubuntu focal InRelease                                                                                                                                                 
Hit:4 http://pl.archive.ubuntu.com/ubuntu focal-updates InRelease                                                                                                                                                                  
Hit:5 https://download.mono-project.com/repo/ubuntu stable-focal InRelease                                                                                                                                                       
Hit:6 http://pl.archive.ubuntu.com/ubuntu focal-backports InRelease                                                                                                         
Hit:7 http://ppa.launchpad.net/bashtop-monitor/bashtop/ubuntu focal InRelease                                                                    
Hit:8 http://security.ubuntu.com/ubuntu focal-security InRelease                                                           
Hit:9 http://ppa.launchpad.net/lutris-team/lutris/ubuntu focal InRelease                                                       
Ign:10 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64  InRelease        
Hit:11 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease  
Hit:12 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64  Release
Hit:13 http://ppa.launchpad.net/obsproject/obs-studio/ubuntu focal InRelease
Hit:14 http://ppa.launchpad.net/webupd8team/y-ppa-manager/ubuntu focal InRelease
Reading package lists... Done                      
Building dependency tree       
Reading state information... Done
65 packages can be upgraded. Run 'apt list --upgradable' to see them.
 0  ◣ tooster@toosterLap:~$ fuck
DEBUG: Run with settings: {'alter_history': True,
 'debug': True,
 'env': {'GIT_TRACE': '1', 'LANG': 'C', 'LC_ALL': 'C'},
 'exclude_rules': [],
 'history_limit': None,
 'instant_mode': False,
 'no_colors': False,
 'num_close_matches': 3,
 'priority': {},
 'repeat': False,
 'require_confirmation': True,
 'rules': [<const: All rules enabled>],
 'slow_commands': ['lein', 'react-native', 'gradle', './gradlew', 'vagrant'],
 'user_dir': PosixPath('/home/tooster/.config/thefuck'),
 'wait_command': 3,
 'wait_slow_command': 15}
DEBUG: Call: sudo apt update; with env: {
    'SHELL': '/bin/bash',
    'SESSION_MANAGER': 'local/toosterLap:@/tmp/.ICE-unix/2666,unix/toosterLap:/tmp/.ICE-unix/2666',
    'QT_ACCESSIBILITY': '1',
    'TF_SHELL': 'bash',
    'COLORTERM': 'truecolor',
    'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg:/usr/share/kubuntu-default-settings/kf5-settings',
    'LESS': ' -R --mouse --wheel-lines=3',
    'XDG_MENU_PREFIX': 'gnome-',
    'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated',
    'LANGUAGE': 'en_GB:en',
    'LESS_TERMCAP_se': '\x1b[0m',
    'MANDATORY_PATH': '/usr/share/gconf/ubuntu.mandatory.path',
    'LESS_TERMCAP_so': '\x1b[01;7;33m',
    'LC_ADDRESS': 'pl_PL.UTF-8',
    'JAVA_HOME': '/home/tooster/.sdkman/candidates/java/current',
    'GNOME_SHELL_SESSION_MODE': 'ubuntu',
    'LC_NAME': 'pl_PL.UTF-8',
    'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh',
    'GRADLE_HOME': '/home/tooster/.sdkman/candidates/gradle/current',
    'SDKMAN_CANDIDATES_DIR': '/home/tooster/.sdkman/candidates',
    'XMODIFIERS': '@im=ibus',
    'DESKTOP_SESSION': 'ubuntu',
    'LC_MONETARY': 'pl_PL.UTF-8',
    'SSH_AGENT_PID': '2639',
    'GTK_MODULES': 'gail:atk-bridge',
    'PWD': '/home/tooster',
    'XDG_SESSION_DESKTOP': 'ubuntu',
    'LOGNAME': 'tooster',
    'XDG_SESSION_TYPE': 'x11',
    'GPG_AGENT_INFO': '/run/user/1000/gnupg/S.gpg-agent:0:1',
    'XAUTHORITY': '/run/user/1000/gdm/Xauthority',
    'GJS_DEBUG_TOPICS': 'JS ERROR;JS LOG',
    'WINDOWPATH': '2',
    'HOME': '/home/tooster',
    'USERNAME': 'tooster',
    'IM_CONFIG_PHASE': '1',
    'AUTOJUMP_ERROR_PATH': '/home/tooster/.local/share/autojump/errors.log',
    'LC_PAPER': 'pl_PL.UTF-8',
    'LANG': 'C',
    'LS_COLORS': '--cut for readibility--',
    'XDG_CURRENT_DESKTOP': 'ubuntu:GNOME',
    'VTE_VERSION': '6003',
    'SDKMAN_VERSION': '5.9.1+575',
    'GNOME_TERMINAL_SCREEN': '--redacted--',
    'INVOCATION_ID': '--redacted--',
    'MANAGERPID': '2400',
    'TF_ALIAS': 'fuck',
    'GJS_DEBUG_OUTPUT': 'stderr',
    'LESSCLOSE': '/usr/bin/lesspipe %s %s',
    'XDG_SESSION_CLASS': 'user',
    'TERM': 'xterm-256color',
    'LC_IDENTIFICATION': 'pl_PL.UTF-8',
    'LESS_TERMCAP_mb': '\x1b[1;5;32m',
    'LESS_TERMCAP_me': '\x1b[0m',
    'LESS_TERMCAP_md': '\x1b[1;32m',
    'TF_HISTORY': '\t sudo apt update\n\t sudo apt install python3-dev python3-pip python3-setuptools\n\t sudo pip3 install thefuck\n\t vim\n\t apt update\n\t sudo apt update\n\t fuck\n\t sudo apt update\n\t export THEFUCK_DEBUG=true fuck\n\t sudo apt update',
    'DEFAULTS_PATH': '/usr/share/gconf/ubuntu.default.path',
    'LESSOPEN': '| pygmentize -gO style=monokai %s',
    'LIBVIRT_DEFAULT_URI': 'qemu:///system',
    'USER': 'tooster',
    'CUDA_PATH': '/usr/local/cuda',
    'PYTHONIOENCODING': 'utf-8',
    'TF_SHELL_ALIASES': 'alias alert=\'notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e \'\\\'\'s/^\\s*[0-9]\\+\\s*//;s/[;&|]\\s*alert$//\'\\\'\')"\'\nalias aliases=\'vim ~/.bash_aliases && . ~/.bash_aliases && echo \'\\\'\'.bash_aliases sourced\'\\\'\'\'\nalias antlr4=\'java -Xmx500M -cp "/usr/local/lib/antlr-4.8-complete.jar:$CLASSPATH" org.antlr.v4.Tool\'\nalias dotfiles=\'/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME\'\nalias egrep=\'egrep --color=auto\'\nalias f=\'formatter\'\nalias fgrep=\'fgrep --color=auto\'\nalias grep=\'grep --color=auto\'\nalias grun=\'java -Xmx500M -cp "/usr/local/lib/antlr-4.8-complete.jar:$CLASSPATH" org.antlr.v4.gui.TestRig\'\nalias l=\'ls -CF\'\nalias la=\'ls -A\'\nalias lenny=\'echo "( ͡° ͜ʖ ͡°)"\'\nalias ll=\'ls -alF\'\nalias ls=\'ls --color=auto\'\nalias man=\'better_man\'\nalias notes=\'code ~/notes.md\'\nalias pip=\'pip3\'\nalias python=\'python3\'\nalias t=\'_ttr_new_tmux_session\'\nalias wp=\'cd ~/workspace\'',
    'GNOME_TERMINAL_SERVICE': ':1.101',
    'SDKMAN_DIR': '/home/tooster/.sdkman',
    'AUTOJUMP_SOURCED': '1',
    'DISPLAY': ':1',
    'LESS_TERMCAP_ue': '\x1b[0m',
    'SHLVL': '1',
    'LESS_TERMCAP_us': '\x1b[1;4;31m',
    'LC_TELEPHONE': 'pl_PL.UTF-8',
    'QT_IM_MODULE': 'ibus',
    'LC_MEASUREMENT': 'pl_PL.UTF-8',
    'SDKMAN_CANDIDATES_API': 'https://api.sdkman.io/2',
    'PAPERSIZE': 'a4',
    'CLASSPATH': '.:/usr/local/lib/antlr-4.8-complete.jar:',
    'XDG_RUNTIME_DIR': '/run/user/1000',
    'LC_TIME': 'pl_PL.UTF-8',
    'CUDA_HOME': '/usr/local/cuda',
    'JOURNAL_STREAM': '9:55039',
    'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop',
    'PATH': '/home/tooster/.sdkman/candidates/java/current/bin:/home/tooster/.sdkman/candidates/gradle/current/bin:/home/tooster/.gem/ruby/2.7.0/bin:/usr/local/cuda/bin:/home/tooster/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/tooster/.dotnet/tools',
    'GDMSESSION': 'ubuntu',
    'THEFUCK_DEBUG': 'true',
    'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus',
    'SDKMAN_PLATFORM': 'Linux64',
    'LC_NUMERIC': 'pl_PL.UTF-8',
    '_': '/usr/local/bin/thefuck',
    'LC_ALL': 'C',
    'GIT_TRACE': '1'
}; is slow: False took: 0:00:03.052979
DEBUG: Total took: 0:00:03.082849
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/thefuck/output_readers/rerun.py", line 35, in _wait_output
    proc.wait(settings.wait_slow_command if is_slow
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/__init__.py", line 1259, in wait
    self._exitcode = self._proc.wait(timeout)
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/_pslinux.py", line 1517, in wrapper
    return fun(self, *args, **kwargs)
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/_pslinux.py", line 1725, in wait
    return _psposix.wait_pid(self.pid, timeout, self._name)
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/_psposix.py", line 131, in wait_pid
    interval = sleep(interval)
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/_psposix.py", line 108, in sleep
    raise TimeoutExpired(timeout, pid=pid, name=proc_name)
psutil.TimeoutExpired: psutil.TimeoutExpired timeout after 3 seconds (pid=63423)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/__init__.py", line 1174, in _send_signal
    os.kill(self.pid, sig)
PermissionError: [Errno 1] Operation not permitted

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/thefuck/output_readers/rerun.py", line 17, in _kill_process
    proc.kill()
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/__init__.py", line 270, in wrapper
    return fun(self, *args, **kwargs)
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/__init__.py", line 1237, in kill
    self._send_signal(signal.SIGKILL)
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/__init__.py", line 1184, in _send_signal
    raise AccessDenied(self.pid, self._name)
psutil.AccessDenied: psutil.AccessDenied (pid=63424)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/_pslinux.py", line 1620, in exe
    return readlink("%s/%s/exe" % (self._procfs_path, self.pid))
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/_pslinux.py", line 212, in readlink
    path = os.readlink(path)
PermissionError: [Errno 13] Permission denied: '/proc/63424/exe'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/thefuck", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/dist-packages/thefuck/entrypoints/main.py", line 31, in main
    fix_command(known_args)
  File "/usr/local/lib/python3.8/dist-packages/thefuck/entrypoints/fix_command.py", line 36, in fix_command
    command = types.Command.from_raw_script(raw_command)
  File "/usr/local/lib/python3.8/dist-packages/thefuck/types.py", line 82, in from_raw_script
    output = get_output(script, expanded)
  File "/usr/local/lib/python3.8/dist-packages/thefuck/output_readers/__init__.py", line 20, in get_output
    return rerun.get_output(script, expanded)
  File "/usr/local/lib/python3.8/dist-packages/thefuck/output_readers/rerun.py", line 62, in get_output
    if _wait_output(result, is_slow):
  File "/usr/local/lib/python3.8/dist-packages/thefuck/output_readers/rerun.py", line 40, in _wait_output
    _kill_process(child)
  File "/usr/local/lib/python3.8/dist-packages/thefuck/output_readers/rerun.py", line 20, in _kill_process
    proc.pid, proc.exe()))
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/__init__.py", line 660, in exe
    return guess_it(fallback=err)
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/__init__.py", line 653, in guess_it
    raise fallback
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/__init__.py", line 658, in exe
    exe = self._proc.exe()
  File "/home/tooster/.local/lib/python3.8/site-packages/psutil/_pslinux.py", line 1633, in exe
    raise AccessDenied(self.pid, self._name)
psutil.AccessDenied: psutil.AccessDenied (pid=63424)
scorphus commented 3 years ago

Reproducible with thefuck "sudo sleep 4". Thanks for reporting, @T3sT3ro.

Mamadou442 commented 2 years ago

hi is this issue still relevant ? according to the issue mentioned, it could be resolved by using the slow command feature in the setting file but i don't get it.

scorphus commented 2 years ago

@Spokaren it also requires a new rule to suggest apt list --upgradable, sudo apt upgrade, etc.