Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 28

0
votes
answers
47 views
+10

錯誤配置在WSL

0

的Windows 10 SQL服務器:版本1709(OS構建16299.19)錯誤配置在WSL

WSL:Ubuntu的16.04

繼指南here。運行sudo /opt/mssql/bin/mssql-conf setup

? x git:(master) ? sudo /opt/mssql/bin/mssql-conf setup 
[sudo] password for devlin: 
Locale en_GB not supported. Using en_US. 
Choose an edition of SQL Server: 
    1) Evaluation (free, no production use rights, 180-day limit) 
    2) Developer (free, no production use rights) 
    3) Express (free) 
    4) Web (PAID) 
    5) Standard (PAID) 
    6) Enterprise (PAID) 
    7) Enterprise Core (PAID) 
    8) I bought a license through a retail sales channel and have a product key to enter. 

Details about editions can be found at 
https://go.microsoft.com/fwlink/?LinkId=852748 

Use of PAID editions of this software requires separate licensing through a 
Microsoft Volume Licensing program. 
By choosing a PAID edition, you are verifying that you have the appropriate 
number of licenses in place to install and run this software. 

Enter your edition(1-8): 2 
The license terms for this product can be found in 
/usr/share/doc/mssql-server or downloaded from: 
https://go.microsoft.com/fwlink/?LinkId=855862 

The privacy statement can be viewed at: 
https://go.microsoft.com/fwlink/?LinkId=853010 


Choose the language for SQL Server: 
(1) English 
(2) Deutsch 
(3) Español 
(4) Français 
(5) Italiano 
(6) 日本語語 
(7) ???? 
(8) Português 
(9) Русский 
(10) 中文 – 簡體體 
(11) 中文 (繁體)) 
Enter Option 1-11: 1 
Enter the SQL Server system administrator password: 
Confirm the SQL Server system administrator password: 
Configuring SQL Server... 

This program has encountered a fatal error and cannot continue running. 
The following diagnostic information is available: 

     Reason: 0x00000003 
     Message: fd != -1 
    Stacktrace: 00007f15f48346e3 00007f15f41e76ba 00007f15f17e73dd 
     Process: 2186 - sqlservr 
     Thread: 2187 
    Instance Id: 5b1c8da3-1358-48d3-a563-25468ff2ab69 
    Crash Id: 577efbb6-5740-4ee5-92f6-0ddc0eea685f 
    Build stamp: 1fdc73777d57c7c1942f388381b8f6ac2c50f005e35b808c23f54dfecdf59384 
*********** PANIC CORE DUMP GENERATION FAILED ********** 
Attempt to launch handle-crash.sh failed with error 0x0000000C 
/opt/mssql/lib/mssql-conf/invokesqlservr.sh: line 15: 2185 Aborted     (core dumped) sudo -EH -u mssql 
/bin/bash -c "$CMDLINE" 
Failed to connect to bus: No such file or directory 
Attempting to start the Microsoft SQL Server service failed. 

任何幫助,將不勝感激,當我拿到第4步中的錯誤。

沙发
0
1

從這個文檔:Install SQL Server and create a database on Ubuntu

此時,Windows子系統用於Linux的Windows 10不支持作爲安裝目標。

所以你的安裝不支持

+0

哇。錯過了那一個。我想我跳過它,因爲它不是紅色的 – iamdevlinph

113
votes
answers
15 views
+10

Fix NSS version not match when update Chrome in Ubuntu

After installing Chrome in Ubuntu, I start Chrome, then encounter the error below:

