2012-11-02 114 views
1

所以我有我的Ruby-on-rails應用程序,我成功發佈到heroku。但是爲了填充數據庫,我有幾個Perl腳本,基本上可以將本地數據庫上的表與遠程數據庫同步。如何在Heroku機器上安裝Perl的DBI模塊

在我的開發機器上(在EC2上)它工作正常,但我也有很多東西,我隨着時間的推移安裝了它。

當我嘗試運行我的腳本,我得到以下錯誤(最新Perl是一種由安裝方式)

Can't locate DBI.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at copyStaff.pl line 4. 
BEGIN failed--compilation aborted at copyStaff.pl line 4. 

如何在Heroku上安裝DBI模塊Perl的? 我通過慶典試圖

apt-get install libdbi-perl 

這給了我的

W: Not using locking for read only lock file /var/lib/dpkg/lock 
E: Unable to write to /var/cache/apt/ 
E: The package lists or status file could not be parsed or opened. 

輸出[這可能是無關緊要] 我試圖運行此命令

dpkg --configure -a 

但它告訴我,它需要超級用戶權限

su -l root -c "dpkg --configure -a" 
  • 詢問root密碼,顯然我不知道密碼(這不是英雄登錄),不知道它可能是什麼。

我也直接下載了文件,但我需要超級用戶訪問。我也試過

我有一種感覺,我可能會在它完全錯誤的方式去

$perl -MCPAN -e shell 
cpan> install DBI 

(不繃能夠保存文件的此有同樣的問題),但我想不出我需要做什麼來運行這些腳本。

+0

你試過'sudo apt-get install libdbi-perl'? – mvp

+0

在heroku機器上沒有sudo,說無法識別的命令 – StanM

回答

2

嗯,我得到了客戶的支持答案,只是數據庫粘貼在這裏


不幸的是我們不不支持在我們的堆棧中安裝額外的庫或二進制文件。最好的解決方法是將這些供應商供應到您的項目中。您需要使用64位Linux版本才能在Heroku上運行;靜態編譯還可以幫助確保包含所需的任何依賴項。同樣,對於依賴外部圖書館的寶石,我們建議靜態編譯寶石並將寶石銷售到您的項目中。

如果您確實希望嘗試供應您的二進制,庫或gem,那麼您可以使用Heroku作爲構建環境。我們的一位工程師創建了一個構建服務器,允許您上傳源代碼,運行編譯步驟,然後下載所產生的二進制文件。你可以在這裏找到這個項目: https://github.com/heroku/vulcan

+0

感謝您的額外信息@StanM –

3

你將不得不去研究Heroku的Perl Buildpacks,其中我知道Perloku的存在,還有其他兩個自稱是perl-heroku的東西。

Buildpack嘗試安裝Heroku本身不支持的環境,如Perl。我發現了一些安裝Mojolicious,另一個安裝了apache2/mod_perl env。

您必須與buildpack維護人員交談,以確定他們是否安裝了DBI/DBD :: mysql,但他們很可能只是基於這些模塊的受歡迎程度。

如果你走到這一步,那麼所有你需要做的就是同步:-)

+0

安裝/維護這些是否會有問題,因爲我已經在該heroku安裝上的rails上運行ruby了?我看了一下https://devcenter.heroku.com/articles/third-party-buildpacks,但我不確定這是我可以使用的。我會假設它會以不同的方式進行部署,而不是使用我擁有的正確RoR文件。 PS。我試圖安裝一個buildpack,但不知道如何實際安裝它們。對不起,我現在剛剛閱讀關於構建包。 – StanM