Ответ 1
Я решил эту проблему, запустив
sudo chmod -R 1777 /tmp
надеюсь, что это поможет другим людям, таким как я, которые предпочли бы не деактивировать драгоценный камень spring
Я использовал Ruby on Rails на сервере Red Hat. Когда я пытаюсь создать файл контроллера, я получил эту ошибку:
[[email protected] testApp4]$ rails generate controller welcome
/home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in `initialize': Permission denied @ rb_sysopen - /tmp/spring/fea371aaf9d69cfa58bd12f69b3f1bf6.pid (Errno::EACCES)
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in `open'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in `open'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in `initialize'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:14:in `new'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:14:in `boot'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:43:in `block in boot_server'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:41:in `fork'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:41:in `boot_server'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:24:in `call'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/rails.rb:23:in `call'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
from /home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
from /home/ec2-user/testApp4/bin/spring:16:in `require'
from /home/ec2-user/testApp4/bin/spring:16:in `<top (required)>'
from bin/rails:3:in `load'
from bin/rails:3:in `<main>'
Я решил эту проблему, запустив
sudo chmod -R 1777 /tmp
надеюсь, что это поможет другим людям, таким как я, которые предпочли бы не деактивировать драгоценный камень spring
Для записи перезаписывания pid для запуска каждого сервера требуется право собственности.
Мне пришлось запустить его со своим полным локальным путем и sudo
$sudo chmod -R 777/Пользователи/MyName/Desktop/projects/my_project/tmp/
Я взглянул на библиотеку, которая пытается записать файл pid, lib/spring/env.rb
.
Эта функция пытается создать временный каталог в том же месте каждый раз, если не установлен XDG_RUNTIME_DIR
:
path = Pathname.new(File.join(ENV['XDG_RUNTIME_DIR'] || Dir.tmpdir, "spring"))
Установка указанной переменной в уникальный каталог делает трюк для меня:
export XDG_RUNTIME_DIR=/tmp/`whoami`
Отсутствует разрешение на запись в tmp-папку. запустите chmod 777 tmp/
Или
export XDG_RUNTIME_DIR=/run/user/${id -u}
чтобы изменить эту системную переменную. id -u
возвращает ваш UID (идентификатор пользователя), который является именем dir, где у вас есть доступ к записи/чтению в /run/user/
.