[4694:4729:0909/113001.627523:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. Aborted (core dumped)

How do I fix it?

沙发
+630

如果您使用的是ubuntu 14.04,請轉到終端

  sudo apt-get install libnss3 sudo apt-get update   

如果您安裝了Google Chrome然後運行它

  google-chrome   

或再次安裝

我使用ubuntu 14.04,我嘗試apt-get update和install.it顯示:libnss3已經是最新版本了。重新安裝很多次仍然沒有工作。最後我降低了鍍鉻版本。 - 秸稈於2017年9月10日2:44

我使用kubuntu 14.04.5並安裝libnss3解決了這個問題。 - Gweltaz Niquel 17年9月26日15:15

請注意,對我來說,這個解決方案本身也不起作用。您需要先將ubuntu升級到16.04 LTS,然後運行這些命令。現在它適用於我。 - JoãoPimentelFerreira 2017年10月8日11:43

我認為更新應該在安裝之前。這就是軟件經理將如何了解最新的可用版本。更新本身不會更新任何軟件 - 它只是找出可用的新軟件(它“更新”您機器上的可用軟件包數據庫)。 - nobar於17年11月2日17:24

板凳
+220
<p>我通過更新libnss3解決了這個問題。請按照以下步驟進行快速修復。</ p> <ol> <li>打開“軟件更新程序”,然後單擊“設置”按鈕</ li> <li>勾選'重要安全更新(xenial-security)然後關。它將更新緩存。</ li> <li>打開終端並運行命令'sudo apt-get install libnss3'</ li> </ ol> <p>現在您可以打開google-chrome。它對我有用。</ p> <p> Ubuntu 16.04 LTS </ p>

這就是答案!雖然我非常想了解Tick'重要安全更新'背後的基礎機制--Gabriel Glenn '17年12月8日15:51

地板
+130
<p>在Ubuntu 14.04上遇到同樣的問題。通過運行解決它:</ p> <pre> <code> sudo apt-get update sudo apt-get install --only-upgrade libnss3 </ code> </ pre> <p>說明:libnss3在Ubuntu 14.04上可用有2個版本(請參閱<a href="https://packages.ubuntu.com/search?suite=trusty&arch=any&searchon=names&keywords=libnss3" rel="noreferrer"> https:// packages。 ubuntu.com/search?suite=trusty&arch=any&searchon=names&keywords=libnss3 </a>)。我真的不明白[ports]和[security]之間的區別,但是使用<code> sudo apt-get upgrade </ code>我只安裝了3.15版本的libnss3。通過上面的命令,我終於安裝了3.28版本,滿足了Chrome' libnss3的要求&gt; = 3.26。Chrome現在可以正常啟動。</ p>
4楼
+60

libnss3運行所需的Google Chrome。嘗試安裝libnss3-dev版本,解決了我在Ubuntu 16.04 LTS上的類似問題。

  $ sudo apt update $ sudo apt install libnss3-dev   

然後安裝從官方谷歌網站下載的谷歌瀏覽器 <前> <代碼> $ sudo dpkg -i google-chrome-stable.deb

現在打開谷歌瀏覽器你可能要么從App啟動器中搜索並打開,或在終端中輸入以下內容

  $ google-chrome-stable  
     
			
        
5楼
+50

如果您運行15.10及以下版本,正確的方法是升級發行版。但是,如果您因任何原因需要堅持使用當前版本,那麼我所做的

我已經從升級後的.deb文件中強制安裝了libnss3以及依賴性要求。


這是依賴

  sudo dpkg -i libnspr4_4.13.1-0ubuntu0.16.10.1_amd64.deb   

來自 http://launchpadlibrarian.net/317146464/libnspr4_4。 13.1-0ubuntu0.16.10.1_amd64.deb


然後,安裝libnss3

  我已經採取了預防措施,在安裝升級版本之前從系統備份這些軟件包以防萬一中斷,我找不到原始的.deb。在我的情況下,我找不到libnss3-nssdb的deb  
  sudo apt-get install dpkg-repack sudo dpkg-repack libnss3-nssdb  
     
			
        

我正在使用15.04,這個答案解決了我的問題,節省了時間。在此之前,我無法打開谷歌瀏覽器。 - Mrunal Kanti Roy 18年1月14日凌晨3點36分

驚嘆!事實證明,這是在ubuntu 14.04 x64(lxde桌面)上安裝google-chrome的合適方法 - user8389458 18年5月6日在13:23

6楼
+40

不幸的是,這似乎不會在15.10中修復。

來自: https://answers.launchpad .net / ubuntu / + source / nss / + question / 657762

Ubuntu 15.10不再受支持(自2016年7月起)。

我升級到Ubuntu 16.04,它解決了我的問題。

7楼
0

在Ubuntu 15.04上,Chrome 60.0.3112.101正常運行但60.0.3112.78沒有運行。

64
votes
answers
28 views
+10

what is the advantage of using supervisord over monit

We have a custom setup which has several daemons (web apps + background tasks) running. I am looking at using a service which helps us to monitor those daemons and restart them if their resource consumption exceeds over a level.

I will appreciate any insight on when one is better over the other. As I understand monit spins up a new process while supervisord starts a sub process. What is the pros and cons of this approach ?

I will also be using upstart to monitor monit or supervisord itself. The webapp deployment will be done using capistrano.

Thanks

沙发
+340
<p>我沒有使用過monit,但是有一些重要的缺陷和監督。</ p> <ol> <li>程序應該在前台運行</ li> </ ol> <p>這意味著你可以'只需執行/etc/init.d/apache2 start。大多數時候你可以寫一個單行,例如“source / etc / apache2 / envvars&amp;&amp; exec / usr / sbin / apache2 -DFOREGROUND”,但有時你需要自己的包裝腳本。包裝器腳本的問題在於您最終得到兩個進程,父進程和子進程。看下一個缺陷... </ p> <ol start =“2”> <li> supervisord不管理子進程</ li> </ ol> <p>如果您的程序啟動子進程,supervisord將不會檢測到這個。如果父進程死亡(或者如果' s使用supervisorctl重新啟動)子進程繼續運行,但將被init進程“採用”並保持運行。這可能會阻止將來對程序的調用運行或消耗額外的資源。最近的配置選項stopasgroup和killasgroup應該解決這個問題,但對我來說不起作用。</ p> <ol start =“3”> <li> supervisord沒有依賴關係管理 - 請參閱<a href =“https: //github.com/Supervisor/supervisor/issues/122">#122 </a> </ li> </ ol> <p>我最近用qlproxy設置了squid。qlproxyd需要先啟動,否則squid會失敗。儘管這兩個程序都是用supervisord管理的,但是沒有辦法確保這一點。我需要為squid編寫一個啟動腳本,使其等待qlproxyd進程。添加啟動腳本導致了漏洞2中描述的孤立的進程問題</ p> <ol start =“4”> <li> supervisord不允許您控制startretries之間的延遲</ li> </ ol> < p>有時當一個進程無法啟動(或崩潰)時,這是因為它無法訪問另一個資源,可能是由於網絡抖動。可以將主管設置為多次重啟該過程。在重新啟動之間,該過程將進入“BACKOFF”狀態,但是沒有文檔或控制退避的持續時間。</ p> <p>在其防禦主管中確實有80%的時間滿足我們的需求。配置合理,文檔非常好。</ p> t可能由於網絡抖動而訪問另一個資源。可以將主管設置為多次重啟該過程。在重新啟動之間,該過程將進入“BACKOFF”狀態,但是沒有文檔或控制退避的持續時間。</ p> <p>在其防禦主管中確實有80%的時間滿足我們的需求。配置合理,文檔非常好。</ p> t可能由於網絡抖動而訪問另一個資源。可以將主管設置為多次重啟該過程。在重新啟動之間,該過程將進入“BACKOFF”狀態,但是沒有文檔或控制退避的持續時間。</ p> <p>在其防禦主管中確實有80%的時間滿足我們的需求。配置合理,文檔非常好。</ p>

很好的答案。所以,你基本上喜歡supervisord,但它並不總是適合每個工作的工具。 - Rick-777 2015年6月4日9:49

我喜歡你的答案,因為你肯定會展示你的經驗,並試圖設置它以滿足你的需求(可能與我的相同)。 - Matej Kovac於18年8月29日15:10

板凳
+300

如果你想要額外監控資源,你應該接受monit。除了檢查進程是否正在運行(可用性)之外,monit還可以執行一些資源使用(性能,容量使用),負載級別甚至基本安全檢查(bianry文件的md5sum,配置文件等)的檢查。它有一個基於規則的配置,很容易理解。還有很多可以使用的配置: http://mmonit.com/wiki/Monit/ConfigurationExamples

Monit需要進程來創建PID文件,這可能是一個缺陷,因為如果一個進程沒有創建pid文件,你必須創建一些包裝器。請參閱 http:// mmonit。com / wiki / Monit / FAQ #pidfile

另一方面,Supervisord更依賴於一個進程,它自己產生它。它不能將任何基於資源的檢查作為監控。它有一個很好的CLI servicectl 和一個Web GUI。

創建這樣的包裝器並不是一個真正的問題 - 如果您運行的是監控軟件,那麼通常您可以對文件系統進行一些控制。它只需要創建一個簡單的腳本。+1為好的解釋。 - Piotr Zierhoffer 12年12月24日21:41

@xavier不同意,包裝腳本還是另一個SPOF並不是每個守護者都可以確定性地包裝,想想一些java的東西例如 - Darek 10年10月25日在7:28

@Dārayavahuštdi,你有一個有效的觀點,但是對於supervisord來說卻是另一種方式:一些程序喜歡守護,而supervisord需要一切都留在前台。但是,為monit編寫包裝似乎更直接。supervisord.org/subprocess.html#nondaemonizing-of-subprocesses mmonit.com/wiki/Monit/FAQ#pidfile - Amir Mar 13年3月19日10:45

@Dārayavahuštdi對於docker容器並保持它們,docker希望在前台運行一些東西。在這些用例中,你最好用監督--Jujhar Singh於2014年8月12日7:35

supervisord插件superlance.readthedocs.org/en/latest可以監視內存,如果主管重新啟動它也可以發送電子郵件。 - Yuvaraj Loganathan 2015年11月27日8:05

101
votes
answers
27 views
+10

How to check rails environment?

How check rails environment on Ubuntu Server?

command: Rails.env => command not found command: rails.env => command not found

up vote 69 down vote accepted favorite
沙发
+690
+50

如果您在應用程序根目錄中的一個班輪

rails r“put Rails.env”

真棒。這適用於zsh。 - Kris Khaira 2015年4月23日5:23

我用rails r“把Rails.env”成功了。對您的回復進行了評價,因為它直接且簡單。 - Thom Parkin 2016年5月16日18:38

嘿,它總是說發展,即使我正在進行分期。 - 7月3日IN5ID3R 2016年7月9日12:49

你必須告訴rails命令你正在運行什麼環境。所以,我使用了這樣的命令:rails runner --environment = production“puts Rails.version” - Brian Doherty 17年5月25日1: 56

這個總是輸出開發? - hlcs 17年12月23日7:56

+150

聽起來你試圖在shell中運行 Rails.env 這是行不通的,因為 Rails.env 是Ruby代碼,而不是Unix shell命令。

如何在服務器上部署和啟動rails應用程序?Rails環境由服務器啟動時RAILS_ENV環境變量的值決定。您可能在某處指定了某個配置文件,或者您只是使用 RAILS_ENV = production my_rails_server 形式的命令啟動服務器?我需要了解更多有關您運行啟動服務器的命令的詳細信息,以便真正回答這個問題。你在使用獨角獸,雜種,Webrick還是別的什麼?

謝謝。我需要用RAILS_ENV = production運行一些rake命令。我在哪裡可以設置默認環境? - Alexander Shlenchack 2013年4月27日11:49

我認為您可以將以下命令放在服務器上的.bashrc中:export RAILS_ENV = production。然後,當您在服務器上運行該命令時,您現在需要指定RAILS_ENV。但要小心; 如果你在服務器上鍵入rake,它可能會在生產模式下運行你的測試,我不確定它是否會搞亂你的生產數據庫。 - 大衛格雷森2013年4月27日15:57

+100

您可以查看有關rails應用的完整詳情。輸入此命令“rake about”。將為您提供有關您在計算機上安裝了哪個版本的ruby,rails版本等的簡要詳細信息。例如 -

關於應用程序的環境

Rails版本------&gt; 4.2.6

Ruby版本------&gt; 2.3.1-p112(x86_64-linux)

RubyGems版本----&gt; 2.5.1

機架版----&gt; 1.6.4

JavaScript Runtime -------&gt; Node.js(V8)

中間件------&gt; Rack :: Sendfile,ActionDispatch :: Static,

應用程序根----&gt; /數據/網絡/ testapp < / p>

環境------&gt; 開發

數據庫適配器-----&gt; mysql2

數據庫架構版本-----&gt; 0

+70

在您的Rails應用程序目錄中輸入:

rake about

can you once try from here stackoverflow.com/questions/16249399/… – Saveen Jul 17 '16 at 7:13

0

您還可以在shell中的Rails控制台中檢查您的環境。從應用程序目錄路徑開始。

  rails console&lt; enter&gt;   

在您看到控制台的輸出後...(您的輸出很可能會有所不同)

 在過程XXXXX中通過Spring預加載器運行加載開發環境(Rails Xxx)irb(main):001:0&gt;   

在promt類型

  Rails.env&lt; enter&gt;   

除非您有自定義環境,否則會加載以下環境之一

  =&gt; “development”=&gt; “生產”=&gt; “test” 
     
			
        
0
votes
answers
26 views
+10

ZSH Agnoster Theme showing machine name

I have a development server hosted on Digital Ocean, using Ubuntu 14.04. I switched my shell to ZSH and decided to go with the Agnoster theme. In order to get user@hostname to stop showing, I set the DEFAULT_USER in my .zshrc file.

For some reason on the ubuntu server, that's not working. The hostname still shows, and will not go away. I'm doing the exact same thing on my Mac OSX, and it works fine.

Here are some screenshots:

enter image description here

enter image description here

Anyone know what's going on? I even tried DEFAULT_USER="$USER@$HOST" with no luck.

If I go back to the default, Robby Russell theme, it works just fine.

enter image description here

0
votes
answers
40 views
+10

將Apache重定向到/ media/...路徑後出現Apache錯誤403

0

從我的主磁盤(安裝操作系統的位置)移動文件到第二個磁盤(其他存儲)時,我試圖將Apache重定向到新的磁盤,但是這返回error number 403。我正在運行Ubuntu 16.04。將Apache重定向到/ media/...路徑後出現Apache錯誤403

我本來重定向Apache以/home/user/Documents通過添加以下行的相應文件:

/etc/apache2/apache2.conf

<Directory /home/jawa/Documents/> 
#<Directory /media/jawa/R2D2/Webpages> 
     Options Indexes FollowSymLinks 
     AllowOverride None 
     Require all granted 
</Directory> 

/etc/apache2/sites-enabled/000-default.conf

DocumentRoot /home/jawa/Documents 
#DocumentRoot /media/jawa/R2D2/Webpages 

這工作得很好,但因爲我有將文件移動到新的位置,我還必須重定向Apache。 嘗試將Apache重定向到/media/jawa/R2D2/Webpages時,我切換上述註釋並使用sudo service apache2 restart重新啓動Apache。在瀏覽器中訪問localhost返回error 403並且使用命令cat /var/log/apache2/error.log提供了以下日誌:

[Wed Dec 27 17:24:48.583062 2017] [core:error] [pid 22343] (13)Permission denied: [client ::1:35704] AH00035: access to/denied (filesystem path '/media/jawa/R2D2') because search permissions are missing on a component of the path 

權限和這兩個文件夾的所有者:

drwxr-xr-x 2 jawa jawa 4096 dec 27 17:12 Documents 
drwxrwxrwx 1 jawa jawa  0 dec 27 16:46 Webpages 

是什麼原因造成的錯誤,怎麼能解決嗎?

+0

您能提供以下輸出: ls -ld/home// home/jawa/home/jawa/Documents ls -ld/media// media/jawa// media/jawa/R2D2/media/jawa/R2D2 /網頁 – bubbly

+0

'/ media/jawa /'權限錯誤,'chmod 755'解決了這個問題。也許你可以解釋一下,爲什麼'/ media /'和其他所有內容被設置爲755或更高,但'/ media/jawa /'不是。不要回複評論,但寫一個正式的答案,所以我可以標記回答的問題。謝謝,亞歷克斯 – Alexander

沙发
0
1

因爲我們知道一個作品和其他沒有,同時列出文件夾結構的權限:

ls -ld /home/ /home/jawa /home/jawa/Documents 
ls -ld /media/ /media/jawa/ /media/jawa/R2D2 /media/jawa/R2D2/Webpages 

一旦上市比較兩個。
默認權限由umask控制,這可能會導致權限不同。

0
votes
answers
27 views
+10

cx-freeze, runpy and multiprocessing - multiple paths to failure

This is a bit of a complex one, and may take some of your time.

The basic problem is, that on linux (Ubuntu in my test case) a cx-freeze'd version of my program (Omnitool) is not able to create subprocesses. It works on Windows 7, however. Or when running directly from source code. Unfortunately it's not as simple as forgetting freeze_support.

The Problem

Default behaviour of starting a subprocess, is that the X Server crashes. Specifically like this:

XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
      after 23 requests (23 known processed) with 0 events remaining.
[xcb]Unknown sequence number while processing queue 
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called 
[xcb] Aborting, sorry about that. 
Omnitool: ../../src/xcb_io.c:274: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed. 
Aborted (core dumped)

There is no python traceback. I tried to manually call XInitThreads with ctypes, it returns 0 for successfully set, but crashes regardless. Shorty before the crash, the pygame UI bugs out, so I expect that something there faults.

Now, setting multiprocessing.set_start_method() changes problems around: "forkserver" gives me this lovely traceback, that tells me nothing:

Pastebin Example

Setting it to spawn, instead, just makes it not do anything. The process starts, and goes through __main__, as I can prove with prints, but never enters the target function for the subprocess.

Trying yourself

Make sure you have Ubuntu or comparable Linux with python 3.4. Then to get all dependencies:

Download omnitool as zip or clone from git: https://github.com/Berserker66/omnitool requirements.txt in the following code is from Omnitool.

sudo apt-get update -qq
sudo apt-get install --fix-missing mercurial subversion python3-dev python3-numpy libav-tools libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev python3-pip
pip3 install -r requirements.txt
pip3 install cx_Freeze

To freeze, run omnisetup.py with the buildargument.

I've also tried freezing with pyinstallers python 3 fork, which fails very similar. The spec file isn't git tracked though.

62
votes
answers
43 views
+10

Install Bundler gem using Ansible

I am trying to install Bundler on my VPS using Ansible.

I already have rbenv set up and the global ruby is 2.1.0.

If I SSH as root into the server and run gem install bundler, it installs perfectly.

I have tried the following three ways of using Ansible to install the Bundler gem and all three produce no errors, but when I SSH in and run gem list, Bundler is nowhere to be seen.

Attempt 1:

---
- name: Install Bundler
  shell: gem install bundler

Attempt 2:

---
- name: Install Bundler
  shell: gem install bundler

Attempt 3:

---
- name: Install Bundler
  gem: name=bundler
       state=latest

I have also tried the last attempt with user_install=yes and also with user_install=no and neither make any difference.

Any ideas how I can get it to install Bundler correctly via Ansible?

I've been working on this for a little while now and I have 1 ruby version installed: 2.1.0 and ahve found that the shims directory for rbenv does not contain a shim for bundle.

Should a shim for bundle be in there? I'm just getting confused as to why capistrano cannot find the bundle command as it's listed when I run sudo gem list but NOT when I run gem list?

root@weepingangel:/usr/local/rbenv/shims# echo $PATH
/usr/local/rbenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@weepingangel:/usr/local/rbenv/shims# gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.0
  - RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /usr/local/rbenv/versions/2.1.0/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rbenv/versions/2.1.0/bin
  - SPEC CACHE DIRECTORY: /root/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
     - /root/.gem/ruby/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org", "http://gems.github.com"]
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://gems.rubyforge.org
     - http://gems.github.com
  - SHELL PATH:
     - /usr/local/rbenv/versions/2.1.0/bin
     - /usr/local/rbenv/libexec
     - /usr/local/rbenv/shims
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games

Any ideas?

So, I think the two main problems I have:

  1. Why is bundler only visible when I run sudo gem list?

  2. My deploy is saying:

    INFO [18d5838c] Running /usr/bin/env bundle install --binstubs  
    /var/rails_apps/neiltonge/shared/bin --path  
    /var/rails_apps/neiltonge/shared/bundle --without development test
    --deployment --quiet on 188.226.159.96 DEBUG [18d5838c] Command: cd /var/rails_apps/neiltonge/releases/20140301205432 && ( PATH=$PATH
    /usr/bin/env bundle install --binstubs
    /var/rails_apps/neiltonge/shared/bin --path
    /var/rails_apps/neiltonge/shared/bundle --without development test
    --deployment --quiet ) DEBUG [18d5838c]     /usr/bin/env: bundle: No such file or directory
    

    and this is my $PATH:

    /usr/local/rbenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    

Why can't bundle be located?

up vote 47 down vote accepted favorite
沙发
+470
+50

問題是,當gem install bundler通過ansible 運行時,你沒有正確初始化rbenv,因為rbenv init運行在.bashrc.bash_profile所以使用的gem命令是系統命令,而不是作為rbenv墊片安裝的命令。因此,無論何時安裝gem,都會在系統範圍內安裝,而不是在rbenv環境中安裝。

要正確初始化rbenv,您必須執行bash本身並明確聲明它是一個登錄shell,因此它會讀取它的初始化文件:

ansible your_host -m command -a 'bash -lc "gem install bundler"' -u your_rbenv_user 

-u your_rbenv_user如果您真的想以root身份執行此操作,請保留該部分。

如果以上命令有效,您可以輕鬆將其轉換為playbook動作:

- name: Install Bundler
  become_user: your_rbenv_user
  command: bash -lc "gem install bundler"

它很麻煩,但這是我到目前為止找到的唯一方法。

嘿,完美!這是有道理的,它可以正常工作。那是另一部分解決了。接下來試圖弄清楚為什麼在capistrano部署期間無法找到bundle命令,但我認為問題可能是同一行。 - rctneil 2014年3月2日14:19

-l:告訴bash表現好像它是通過登錄shell / -c調用的:要執行的命令。這是在人類bash的第一頁:) - leucos 2014年3月2日在15:28

