2014年3月28日 星期五

Yum 的新參數「只下載不安裝」

前一陣子在解決用 YUM 更新時,可能因『不正常關機』(也可能被其他使用者『不小心關機』),而出現套件版本衝突的問題(詳見:解決「YUM 更新時,出現套件版本衝突」的問題)。在找方法避免這種情形再發生時,發現 YUM 有一個新參數不錯用,這次的發文就介紹它的用法。

:似乎是 YUM 將之前原本需要再安裝外掛的功能,整合到 YUM 的套件中

  YUM 加上這個參數後,會執行下載『差異安裝檔(*.drpm)』,重建『套件安裝檔(*.rpm)』,完成後 YUM 即中止執行。
[root@Celeron-D ~]# yum update --downloadonly
這更新過程只有一半,並沒有進行安裝。待確認不會被『不正常關機』時,再下平時的更新命令,
[root@Celeron-D ~]# yum update -y ; shutdown -h now
整個更新程序會從頭開始執行,不過下載『差異安裝檔(*.drpm)』和重建『套件安裝檔(*.rpm)』這兩個步驟幾乎全被跳過去了,直接進入『套件安裝』步驟。並在安裝後,立即將電腦關閉。
  有關 YUM 命令的相關發文請自行參考:

使用心得、經驗分享

  1. 可隨時下『yum update --downloadonly』命令,即使被『強制關機』也不易因更新中止,而使得系統運作不正常。
  2. 平時還在用電腦時,即下『yum update --downloadonly』命令,系統在背景下載、重建將用於更新的『套件安裝檔』。
      在關機前再下平時用的更新命令,可加速更新過程、減少開機時間,應該可以省一些電費。

已測試版本:

  • Fedora: 19, 20

2014年3月23日 星期日

用「dconf 編輯器」解決「IBus 輸入法的順序錯誤、重覆」問題

解決「開機後 IBus 即預設為新加入的輸入法」的問題

Fedora 預設的輸入法順序的第一個是『英文』,但如果曾增加其它輸入法或刪除不用的輸入法時,登入後所顯示的輸入法不一定是『英文』。通常在輸入密碼、在「終端機」下命令、甚至是輸入文字時,都可能需要輸文『英文』。常常是出現錯誤訊息後,才警覺到預設的輸入法被切換為『英文』輸入。
有時也會如上圖一樣出現重覆的輸入法,應該某個軟體自動加入的。
  前文『解決「開機後 IBus 即預設為新加入的輸入法」的問題』所述的步驟,最近在 Fedora 20 有時會沒有作用。在「MATE 桌面環境」的選單中,有個『dconf 編輯器』。趁著有空試了一下,找到從這裏修改輸入法順序的方法。步驟說明如下:

一、開啟 dconf 編輯器

點選《程式選單》→《應用程式》→《系統工具》→《dconf 編輯器》開啟『dconf 編輯器』。再從左欄點選《desktop》→《ibus》→《general》,這時會出現一個設定畫面如下圖,
在『engines-order』和『preload-engines』這兩項資料多了一些輸入法。

二、修改 IBus 設定

刪除不要的輸入法(例:上圖中的 xkb:us::fox)和修改輸入法的順序,結果如下圖,
接著關閉「dconf 編輯器」,並登出帳號。下次再登入帳號時,預設輸入法就會是『英文』,且多餘的輸入法也會被刪除掉。

注意:未登出帳號前,將『IBus 輸入』程式重新啟動,剛才的修改似乎無效。一定要下次再登入帳號時,才會生效。

已測試版本:

  • Fedora: 20
  • MATE 1.6.2

2014年3月20日 星期四

解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」(三)

最近在安裝 Guest Additions 時,又出現不能自動跳出正常的安裝畫面。回顧過去的發文,僅列出幾個解決這個問題的方法(其它較臨時性的作法未列),就有以下這麼多,
  1. 解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」
  2. VBox 裏 Fedora 安裝 Guest Additions 的準備工作
  3. VirtualBox 的「Guest Additions 成功升級」必勝秘技
  4. 解決「Fedora 18 不能安裝 Guest Additions 4.1.24」
  5. 解決「VBox 虛擬機的 Linux 之核心升級 3.11 後不能用『共用資料夾』」問題
  6. 在以 headless 模式啟動之 VirtualBox VM 安裝 Guest Additions
  7. 解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」(二)
