亞馬遜服務器gem安裝插件遇到沒有權限的問題

                        亞馬遜服務器gem安裝插件遇到沒有權限的問題


  在亞馬遜服務器上,我們的項目有可能會需要額外的第三方庫文件,如果是普通用戶(ec2-user)安裝插件時常會遇到沒有權限的問題,如果用sudo 獲取權限安裝的gem 下插件普通用戶沒有權限使用,在項目運行中就會報文件找不到的錯誤(一般是沒有權限獲取相應的插件文件),我在做ruby語言的項目時,就遇到這種問題。

 在做IOS的push時,用了apns和houston ,在安裝時遇到了問題。

 安裝apns  #gem install apns  

 問題來了,我是普通用戶,在執行gem install apns 安裝插件時,報了這個錯誤

 ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/local/lib/ruby/gems/1.8 directory

 說我沒有寫的權限,怎麼辦那,一般都是加sudo 命令即sudo  gem install apns ,這個命令是能安裝成功,但是安裝後的插件的位置已經不是該普通用戶所在的/usr/local/lib/ruby/gem/1.8這個目錄下了,項目運行時,還是沒有讀取的權限,一般就會報文件找到不到的錯誤,還是不能解決問題。
 如果你用這兩個命令
 #sudo gem list
 #gem list
 你就會發現gem 列表中的插件是不同的,#sudo gem list 展示的是root(超級管理員)用戶下安裝的相關的插件,#gem list 展示的是ec2-user(普通用戶)下安裝的插件,而我們項目運行時,一般調用的都是普通用戶下安裝的插件,所以還是需要安裝到/usr/local/lib/ruby/gems/1.8這個目錄才行,怎麼辦那?

    我解決的方法是 修改/usr/local/lib/ruby/gems/ 這個文件夾及其子文件夾的權限爲777即所有用戶都有可讀可寫可執行的權限。

  命令#sudo  chmod -R 777 /usr/local/lib/ruby/gems (爲了安全,安裝好以後在修改回來文件夾及文件的權限,你要無所謂不修改也沒有什麼,省的下次安裝還要再次修改了)
修改以後再執行

#gem install apns 

#gem install houston

OK 一切解決了
提示:由於所安裝的插件有可能會被防火牆牆掉(換成淘寶的源),或者網絡不給力的情況,會出現安裝失敗的可能,多安裝幾次就能成功了,換源的方法也貼出來吧

1)添加源: sudo gem sources -a http://ruby.taobao.org/
2)移除原來的源: sudo gem sources --remove http://rubygems.org/
3)查看是否成功: sudo gem sources -l     
(如果只有 http://ruby.taobao.org一個網址的話,證明更換成功)



 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章