道歉,我的意思是。謝謝! - rctneil 2014年3月2日18:16

實際上它非常有用!讓我的流浪漢恨我少一點。:) 再次感謝。 - Petr Cibulka 2014年9月15日14:50

供參考:也適用於RVM!謝謝! - Arnlen 2015年2月24日12:47

+130

由於Ansible 1.3遵循原生解決方案是可能的:

- name: requirements for installing gems
  apt:
    name: {{ item }}
  with_items:
    - ruby
    - ruby-dev
    - make

- name: install gem with proper $PATH
  gem:
    name: xyz
    user_install: no

提到user_install參數!此外,捆綁程序安裝的某些依賴項可能需要遵循進一步的程序包依賴性:

  • 的zlib1g-dev的

這很有效,謝謝! - Eddie Jaoude 2015年7月11日7:16

謝謝,這幫助了我。 - 卡洛斯古茲曼2016年8月19日18:02

那裡最好的答案。 - ipeacocks 17年7月12日13:38

user_install:no僅適用於系統範圍的安裝。 - TomDogg 18年8月14日11:21

+20

當我嘗試以另一個用戶身份運行命令時,我遇到了類似的環境問題。如此功能請求中所述,您有兩個選項可以在登錄shell中執行命令(這將加載用戶環境)。例如,我想安裝bundler作為rails用戶:

- name: Install Bundler
  shell: gem install bundler
  sudo_user: rails -i

要么

- name: Install Bundler
  command: sudo -iu rails gem install bundler
0

這對我有用:

- name: rubygems | install bundler
  shell: gem install bundler

- name: rbenv | rehash
  shell: RBENV_ROOT={{ rbenv_root }} rbenv rehash

有時在安裝bundler之後,在系統上使用rbenv,您需要$PATH通過運行來更新rbenv rehash我只是用ansible嘗試了同樣的東西,它起作用了。Bundler可用於我的$PATH重拍後。

0

bundler使用Ansible 安裝最乾淨,最快捷的方法是:

只需rbenv使用角色https://github.com/zzet/ansible-rbenv-role並通過配置其插件安裝(顯然,配置的參數多於插件):

rbenv_plugins:
- { name: 'ruby-build',
    repo: 'https://github.com/rbenv/ruby-build.git',
    version: master }
- { name: 'rbenv-default-gems',
    repo: 'https://github.com/rbenv/rbenv-default-gems.git',
    version: master }

默認情況下,包含的插件rbenv-default-gemsbundler在安裝過程中添加到正確的目錄中,ruby您將獲得spcecified。

然後確保bundler進入PATH

而已。

44
votes
answers
38 views
+10

