發表文章

Python 3 在 Fedora 29 下無法執行

從 Feodra 28 升級到 Fedora 29 後,突然發現我原先在用的 Python 3.6 居然無法執行。在執行原先的專案時會出現以下的錯誤訊息。

error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
這是缺少執行所需 Library 的訊息呀,所以試著把 pyton 36 再裝一次,看看是不是真的有缺漏。可以使用以下指令進行安裝。

$ sudo dnf install python36
安裝完後再試著執行看看,應該就可以排除這一個錯誤訊息了。

Gnome Extensions TopIcons 在 Fedora 29 下無法正常運作的解決方法

圖片
在升級到 Fedora 29 後第一個遇到的問題就是主畫面的程式的常駐列不見了,因為在 Gnome 3之後已經把程式的常駐列拿掉了,如果不習慣的朋友可以透過安裝 Gnome Extension 中的 TopIcons 來找回曾經熟悉的界面。原本在 Fedora 28 下運作得很正常的 TopIcons 在進到 Fedora 29 後就出現異常了,第一個想到的是先到 TopIcons 的頁面中查看一下有沒有相關的訊息可做參考。結果之前已經有網友提出解決方案了,感謝這位 vitalik_p



就是要找出 extension.js 這隻檔案,然後將其中 manage_screen 函式中的第一個參數移除即可。而且 vitalik_p 很好心的將 script 也寫好了。只要照著執行,應該就可以修改完成。

$ cd $(HOME)/.local/share/gnome-shell/extensions/topIcons@adel.gadllah@gmail.com $ cp extension.js extension.js.bak $ sed -i 's/manage_screen(global.screen, /manage_screen(/'
然後登出後再重新登入 gnome 桌面或是重新開機也可以。就可以正常啟用了。

Fedora 27 升級到 Fedora 28

每隔一陣子就會需要做一次系統的全面升級,隨著 Fedora 27 在2018/11 停止維護後,這次的升級其實已經延了好一段時間。現在服役中的這版 Fedora 是從 17 一路升到 27,算算也陪著走過了十個佚代。準備邁向第十一囉!記錄一下這次升級的方法和遇到的問題。 從 Fedora 27 開始改用 dnf 做套件管理後,升級的方案也越趨固定了,大致如下: * 更新現有套件 * 安裝 dnf 的系統升級套件(如果原本沒有的話) * 開始升級 更新現有套件 先將現有系統中的所有套件進行更新 使用以下指令 # sudo dnf upgrade --refresh 通常這一步不會發生什麼問題,因為平常也經常在做更新呀! 安裝 dnf 的系統升級套件 如果之前跟我一樣一路升級上來的人,應該之前有裝過了。如果不確定的話也可以再裝一次。指令如下 # sudo dnf install dnf-plugin-system-upgrade 開始升級 在以上都完成後就可以開始進行整個系統升級的環境了。指令如下: # sudo dnf system-upgrade download --releasever=28 通常比較容易出現問題的都是在這一個步驟,進行升級的過程中,dnf 會先檢查是否有套件衝突或是其他無法升級的問題,一旦發現問題就會將問題顯示出來並且中斷升級。如果沒有發生問題的順利完成這個步驟就完成得差不多了。 最後再下一道重新開機的指令就準備看升級後的結果是否成功了,指令如下: # sudo dnf system-upgrade reboot 問題記錄在 開始升級 的步驟中,若是看到類似以下的錯誤訊息.error msg 錯誤: Problem 1: package ffmpeg-compat-0.6.7-10.fc26.x86_64 requires libx264.so.148()(64bit), but none of the providers can be installed - x264-libs-0.148-22.20170521gitaaa9aa8.fc27.x86_64 does not belong to a distupgrade repository - problem with installed package ffmpeg-compat-0…

[FC20]Chrome開網頁會Crash的問題

OS: Fedora 20(Linux kernel 3.17.7 x86_64)
Chrome: 39.0.2171.95 (64-bit)
nVidia Driver: kmod-nvidia-304xx-3.17.7-200.fc20.x86_64-304.123-1.fc20.22.x86_64
問題: Chrome在開某些Javascript或是畫面上有很多廣告元件和圖檔時常會變成Chrome專有的哭臉貢面,必須關閉出問題的Tab後再重新開一個。當同時開多個Tab時更為明顯。
     這個問題持續好一陣子了,一直沒有去深究到底是為什麼?抱著更新之後應該就會好了,在做了兩周的更新後,似乎都沒有改善。只好動手開始找問題,開始以為是我的Profile檔案有問題,就用老方法 - 把現在的Profile備份起來後(PS. Chrome的Profile檔案在/home/michaelr/.config/google-chrome 目錄下),刪掉再重新開啟Chrome,讓Chrome自己重新產生一份新的Profile。但似乎沒有效果,仍然會有Crash的哭哭臉頁面跑出來。
     藉由在console中執行chrome來查看Chrome的顯示的錯誤訊息時,可以看到類似以下的錯誤訊息。




[WARNING:flash/platform/pepper/pep_module.cpp(63)] SANDBOXED
[WARNING:flash/platform/pepper/pep_viewclient.cpp(357)] Could not create display context.
[WARNING:flash/platform/pepper/pep_viewclient.cpp(357)] Could not create display context.
...
[12695:12733:1227/081954:ERROR:net_util_posix.cc(168)] getifaddrs: 開啟太多檔案
[WARNING:flash/platform/pepper/pep_viewclient.cpp(357)] Could not create display context.
...

