Powerline: Sudo vim - Erro de espaço em disco

Criado em 29 jul. 2013  ·  9Comentários  ·  Fonte: powerline/powerline

Quando executo o vim com o powerline instalado como meu usuário normal, ele funciona bem. Quando eu sudo su para root, ele funciona bem, mas quando estou no meu usuário normal e faço sudo vim, recebo o seguinte erro:

ERROR:vim:Failed to create renderer: [Errno 28] No space left on device
Error detected while processing VimEnter Auto commands for "*":
Traceback (most recent call last):
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/__init__.py", line 361, in update_rendererError detected while processing VimEnter Auto commands for "*":
    self.create_renderer(**create_renderer_kwargs)
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/__init__.py", line 207, in create_renderer
Error detected while processing VimEnter Auto commands for "*":
    self.renderer_options['local_themes'] = self.get_local_themes(self.ext_config.get('local_themes'))
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/vim.py", line 75, in get_local_themes
Error detected while processing VimEnter Auto commands for "*":
    for key, val in local_themes.items()))
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/vim.py", line 75, in <genexpr>
Error detected while processing VimEnter Auto commands for "*":
    for key, val in local_themes.items()))
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/vim.py", line 66, in load_theme_config

Não tenho nenhum arquivo .pyc em meu repositório powerline e o resultado de df -i é

Filesystem                     Inodes    IUsed     IFree IUse% Mounted on
/dev/mapper/it12--0391-root  14991360   421921  14569439    3% /
none                           500539        1    500538    1% /sys/fs/cgroup
udev                           498075      516    497559    1% /dev
tmpfs                          500539      488    500051    1% /run
none                           500539        5    500534    1% /run/lock
none                           500539       13    500526    1% /run/shm
none                           500539       25    500514    1% /run/user
/dev/sda1                      124496      273    124223    1% /boot

Portanto, não devo ter nenhum problema em ficar sem inodes.

cvim linux bug

Comentários muito úteis

Eu tive o mesmo problema no Arch Linux, depois de pesquisar um pouco, encontrei este guia legal:
https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

_ Observe que o comando de arco é diferente_

Aqui está o que eu estava comendo:

