【原創】在CentOS 5.7上經過YUM安裝Erlang的坑爹經歷(更新)

      想要在虛擬機上的 Linux 環境下,從新搞一下 RabbitMQ 的相關實驗,因此從新折騰了下如何操做: html

Since RabbitMQ is written in Erlang, we need to have installed the language libraries to run the broker.
      首先仍是要把 Erlang 的安裝搞定,最簡單的方式是直接重 官網 上下載源碼包或rpm包再安裝,可是我是個喜歡折騰的人,因此我選擇了另一種「比較笨拙」的方式 - 即經過 Linux 系統自帶的包管理工具進行安裝。


按照 www.erlang-solutions.com 上的說明: linux

RPM-based Linux distributions RPM packages are signed. To add Erlang Solutions key to execute command: 
# rpm --import http://binaries.erlang-solutions.com/debian/erlang_solutions.asc
Users of Fedora can add this file to /etc/yum.repos.d/ Users of Centos can add this file to /etc/yum.repos.d/ ( RPM Forge must be also added to repos)

其中 erlang_solutions.asc 內容以下: web

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)

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
ctmKvzuuerI6mVQjg/80PJ4fEV0=
=VAR1
-----END PGP PUBLIC KEY BLOCK-----


其中用於 Centos 的 repo 文件內容以下: shell

[erlang-solutions]
name=Centos $releasever - $basearch - Erlang Solutions
baseurl=http://binaries.erlang-solutions.com/rpm/centos/$releasever/$basearch
gpgcheck=1
gpgkey=http://binaries.erlang-solutions.com/debian/erlang_solutions.asc
enabled=1
按照上面的意思,須要先安裝 RepoForge , RPM Forge 上看到的內容以下:


===================================================== centos

RPMforge for CentOS 5

The default RPMforge repository does not replace any CentOS base packages. In the past it used to, but those packages are now in a separate repository (rpmforge-extras) which is disabled by default. 瀏覽器

You can find a complete listing of the RPMforge package packages at http://packages.sw.be/ app

Download the rpmforge-release package. Choose one of the two links below, selecting to match your host's architecture. If you are unsure of which one to use you can check your architecture with the command uname -i ssh

The preferred rpmforge-release package to retrieve and to install in order to enable that repository is one of the two listed above.

Install DAG's GPG key

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

Verify the package you have downloaded

rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm

<!> Security warning: The rpmforge-release package imports GPG keys into your RPM database. As long as you have verified the md5sum of the key injection package, and trust Dag, et al., then it should be as safe as your trust of them extends.

Install the package

rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm

This will add a yum repository config file and import the appropriate GPG keys.

Then try to install something like this

yum install htop
========================================================


      首先經過 uname -i 確認了個人系統是 i386 ;經過 wget 如今對應的 rpm 包後安裝,此時會在 /etc/yum.repos.d 下多出 4 個 repo :mirrors-rpmforge、mirrors-rpmforge-extras、mirrors-rpmforge-testing 和 rpmforge.repo 。

      接下來爲了驗證上述 repo 中確實能夠找到我想安裝的正確的 Erlang 版本,執行了命令 yum list|grep erlang ,結果以下:

[root@slave2 ~]# yum list|grep erlang
http://binaries.erlang-solutions.com/rpm/centos/5/i386/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not Found
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: erlang-solutions. Please verify its path and try again
      按照錯誤信息的意思,應該是路徑不對了,故直接在瀏覽器中打開上面的 http 地址,發如今只有路徑 http://binaries.erlang-solutions.com/rpm/centos/6/i386/ 是存在的,而沒有對應 5 的路徑,坑爹啊!!但是朕不死心,從新回到 https://www.erlang-solutions.com/downloads/download-erlang-otp 上檢查全部可用的 Centos 上的 Erlang 版本,結果除了一個 R14B02 32bit 版本 Erlang 是用的 Centos 5.5 的,其他全是用於 6.0 的。尼瑪,難道非要我裝 Centos 6.0 才行?!思來想去,直接改 repo 信息欺騙網站說本身是 6.0 版本而後安裝彷佛不是啥好注意,往後恐怕會惹上沒必要要的麻煩;從新裝個 6.0 的系統太煩,畢竟已有系統中有不少東西已經配置好了;直接認栽使用 R14B02 又不甘心。唉~~華山一條路,只能源碼安裝了~~~(此處省略N萬字)


      另外,將 erlang-solutions 的 repo 去掉以後,執行 yum list|grep erlang 獲得以下結果:

[root@slave2 ~]# yum list|grep erlang
ftp://ftp.oss.eznetsols.org/linux/centos/5.8/updates/i386/repodata/repomd.xml: [Errno 4] IOError: <urlopen error >
Trying other mirror.
erlang.i386                             R12B-5.12.el5.rf        rpmforge        
erlang-doc.i386                         R12B-5.12.el5.rf        rpmforge

repoforge 上的 Erlang 更老,朕是與時俱進的人,果斷放棄!

=================== 2012-12-10 更新 =======================

鑑於有網友說使用 EPEL 比較好,全部本身也搞了下試試:

具體操做請參考網頁:

  1. http://www.rabbitmq.com/install-rpm.html
  2. http://fedoraproject.org/wiki/EPEL
  3. http://fedoraproject.org/wiki/EPEL/FAQ#howtouse