[12695:12726:1227/081954:ERROR:host…

Fedora 20升級後的"Oh no! Something has gone wrong."登入畫面

圖片
經過Fedup的漫長升級過程後,總算是見到了Fedora 20的登入畫面,但在登入原本自己的舊帳號後就發生悲劇了。在輸入密碼後,不是跳出美麗的桌面,而是一個"Oh no! Something has gone wrong."的Gnome錯誤訊息,然後就只能選擇Log Out,第一個想法是"該不會升級失敗了吧!!!"。不過開機過程和登入畫面看起來都挺正常的呀! 先用"Alt + Ctrl + F2"跳到純命列模式的consol界面繼續登入,幸好是可以登入的。

  因為懷疑是不是因為舊使用者的設定檔在新的環境中發生問題,所以試著用指令新增一個新使用者再來登入試看看。再切換回GUI模式用新使用者進行登入,竟然可以正常登入,這表示系統升級是成功的而且很有可能如我所猜測的一樣是舊環境設定的關係。進行一連串的google 查詢和各fedora論壇的衝浪,找到這篇討論。在新環境的 /usr/share/gnome-session/sessions/ 目錄下真的沒有 gnome-fallback.session 這個檔案,而其他的 gnome.session 是存在的。在之前的Fedora 18時,有將Gnome界面改回傳統界面,就是透過dConf editor將gnome的session-name改為gnome-fallback來調整的。如果系統中沒有gnome-fallback.session的檔案,那原本是這個設定值的帳號,將無法正常套用gnome的設定,於是就出現這個的錯誤了。


  至於為什麼Fedora 20會不能使用gnome-fallback這個設定值呢?那在Fedora 20裡的gnome又要如何改為傳統的界面呢?原來在Fedora 20裡的傳統界面可以透過套件整合在登入視窗的選項裡了,因此透過更改gnome設定值方式已不再使用了。在Fedora的論壇裡找到更改的方法,只要安裝 gnome-classic-session 套件就可以了。

  知道問題的發生原因就好處理了。一樣先用Alt + Ctrl + F2 切換到consol界面後,登入到要修正的帳號後,再用指令的方式把gnome-session修正為原來的值。指令如下:
 # dbus-launch gsettings set org.gnome.de…

Fedora 18升級到Fedora 20

Fedora在Fedora 18之後的升級方式有了變化,Fedora 17之前的版本是可以透過yum升級,但18之後的版本官方建議的方式是透過 fedup 來升級。可見參考連結,而且官方比較建議的升級媒介是透過網路取得套件,而並非光碟或是ISO檔。其實最主要的考量是透過網路可以直接更新為最新的套件,而且對使用者而言,最方便的是系統中之前透過yum安裝的套件只要有新系統可以用的套件也會一併更新,例如用yum安裝的那些從rpmfusion來的套件也能一併更新,超級方便。


  而官方的升級方式都是一個版本一個版本的往上升級,如果是像我一樣想要一次從Fedora 18升到20的話,其實也是可以的。不過系統升級最重要的其實是備份,所以在一切開始之前請千萬要記得備份資料,備份的方式就視每個人需要的備份程度而定了。


  在開始之前,官方有份資料最好可以先看一下,就是Fedora 20的已知bug,頁面上同時也列出解決方法,如果有遇到問題,可以先到這裡看一下。


  第一步先將現有的系統套件更新到最新版本,請指令視窗(終端機模式)指令如下:
# sudo yum update -y


  第二步,確認系統中是否已安裝 fedup ,如果不確定,直接下達安裝指令也可以,如果已經裝過了,系統會自動跳過。指令如下:
# sudo yum install fedup


  第三步,準備開始利用 fedup 升級吧,不過因為我們要升級的套件有可能是沒有簽章的套件,例如來自rpmfusion的套件,因此加上 --nogpgcheck 的參數!
# sudo fedup --reboot --network 20 --nogpgcheck


  接下來就是漫長的等待了(真的很久,上千個套件要下載和檢查,能不久嗎?),等待系統下載要升級的套件後,再確認套件的相依是否正確。最後才會開始進行系統的升級。


  如果發生套件有相依性的錯誤時,看看有問題的套件是那些,如果是比較不重要的套件,就先移除後再繼續升級。


Key word: Fedora 18 fedup upgrade




[Fedora 18]Firewalld在純script環境下的bug

圖片
在Fedora的系統中,預設的防火牆已由iptable改為Firewalld了。Firewalld有較為優良的GUI設定界面,在剛開始還蠻容易上手。在使用一段時間後,發現一個問題。因為我的PC並不是一直開著機,而是有要用到時,再透過遠端開機的方法將PC開起來使用。一直以來用iptable也都沒發生什麼問題,自從開始使用Firewalld之後,常會發生將電腦開機後,透過ssh的方式連回家使用,有時會發生SSH無法正常連線,或是剛開機時可以正常連線,但使用一會兒之後就會斷線就無法連線了。幾番確認之後,確定問題出在防火牆。趁這幾天有空到各大論譠和Fedora的官網中看看有沒有什麼已知的問題,總算在官網中對Firewalld的說明中找到一段很重要的字句,也說明了為什麼會突然不通的原因。

參考連結:https://fedoraproject.org/wiki/FirewallD#Network_connections_handled_by_network_scripts




原來官方早就知道這個問題,而且在Fedora 19中還沒解決,突然覺得似乎換回iptable,雖然設定上較麻煩,但可控性比較高。