Fedora 31 下安裝 fbprophet

Fedora 31
Python 3.7
一、在安裝 fbprophet 時,若遇到​ gcc 的錯誤,可以試試把
環境中的編譯套件裝好。
$ sudo dnf install 'C Development Tools and Libraries'

二、然後把 python3-devel 的套件也裝上,然後再裝一次。若還是不行把 python3-sip-devel 也裝上然後再試一次。
$ sudo dnf python3-sip-devel

三、使用 pip 安裝 fbprophet
$ pip install fbprophet




在 Fedora 31 環境下安裝 TA-Lib

環境: Fedora 31 Linux
Python Version: 3.7

一、先將環境下可能需要的編譯套件裝好
$ sudo dnf install 'C Development Tools and Libraries'


二、在 Fedora 環境下可以先到以下網址下載 ta-lib-0.4.0-1.i386.rpm 使用 dnf 裝起來後。​
再執行 pip install ta-lib

三、如果在第二步的 dnf 安裝時出現檔案衝突的錯誤訊息,就採用原始碼安裝的方式。
若仍不行,就下載 ta-lib-0.4.0-src.tar.gz ,
$ tar -zxvf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib
$ ./configure --prefix=/usr
$ make
$ make install
$ pip install Ta-Lib

四、裝好後,如果執行仍會看到找不到 libta_lib.so.0 的問題,有可能是讀取 library 的路徑問題
importError: libta_lib.so.0: cannot open shared object file: No such file or directory

可以檢查 /usr/lib 目錄下是否有以下兩隻檔案而 /usr/lib64 目錄下卻沒有
  • libta_lib.so.0
  • libta_lib.so.0.0.0
可以在 /usr/lib64 目錄下建立連結到 /usr/lib 中
$ sudo ln -s /usr/lib/libta_lib.so.0 /usr/lib64/libta_lib.so.0
$ sudo ln -s /usr/lib/libta_lib.so.0.0.0 /usr/lib64/libta_lib.so.0.0.0

建立完成後, 再試一次. 

使用 ffmpeg 下載 m3u8 的影片檔





使用 ffmpeg 下載 m3u8 的影片檔

現在越來越多網站使用了像 m3u8 類的串流格式檔案,在這裡我們不提串流檔案的好處,來討論如果需要下載這類的影片做為素材時應如何處理。現在已經有些軟體有提供專用來下載 m3u8 的影像檔,但其實使用 linux 的我們,在最常使用的轉檔工具 ffmpeg 就可以處理這個問題,並不需要另外安裝其他的軟體。而且是相當簡單的指令,以下來看一下。   首先要先取得 m3u8 的位罝,不論是檔案還是網址都是可以的,例如

# ffmpeg -i "m3u8網址" -c copy media.mp4

只要沒有特殊其他的保護機制,這樣就可以透過 ffmpeg 將 m3u8 的網址下載下來成 media.mp4 的影像檔了。有時會需要指定 headers 和 user agent,則可以利用 -user_agent 和 -headers 二個參數來代入即可。

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.6.7-10.fc26.x86_64
Problem 2: package grive-0.3.0-13.3.x86_64 requires libjson-c.so.2()(64bit), but none of the providers can be installed
  - json-c-0.12.1-5.fc27.x86_64 does not belong to a distupgrade repository
  - problem with installed package grive-0.3.0-13.3.x86_64
Problem 3: package gstreamer-plugins-ugly-devel-docs-0.10.19-23.fc27.noarch requires gstreamer-plugins-ugly = 0.10.19-23.fc27, but none of the providers can be installed
  - gstreamer-plugins-ugly-0.10.19-23.fc27.x86_64 does not belong to a distupgrade repository
  - problem with installed package gstreamer-plugins-ugly-devel-docs-0.10.19-23.fc27.noarch