這次又出問題,得想個一定可解決這個問題的方法才好。這個解決步驟一定要適用這個要求:
  • DVD 接在『IDE 控制器』或『SATA 控制器』
  • 可安裝與 VirtualBox 同一版本,或其它不同版本的『Guest Additions』
查閱之前的發文,以最近一次的發文最適合,就拿它來整理、修改一下。詳細步驟如下:

2014年3月16日 星期日

在「遠端電腦」開發,以連接「本地電腦」之 Android 裝置測試

前一陣子在開發的 Android Apps 程式需要用 Android 裝置測試,用 VNC 連接「遠端電腦」並在其上開發 Apps。要在 Android 實體機測試時,將在「遠端電腦」編譯後產生的 Android apk 檔案,用 FTP 或 SFTP 下載回「本地電腦」,再利用 Android 的開發工具 ADB 將之下載至 Android 裝置測試。
  覺得其中的『用 FTP 或 SFTP 下載回「本地電腦」』這個步驟有些麻煩,就想再找個方法在每次編譯後都直接下載到 Android 裝置,就像開發、測試都在同一台電腦一樣方便。參考網路上的做法,再加上自己的一些嘗試,終於達成這個目標。
  就將這些步驟記下來,以供將來需要時的參考。整理一下到目前為止的紀錄:
開 發 端測 試 機 (端)發 文 連 結
Eclipse (PC_1)AVD (在 PC_1)預設之開發環境(使用 AVD 模擬器)
Eclipse (PC_1)Android 裝置 (連接 PC_1)預設之開發環境(使用 Android 裝置)
Linux 中,令 ADB 測得以USB連接的 Android設備
Linux 中,令 ADB 測得以USB連接的 Android設備(F19)
Eclipse (PC_1)AVD (在 PC_2)使用另一台電腦的 Android 模擬器 (AVD) 除錯
Eclipse (PC_1)Android-x86 (為 PC_2)用另一台運行 Android-x86 的電腦除錯
Eclipse (PC_1)Android 裝置 (Galaxy SII)用 Wi-Fi 下載 Android 程式到 GALAXY SII 手機
Eclipse (PC_1)Android 裝置 (連接 PC_2)在「遠端電腦」開發,經 SFTP 下載,再由「本地電腦」ADB 載入至 Android 裝置測試
Eclipse (PC_1)Android 裝置 (連接 PC_2)本文

註一:『PC_1』和『PC_2』分別指兩台不同之電腦,『PC_1』為執行開發 Android App 的 Eclipse 之電腦,而『PC_2』是指另一台電腦。
註二:『PC_1』和『PC_2』編號與執行快慢無關,選擇以方便開發為主要考量。

2014年3月15日 星期六

PulseAudio 跨越『不同子網路』的連線設定

在深入研究 PulseAudio 這個『網路聲音伺服』系統,愈覺得它的功能強大,難怪許多『開放原始碼』作業系統都選擇它作為聲音次系統。之前幾篇發文:
都鎖定同一個子網域中兩台電腦的連線,一個『受音端(伺服端)』廣播所提供的 PulseAudio 服務訊息,另一個『音源端(用戶端)』電腦則將音訊經網路送到『受音端』播放。
  最近在試著將不同子網路的兩台電腦建立連線,想知道 PulseAudio 是否仍能夠補償線路的延遲。使用的測試網路架構如下:
  • 兩部電腦 PC_A 及 PC_B 分別位於 A、B 兩個子網路。
  • 子網路 B 是透過分享器接上子網路 A,且分享器無特別設定。
  • PC_A 無法連線 PC_B,而 PC_B 則可以連線 PC_A。
在以上情況下,PC_A 與 PC_B 分別設定為 PulseAudio 之『受音端』或『音源端』,雙向皆無法正常透過前面發文的步驟建立連線。當然,聲音的傳送也不能成功,幾經測試終於找到建立 PulseAudio 連線的方法,而且兩個方向的傳輸都可建立。步驟說明如下:

2014年3月11日 星期二

解決「YUM 更新時,出現套件版本衝突」的問題