vim
2016-03-14 20:38:59,911:ERROR:vim:powerline:Failed to create renderer: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
Traceback (most recent call last):
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 842, in update_renderer
    self.create_renderer(**cr_kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 582, in create_renderer
    self.config_loader.set_watcher(self.common_config['watcher'])
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 84, in set_watcher
    self.watcher.transfer_calls(watcher)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 49, in transfer_calls
    getattr(watcher, attr)(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/watcher/inotify.py", line 100, in watch
    self.handle_error()
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/inotify.py", line 138, in handle_error
    raise OSError(eno, self.os.strerror(eno) + str(extra))
OSError: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
Traceback (most recent call last):
  File "<string>", line 12, in <module>
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 896, in setup
    self.do_setup(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/vim.py", line 211, in do_setup
    self.update_renderer()
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 842, in update_renderer
    self.create_renderer(**cr_kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 582, in create_renderer
    self.config_loader.set_watcher(self.common_config['watcher'])
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 84, in set_watcher
    self.watcher.transfer_calls(watcher)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 49, in transfer_calls
    getattr(watcher, attr)(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/watcher/inotify.py", line 100, in watch
    self.handle_error()
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/inotify.py", line 138, in handle_error
    raise OSError(eno, self.os.strerror(eno) + str(extra))
OSError: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
An error occurred while importing powerline module.
This could be caused by invalid sys.path setting,
or by an incompatible Python version (powerline requires
Python 2.6, 2.7 or 3.2 and later to work). Please consult
the troubleshooting section in the documentation for
possible solutions.
Press ENTER or type command to continue

Em formação:

df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
dev             978493    516  977977    1% /dev
run             979167    767  978400    1% /run
/dev/sda2      9175040 954797 8220243   11% /
tmpfs           979167    199  978968    1% /dev/shm
tmpfs           979167     12  979155    1% /sys/fs/cgroup
tmpfs           979167    537  978630    1% /tmp
/dev/sda1            0      0       0     - /boot/efi
tmpfs           979167     31  979136    1% /run/user/1000
tmpfs           979167     10  979157    1% /run/user/620
vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar  9 2016 16:25:55)
Included patches: 1-1529
Compiled by Arch Linux
Huge version without GUI.  Features included (+) or not (-):
+acl             +farsi           +mouse_netterm   +tag_binary
+arabic          +file_in_path    +mouse_sgr       +tag_old_static
+autocmd         +find_in_path    -mouse_sysmouse  -tag_any_white
-balloon_eval    +float           +mouse_urxvt     +tcl/dyn
-browse          +folding         +mouse_xterm     +terminfo
++builtin_terms  -footer          +multi_byte      +termresponse
+byte_offset     +fork()          +multi_lang      +textobjects
+channel         +gettext         -mzscheme        +title
+cindent         -hangul_input    +netbeans_intg   -toolbar
-clientserver    +iconv           +packages        +user_commands
-clipboard       +insert_expand   +path_extra      +vertsplit
+cmdline_compl   +job             +perl/dyn        +virtualedit
+cmdline_hist    +jumplist        +persistent_undo +visual
+cmdline_info    +keymap          +postscript      +visualextra
+comments        +langmap         +printer         +viminfo
+conceal         +libcall         +profile         +vreplace
+cryptv          +linebreak       +python/dyn      +wildignore
+cscope          +lispindent      +python3/dyn     +wildmenu
+cursorbind      +listcmds        +quickfix        +windows
+cursorshape     +localmap        +reltime         +writebackup
+dialog_con      +lua/dyn         +rightleft       -X11
+diff            +menu            +ruby/dyn        -xfontset
+digraphs        +mksession       +scrollbind      -xim
-dnd             +modify_fname    +signs           -xsmp
-ebcdic          +mouse           +smartindent     -xterm_clipboard
+emacs_tags      -mouseshape      +startuptime     -xterm_save
+eval            +mouse_dec       +statusline      -xpm
+ex_extra        +mouse_gpm       -sun_workshop    
+extra_search    -mouse_jsbterm   +syntax          
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -D_FORTIFY_SOURCE=2  -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      
Linking: gcc   -L. -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE  -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim        -lm -lncurses -lelf -lnsl    -lacl -lattr -lgpm -ldl   -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/perl5/core_perl/CORE -lperl -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc   -L/usr/lib -ltclstub8.6 -ldl -lz -lpthread -lieee -lm     

Antes de aumentar /proc/sys/fs/inotify/max_user_instances

tail /proc/sys/fs/inotify/*
==> /proc/sys/fs/inotify/max_queued_events <==
16384

==> /proc/sys/fs/inotify/max_user_instances <==
128

==> /proc/sys/fs/inotify/max_user_watches <==
8192

Depois de

tail /proc/sys/fs/inotify/*
==> /proc/sys/fs/inotify/max_queued_events <==
16384

==> /proc/sys/fs/inotify/max_user_instances <==
128

==> /proc/sys/fs/inotify/max_user_watches <==
524288

Funciona bem agora :)

Todos 9 comentários

Eu uso sudo vim o tempo todo, mas nunca tive esse problema. Como você disse, provavelmente não é um problema de inode, mas também não é um problema Powerline ou Python, já que eles usam bibliotecas Linux para gravar em disco. Você deve pesquisar esse problema como um problema do Linux e, por favor, poste sua solução aqui se encontrá-la.

Pode ser um problema com a falta de relógios do Inotify.

Fechando por falta de feedback e por estar desatualizado. Embora eu ainda ache que é um problema com os relógios inotify, você pode tentar usar valores diferentes em /proc/sys/fs/inotify/max_user_watches .

Eu tive o mesmo problema no Arch Linux, depois de pesquisar um pouco, encontrei este guia legal:
https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

_ Observe que o comando de arco é diferente_

Aqui está o que eu estava comendo:

vim
2016-03-14 20:38:59,911:ERROR:vim:powerline:Failed to create renderer: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
Traceback (most recent call last):
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 842, in update_renderer
    self.create_renderer(**cr_kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 582, in create_renderer
    self.config_loader.set_watcher(self.common_config['watcher'])
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 84, in set_watcher
    self.watcher.transfer_calls(watcher)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 49, in transfer_calls
    getattr(watcher, attr)(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/watcher/inotify.py", line 100, in watch
    self.handle_error()
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/inotify.py", line 138, in handle_error
    raise OSError(eno, self.os.strerror(eno) + str(extra))
OSError: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
Traceback (most recent call last):
  File "<string>", line 12, in <module>
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 896, in setup
    self.do_setup(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/vim.py", line 211, in do_setup
    self.update_renderer()
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 842, in update_renderer
    self.create_renderer(**cr_kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 582, in create_renderer
    self.config_loader.set_watcher(self.common_config['watcher'])
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 84, in set_watcher
    self.watcher.transfer_calls(watcher)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 49, in transfer_calls
    getattr(watcher, attr)(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/watcher/inotify.py", line 100, in watch
    self.handle_error()
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/inotify.py", line 138, in handle_error
    raise OSError(eno, self.os.strerror(eno) + str(extra))
OSError: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
An error occurred while importing powerline module.
This could be caused by invalid sys.path setting,
or by an incompatible Python version (powerline requires
Python 2.6, 2.7 or 3.2 and later to work). Please consult
the troubleshooting section in the documentation for
possible solutions.
Press ENTER or type command to continue

Em formação:

df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
dev             978493    516  977977    1% /dev
run             979167    767  978400    1% /run
/dev/sda2      9175040 954797 8220243   11% /
tmpfs           979167    199  978968    1% /dev/shm
tmpfs           979167     12  979155    1% /sys/fs/cgroup
tmpfs           979167    537  978630    1% /tmp
/dev/sda1            0      0       0     - /boot/efi
tmpfs           979167     31  979136    1% /run/user/1000
tmpfs           979167     10  979157    1% /run/user/620
vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar  9 2016 16:25:55)
Included patches: 1-1529
Compiled by Arch Linux
Huge version without GUI.  Features included (+) or not (-):
+acl             +farsi           +mouse_netterm   +tag_binary
+arabic          +file_in_path    +mouse_sgr       +tag_old_static
+autocmd         +find_in_path    -mouse_sysmouse  -tag_any_white
-balloon_eval    +float           +mouse_urxvt     +tcl/dyn
-browse          +folding         +mouse_xterm     +terminfo
++builtin_terms  -footer          +multi_byte      +termresponse
+byte_offset     +fork()          +multi_lang      +textobjects
+channel         +gettext         -mzscheme        +title
+cindent         -hangul_input    +netbeans_intg   -toolbar
-clientserver    +iconv           +packages        +user_commands
-clipboard       +insert_expand   +path_extra      +vertsplit
+cmdline_compl   +job             +perl/dyn        +virtualedit
+cmdline_hist    +jumplist        +persistent_undo +visual
+cmdline_info    +keymap          +postscript      +visualextra
+comments        +langmap         +printer         +viminfo
+conceal         +libcall         +profile         +vreplace
+cryptv          +linebreak       +python/dyn      +wildignore
+cscope          +lispindent      +python3/dyn     +wildmenu
+cursorbind      +listcmds        +quickfix        +windows
+cursorshape     +localmap        +reltime         +writebackup
+dialog_con      +lua/dyn         +rightleft       -X11
+diff            +menu            +ruby/dyn        -xfontset
+digraphs        +mksession       +scrollbind      -xim
-dnd             +modify_fname    +signs           -xsmp
-ebcdic          +mouse           +smartindent     -xterm_clipboard
+emacs_tags      -mouseshape      +startuptime     -xterm_save
+eval            +mouse_dec       +statusline      -xpm
+ex_extra        +mouse_gpm       -sun_workshop    
+extra_search    -mouse_jsbterm   +syntax          
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -D_FORTIFY_SOURCE=2  -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      
Linking: gcc   -L. -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE  -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim        -lm -lncurses -lelf -lnsl    -lacl -lattr -lgpm -ldl   -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/perl5/core_perl/CORE -lperl -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc   -L/usr/lib -ltclstub8.6 -ldl -lz -lpthread -lieee -lm     

Antes de aumentar /proc/sys/fs/inotify/max_user_instances

tail /proc/sys/fs/inotify/*
==> /proc/sys/fs/inotify/max_queued_events <==
16384

==> /proc/sys/fs/inotify/max_user_instances <==
128

==> /proc/sys/fs/inotify/max_user_watches <==
8192

Depois de

tail /proc/sys/fs/inotify/*
==> /proc/sys/fs/inotify/max_queued_events <==
16384

==> /proc/sys/fs/inotify/max_user_instances <==
128

==> /proc/sys/fs/inotify/max_user_watches <==
524288

Funciona bem agora :)

obrigado @GabLeRoux , trabalhando

Obrigado @GabLeRoux , funciona muito bem!

Obrigado novamente @GabLeRoux pela resposta detalhada, me ajudou no Fedora 27 hoje.

Eu tive o mesmo problema ocorrendo após instalar uma ferramenta de backup, que estava processando e enviando mais de 183 mil arquivos na época, então isso explica por que estou ficando sem relógios inotify.
echo 524288 > /proc/sys/fs/inotify/max_user_watches consertou.

@JensTimmerman Obrigado pela sugestão. Isso funcionou para mim no Ubuntu 16.04.

Só eu tive que:

$ sudo su
$ echo 524288 > /proc/sys/fs/inotify/max_user_watches
$ exit
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ssbanerje picture ssbanerje  ·  6Comentários

Chris-Bee picture Chris-Bee  ·  3Comentários

damienstanton picture damienstanton  ·  3Comentários

sbusch picture sbusch  ·  5Comentários

guyzmo picture guyzmo  ·  5Comentários