How to start using and developing on Ubuntu Linux? [closed]

I am a newbie Linux user who came from 10 years using windows OS, and developing in Microsoft languages.
I want to have a good experience in Linux world and developing on it.
First, I want to learn how to use this new OS, then how to start developing on it, I am interested in web applications, specially using Java/PHP because I have some experience in both and it will be a good start.

Second, I want to learn how to develop on it.
Are there any video tutorials to give me a good starting push?
any recommended books or references?

up vote 26 down vote accepted favorite
沙发
+260
+50

建議

環境設置
  1. 如果您正在進行Java開發,我建議您安裝JDK。請參閱此處,了解有關使用apt的說明安裝太陽JRE。

  2. 然後,給自己一個不錯的IDE設置。嘗試 Netbeans Eclipse - 兩者都可以配置為與php一起使用。

  3. 還要確保安裝php和Apache,

+90

Ubuntu袖珍指南

如果您是Linux新手,我建議您查看 Ubuntu Pocket Guide 它介紹了任何用戶想要了解的基本內容 - 窗口管理,系統配置等,以及Linux和Ubuntu的一些歷史背景。你可以瀏覽一下並學習一下。

Bash Basics

最後,它還解釋了 bash ,這是Linux命令行。這部分很有趣 - 你可以在bash中做的比在Windows命令行中做的要多得多。例如,您可能熟悉此Windows慣用語:< / p>

  dir&gt; directorylist.txt   