最近在更新一台電腦的作業系統時,覺得更新的過程怪怪的,出現版本衝突的問題。可是檢查該版本套件又實際已安裝在系統中。想說是某次正新更新時,不小心把電腦關了,造成更新不正常結束。就試著將之前可能的未完成更新繼續完成,
[root@M2400 ~]# yum-complete-transaction
No unfinished transactions left.
由結果訊息判斷,應該是沒有未完成的更新才對。可是,明明更新過程就覺得不太正常,有時還會出現套件版本衝突的錯誤訊息(忘了將訊息複製、就不貼上來)。試著用其它方法查看看,是否有其它原因造成這種現像,
[root@M2400 ~]# yum list | grep installed
abrt.i6862.1.12-2.fc20installed
abrt-addon-ccpp.i6862.1.12-2.fc20installed
abrt-addon-kerneloops.i686    2.1.12-2.fc20    installed
abrt-addon-pstoreoops.i6862.1.12-2.fc20installed
abrt-addon-python.i6862.1.12-2.fc20installed
abrt-addon-vmcore.i6862.1.12-2.fc20installed
abrt-addon-xorg.i6862.1.12-2.fc20installed
 . . . . .
赫然發現了許多出現『installed』狀態的套件,找了一下前面提過出現版本衝突的套件也在其中。分析『yum update』的更新過程,有『下載套件差異檔(.drpm)』、『重建安裝檔(.rpm)』、『下載完整套件(無套件差異檔者)』、『套件完整性檢查』、『更新』、『清除舊版本套件』及最後的『驗證』。上述的『install』狀態,應該是 YUM 在最後的『清除舊版本套件』或『驗證』階段被中斷所致,所以出現『installed』,但是之後的更新卻找不到最後完整安裝的資訊紀錄。
  有線索就試試看,將有問題的套件(:特定版本)一一移除,
[root@M2400 ~]# yum remove abrt-2.1.12-2.fc20.i686 abrt-addon-ccpp-2.1.12-2.fc20.i686 abrt-addon-kerneloops-2.1.12-2.fc20.i686 abrt-addon-pstoreoops-2.1.12-2.fc20.i686 abrt-addon-python-2.1.12-2.fc20.i686 abrt-addon-vmcore-2.1.12-2.fc20.i686 abrt-addon-xorg-2.1.12-2.fc20.i686 . . . . .
將有問題的套件移除後,再下一般更新命令,
[root@M2400 ~]# yum update
就一切恢復正常了。

移除套件時,只能移除出問題的特定版本。未指定套件版本時,會將整個套件的各版本全部移除,可能造成系統無法正常開機。

  有關 YUM 命令的其它相關發文請自行參考:

已測試版本:

  • Fedora: 20

2014年3月5日 星期三

在 Fedora 19 (3.13.5) 安裝 NVIDIA FX 5200 驅動程式

Fedora 19 系統安裝好後,曾經試過安裝 NVIDIA GeForce FX 5200 的驅動程式,當時測的版本是 173.14.37,好像 173.14.38 時也測過一次,不過沒有成功。因為有其它事情正在忙,就先改用 Fedora 隨附的 NVIDIA 驅動程式 nouveau 先撐著用。去年底 NVIDIA 釋出 173.14.39 版的驅動程式,又因忙著安裝一台 FreeBSD 伺服器,也擱置未測。
  最近成功地將 173.14.39 版驅動程式安裝在 Fedora 19 (kernel 3.12.11-201),想說應該可以用原廠的驅動程式了。想不到 Fedora 又更新核心到 3.13.5-101 版,剛裝沒多久的驅動程式又再重新編譯一次了。不過,這次沒有那麼成功,一直卡在一個 ACPI 的函式。到網路上搜尋許久,都沒有 173.14.39 版的修正資料。猜想這又是一個 Linux 核心改寫的問題,就往這方向去找。結果,就間接地找到修正的方法,不然怎麼會有這次的發文。修改的地方很簡單,只有一個位置,完整步驟(節錄部份前文步驟,方便讀者操作)的說明如下:

2014年3月2日 星期日

解決「Fedora 19 的 Rhythmbox 不能聽 “網路電台”」的問題

前一版 Fedora 19 安裝後,只有測試原有的『網路電台』是否可以加入,一直沒有時間用 Rhythmbox 聽『網路電台』。今天想說點個網路電台聽聽。結果,跳出這個訊息
這是因某個套件未安裝所致。依照之前的慣例,點了【搜尋】按鈕,一如往常開始尋找。
但是,卻又跳出一個找不到的訊息。