....
....
表示列出來的套件在 Fedora 28 的官倉中找不到對應可供升級的套件,可以把這些套件名稱都先記錄下來,先看看是不是自己必要使用的套件。可以到 RPM Fusion 和 RPM Find 找找看有沒有 Fedora 28 可以用的套件。可以的話先將這些有問題的套件移除,等升級成功後再另行安裝回來。移除套件的指令是
# sudo dnf remove xxxxxxxxx    <= xxxxxxx為套件名稱
  要特別注意的是有些人會遇到 nss-pem 這個套件卡住,錯誤訊息類似以下
Problem xx: nss-pem-1.0.3-6.fc27.i686 has inferior architecture
  - nss-pem-1.0.3-6.fc27.x86_64 does not belong to a distupgrade repository
  - problem with installed package nss-pem-1.0.3-6.fc27.i686
  有很多必要的套件都需要 nss-pem ,所以並不能直接在此先行移除。在 Red Hat Bugzilla 中有個 Ticket提到一個神奇的解決方法。在完成升級之前在 Fedora 27 的環境下指定安裝 Fedora 28 的 nss-pem 套件,裝好後再開始升級可以避開這個問題。指令如下:
# sudo dnf install nss-pem-1.0.3-9.fc28 --releasever=28
  我也是靠這個方法成功避開這個奇怪的 Bug。安裝好 Fedora 28 的 nss-pem 後,再執行 # sudo dnf system-upgrade reboot 就可以順利升級囉!
祝各位都能成功升級哦!!!!

[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_shared_bitmap_manager.cc(144)] Cannot create shared memory buffer

[12695:12729:1227/082335:ERROR:channel.cc(290)] RawChannel read error (connection broken)

[12695:12729:1227/082428:ERROR:channel.cc(290)] RawChannel read error (connection broken)

[12695:12726:1227/083559:ERROR:host_shared_bitmap_manager.cc(144)] Cannot create shared memory buffer

[WARNING:flash/platform/pepper/pep_viewclient.cpp(357)] Could not create display context.

...


只好請出谷哥大師用錯誤訊息查詢的結果,似乎是Chrome和nVidia驅動程式在Linux環境會出的BUG。




以LOG來看是Chrome在同時間開啟大量的檔案,導致超過系統允計的上限造成Chrome的頁面Crash。使用以下的指今可以看出現在系統允許每個USER能同時開啟的最大檔案數(Open files)是 1024,這是OS的自我保護機制。



# ulimit -a


core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 31647

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 1024

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited




可以先用指令的方式進行測試看看是不是真的是這個參數的影響(其實心裡已經認定是它了),因為這只是暫時性的修改而已。



# ulimit -Sn 4096

# ulimit -Hn 4096

    先用指令把參數值設定到4096(一次加到四倍,如果還不夠也太扯了),接著再用指令執行Chrome

# google-chrome




在開了一些常會跳掉的頁面後發現,真的OK了耶!

接下來就是修改設定檔,讓每次開機後設定都會生效!在參考連結的最下方有網友提到怎麼修改設定檔,但那是給Ubuntu用的。在Fedora環境下的# /etc/security/limits.conf 檔案裡有說明設檔案要怎麼用和設定檔放在/etc/security/limits.d目錄下, 以下說明Fedora的修改方式:

1. 在/etc/security/limits.d/ 目錄下建一個92-nofile.conf 檔案,內容如下


*        soft        nofile        4096

2. 重新開機


開機完後再用指令查詢

# ulimit -a

就會看到最大檔案開啟數量變成 4096 了,因為這原本就是保護機制,所以沒有必要別開太大,不然就失去了效果。 



core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 31647

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 4096

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 1024

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited



做了修改之後,Chrome就正常了,但這畢竟不是個正常的現象,檔案開啟數量超過1024,實在難以想像,還是希望能盡快改掉這個問題。




Docker SIGILL: illegal instruction 問題除錯記錄

Docker SIGILL: illegal instruction 問題除錯記錄 最近在一台平常執行得好好的伺服器上,遇到一個讓人頭痛的 Docker 問題。 原本 Portainer 和其他容器都可以正常運行,但在系統突然當機後,所有容器在啟動時都出現以下錯誤訊息: d...