...這意味著,“列出此文件夾的內容,而不是顯示輸出,將其放在此文件中。”

In Linux,你可以這樣做,你也可以做管道,你可以將一個命令的輸出指向另一個命令。例如:

  ls | grep foo   

表示“列出此文件夾的內容,並在輸出中搜索正則表達式foo。” 您可以根據需要添加任意數量的管道並使用各種命令。

您還可以使用大括號擴展來按順序運行多個命令。例如,

  mkdir photos_ {france,spain,italy}   

+40

由於Java和PHP都是跨平台的,因此您最大的任務似乎是熟悉GNU / Linux和與Web開發相關的工具,特別是Apache Web服務器。以下是谷歌給我的一些事情:

http://www.micahcarrick.com/09-28-2007/web-development-linux.html

http://httpd.apache.org/docs/2.2/

玩得開心。

+20

另一種選擇是 Lazarus,基於 Free Pascal ,它本身基於 Delphi。

Lazarus允許您在Linux,Windows和MacOSX上使用面向對象的Pascal進行開發,並在每個目標平台上生成本機編譯的可執行文件。

本機編譯的可執行文件通常比基於解釋器的應用程序(即Java,C#,PHP)快得多。

Lazarus使用基於組件和事件的開發方法,允許您通過在表單設計器上拖放組件來設計GUI,然後通過事件掛鉤。

祝您的編程冒險好運!

+10

Ubuntu Kung Fu 可能是個不錯的開始。

+10

在Linux上使用Eclipse可以輕鬆完成Java開發。PHP開發或多或少與Windows相同。使用優秀的文本編輯器編寫PHP腳本。

安裝所需的工具可能與在Windows上完成的工作有所不同,但PHP和Eclipse都可以作為Ubuntu中的軟件包使用。

Linux非常適合Java開發,而且不僅限於Eclipse。IntelliJ IDEA和Netbeans等其他IDE也完全支持Linux,幾乎所有其他相關工具也是如此。 - Jonik 2009年4月27日11:38

+10

如果我要推荐一件事,那就是你必須學會愛殼。感到賓至如歸,但這非常值得。

在相關主題上 - 你可能想考慮使用emacs或vim作為你的編輯,但這更像是個人偏好。有些人就像IDE更好。

你應該專注於PHP,而不是Java。開始使用起來更容易,而且對於Linux傳統(無論這意味著什麼)比Java更為真實。

0

Eclipse應該可以在Ubuntu中正常運行。

嘗試使用Java開發來啟動自己。

0

如果您想輕鬆設置燈泡,可以查看Zend Server Community Edition。 http://www.zend.com/products/server/downloads-all

開發eclipse(如上所述)使用PDT(Php開發工具)非常好 http://www.eclipse.org/pdt/ 我更喜歡Netbeans。您也可以將gedit與一些插件一起使用,參見 this

說真的..使用包裝系統。這是Linux遠遠超過Windows的地方。 - troelskn 09年4月27日在21:24

你的機器中JAVA_HOME的價值是多少? - Carlos Galo Campos 2016年7月27日2:58

它沒有設定。但是,我通過sudo update-alternatives --config javac修復它,使用openjdk-8而不是/ usr / lib / jvm / java-9-openjdk-amd64 / bin / java。 - 凱文梅雷迪思2016年7月27日3:02

設置JAVA_HOME擦除錯誤了嗎? - Carlos Galo Campos 2016年7月27日3:03

在我的機器上設置JAVA_HOME刪除了錯誤 - mevdschee 2016年9月11日23:17

我遇到了同樣的問題,將java版本改為8就成了伎倆。 - lilloraffa 2017年1月5日20:41

103
votes
answers
45 views
+10

Best Method for Jar Extraction in Unix/Linux?

How do you extract the contents of a JAR file in (Ubuntu) Linux?

沙发
+520

有趣的事實:.jar文件實際上只是一個.zip文件

  unzip file.jar  
     
			
        
板凳
+400
jar -xvf file.jar
地板
+70

或者如果你安裝了jdk:

  jar xf file.jar  
     
			
        
4楼
+20

對於GUI查看器,請使用:

  file-roller file.jar  
     
			
        
5楼
+20

unzip -o GST_Build.jar -d - &gt; 嘗試在LINUX中提取一個JAR文件

6楼
0

我嘗試雙擊然後提取。它奏效了!