2015年1月13日 星期二

解決「在 Fedora 21 安裝 VirtualBox 失敗」的問題

VirtualBox 官網於 2015-2-12 釋出新版 4.3.22,並解決本篇所提問題,本篇所述步驟已暫時無需操作,僅留做記錄。
本篇是針對以前文『Linux 中 VirtualBox 的安裝與自動更新』操作時,所發生的錯誤訊息提出解決辨法。若是以其它方式安裝,如
  • 安裝 RPM-Fusion 社群重製的版本,或
  • 每次都從 VirtualBox 官網下載並安裝
的讀者,此篇發文的內容不一定有用。
安裝完 Fedora 21 後,就想再安裝 VirtualBox。依之前的發文步驟,卻出現如下的錯誤訊息:
[root@Celeron-D ~]# yum list VirtualBox
 . . . . .
http://download.virtualbox.org/virtualbox/rpm/fedora/21/x86_64/repodata/filelists.xml.gz: [Errno 14] HTTP Error 404 - Not Found
Trying other mirror.

One of the configured repositories failed (Fedora 21 - x86_64 - VirtualBox), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this:
  1. Contact the upstream for the repository and get them to fix the problem.
  2. Reconfigure the baseurl/etc. for the repository, to point to a working upstream. This is most often useful if you are using a newer distribution release than is supported by the repository (and the packages for the previous distribution release still work).
  3. Disable the repository, so yum won't use it by default. Yum will then just ignore the repository until you permanently enable it again or use --enablerepo for temporary usage:

            yum-config-manager --disable virtualbox

  4. Configure the failing repository to be skipped, if it is unavailable.  Note that yum will try to contact the repo. when it runs most commands, so will have to try and fail each time (and thus. yum will be be much slower). If it is a very temporary problem though, this is often a nice compromise:

            yum-config-manager --save --setopt=virtualbox.skip_if_unavailable=true

failure: repodata/filelists.xml.gz from virtualbox: [Errno 256] No more mirrors to try.
這個錯誤訊息是指:在「套件資料庫」伺服器中並未發現適當的版本,也就是說沒有與執行中的作業系統相同版本、相同 CPU 架構的套件。
  將「套件資料庫」的設定檔用『文字編輯器』打開,先查看一下內容,再決定下一步。請讀者用自己熟悉的『文字編輯器』開啟位於『 /etc/yum.repo.d/ 』目錄中,名為『 virtualbox.repo 』這個『套件資料庫』設定檔。(下槶三個命令擇一選用)
[root@Celeron-D ~]# pluma /etc/yum.repos.d/virtualbox.repo

[root@Celeron-D ~]# gedit /etc/yum.repos.d/virtualbox.repo

[root@Celeron-D ~]# vi /etc/yum.repos.d/virtualbox.repo
上例中的第一、二個命令分別為「MATE 桌面」及「GNOME 桌面」的『文字編輯器』,第三個命令為 Linux 常用的『文字模式』之『文字編輯器』(或另一衍生版 vim),讀者依自己喜好選用。
  因為「套件資料」的預設值是去下載目前執行中的版本,而 VirtualBox 的網站並未建立對應於 Fedora 21 目錄,所以才會發生上面的錯誤。將『 $releasever 』修改為『 20 』即可,如下所示:
[virtualbox]
name=Fedora $releasever - $basearch - VirtualBox
#baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/$releasever/$basearch
baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/20/$basearch
enabled=1
gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
上例中,是將原設定值的列首加『 # 』使之無效,複製另一列再修改,方便將來還原用。再執行一下「套件資料庫」的查詢,就一切正常了!
[root@Celeron-D ~]# yum list VirtualBox*
Loaded plugins: langpacks

Available Packages
VirtualBox.x86_644.3.20-3.fc21rpmfusion-free-updates
VirtualBox-4.2.x86_644.2.26_95022_fedora18-1   virtualbox
VirtualBox-4.3.x86_644.2.26_95022_fedora18-1virtualbox
VirtualBox-devel.x86_644.3.20-3.fc21rpmfusion-free-updates
VirtualBox-guest.x86_644.3.20-3.fc21rpmfusion-free-updates
VirtualBox-kmodsrc.x86_64   4.3.20-3.fc21rpmfusion-free-updates
:將來 VirtualBox 官網有加上 Fedora 21 的目錄時,將再發文請讀者回復原設定。

已測試版本:

  • Fedora 21
  • VirtualBox 4.3.20

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)