最後說一下結論:

      就 Erlang 的包安裝而言,EPEL 確實要比 repoforge 新,目前提供的最新版本爲 R14B-04。這一點不管是從 repo 文件中仍是直接從 http://repos.fedorapeople.org/repos/peter/erlang/epel-5/i386/ 上均可以看出。

      上面都弄好後,執行 yum 命令顯示,能夠找到 Erlang 安裝包。

[root@slave2 yum.repos.d]# yum list|grep erlang
ftp://ftp.oss.eznetsols.org/linux/centos/5.8/updates/i386/repodata/repomd.xml: [Errno 4] IOError: <urlopen error >
Trying other mirror.
erlang.i386                             R14B-04.1.el5           epel-erlang     
erlang-appmon.i386                      R14B-04.1.el5           epel-erlang     
erlang-asn1.i386                        R14B-04.1.el5           epel-erlang     
erlang-common_test.i386                 R14B-04.1.el5           epel-erlang     
erlang-compiler.i386                    R14B-04.1.el5           epel-erlang     
erlang-cosEvent.i386                    R14B-04.1.el5           epel-erlang     
erlang-cosEventDomain.i386              R14B-04.1.el5           epel-erlang     
erlang-cosFileTransfer.i386             R14B-04.1.el5           epel-erlang     
erlang-cosNotification.i386             R14B-04.1.el5           epel-erlang     
erlang-cosProperty.i386                 R14B-04.1.el5           epel-erlang     
erlang-cosTime.i386                     R14B-04.1.el5           epel-erlang     
erlang-cosTransactions.i386             R14B-04.1.el5           epel-erlang     
erlang-crypto.i386                      R14B-04.1.el5           epel-erlang     
erlang-debugger.i386                    R14B-04.1.el5           epel-erlang     
erlang-debuginfo.i386                   R14B-04.1.el5           epel-erlang     
erlang-dialyzer.i386                    R14B-04.1.el5           epel-erlang     
erlang-diameter.i386                    R14B-04.1.el5           epel-erlang     
erlang-doc.i386                         R14B-04.1.el5           epel-erlang     
erlang-docbuilder.i386                  R14B-04.1.el5           epel-erlang     
erlang-edoc.i386                        R14B-04.1.el5           epel-erlang     
erlang-erl_docgen.i386                  R14B-04.1.el5           epel-erlang     
erlang-erl_interface.i386               R14B-04.1.el5           epel-erlang     
erlang-erts.i386                        R14B-04.1.el5           epel-erlang     
erlang-et.i386                          R14B-04.1.el5           epel-erlang     
erlang-eunit.i386                       R14B-04.1.el5           epel-erlang     
erlang-examples.i386                    R14B-04.1.el5           epel-erlang     
erlang-gs.i386                          R14B-04.1.el5           epel-erlang     
erlang-hipe.i386                        R14B-04.1.el5           epel-erlang     
erlang-ic.i386                          R14B-04.1.el5           epel-erlang     
erlang-inets.i386                       R14B-04.1.el5           epel-erlang     
erlang-inviso.i386                      R14B-04.1.el5           epel-erlang     
erlang-jinterface.i386                  R14B-04.1.el5           epel-erlang     
erlang-kernel.i386                      R14B-04.1.el5           epel-erlang     
erlang-megaco.i386                      R14B-04.1.el5           epel-erlang     
erlang-mnesia.i386                      R14B-04.1.el5           epel-erlang     
erlang-observer.i386                    R14B-04.1.el5           epel-erlang     
erlang-odbc.i386                        R14B-04.1.el5           epel-erlang     
erlang-orber.i386                       R14B-04.1.el5           epel-erlang     
erlang-os_mon.i386                      R14B-04.1.el5           epel-erlang     
erlang-otp_mibs.i386                    R14B-04.1.el5           epel-erlang     
erlang-parsetools.i386                  R14B-04.1.el5           epel-erlang     
erlang-percept.i386                     R14B-04.1.el5           epel-erlang     
erlang-pman.i386                        R14B-04.1.el5           epel-erlang     
erlang-public_key.i386                  R14B-04.1.el5           epel-erlang     
erlang-reltool.i386                     R14B-04.1.el5           epel-erlang     
erlang-runtime_tools.i386               R14B-04.1.el5           epel-erlang     
erlang-sasl.i386                        R14B-04.1.el5           epel-erlang     
erlang-snmp.i386                        R14B-04.1.el5           epel-erlang     
erlang-ssh.i386                         R14B-04.1.el5           epel-erlang     
erlang-ssl.i386                         R14B-04.1.el5           epel-erlang     
erlang-stdlib.i386                      R14B-04.1.el5           epel-erlang     
erlang-syntax_tools.i386                R14B-04.1.el5           epel-erlang     
erlang-test_server.i386                 R14B-04.1.el5           epel-erlang     
erlang-toolbar.i386                     R14B-04.1.el5           epel-erlang     
erlang-tools.i386                       R14B-04.1.el5           epel-erlang     
erlang-tv.i386                          R14B-04.1.el5           epel-erlang     
erlang-typer.i386                       R14B-04.1.el5           epel-erlang     
erlang-webtool.i386                     R14B-04.1.el5           epel-erlang     
erlang-wx.i386                          R14B-04.1.el5           epel-erlang     
erlang-xmerl.i386                       R14B-04.1.el5           epel-erlang
相關文章
相關標籤/搜索