索引:
2.在 Ubuntu 18.04 中將第三方軟件添加至 favorite 菜單欄
3.在 VMware workstation 中為虛擬機安裝 VMware Tools
7.Ubuntu 18.04 運行 deep wine for ubuntu 時 TIM 中文顯示方框
貌似每次重新安裝系統后解決輸入法都是一個老大難問題,這里記錄的是 Ubuntu 18.04 環境下安裝搜狗輸入法的過程,總的來說比較順利。
(1) 安裝 fcitx 。在新安裝好的 Ubuntu 18.04 系統中,發現鍵盤輸入系統中沒有 fcitx 選項,可以通過命令行進行安裝。
sudo apt-get install fcitx //安裝 fcitx
(2) 安裝完成后,在屏幕右上角的下拉菜單中選擇設置,Region&Language -> Manage Installed Languages,首先確認在 Install/Remove Languages 提供的菜單中有安裝 Chinese(simpilified) 的選項。之后在 Keyboard input method system 中選擇 fcitx 選項,之后點擊 Apply System-Wide 選項,通過重新登陸使得上述設置生效。
(3) 在這里下載搜狗輸入法的 deb 安裝包,並雙擊進行安裝。安裝完成后通過重啟完成配置。
(4) 重啟電腦后在屏幕的右上角已經存在一個鍵盤標志,用戶可通過 點擊圖標 -> configure current input method 對輸入法進行配置,在筆者的安裝過程中,此時搜狗輸入法已經在彈出的配置窗口中。若此時配置窗口中並不存在 Sogou Pinyin 選項,則可以點擊界面右下角的 “+” 圖標,取消勾選 Only show current language,之后搜索 sogou 關鍵字並選擇 Sogou pinyin 即可。
上述過程並不是筆者探索出來的最優過程,而僅僅只是筆者根據過往經驗、網絡資料以及最終結果(這次一次成功O.O)而記錄的安裝步驟。若上述步驟並不成功,筆者建議使用比較笨的辦法,直接從頭開始配置相關環境。將 Keyboard input method system 中的選項恢復成 ibus,並 Apply System-Wide ,之后通過 sudo apt-get purge sogoupinyin 卸載對應的應用,並通過 sudo apt-get autoremove 刪除多余的依賴文件,同時還需要刪除 ~/.config 文件夾中與 fcitx 和 sogou 相關的所有的配置文件,這樣將系統恢復至比較原始的狀態后,再去嘗試網絡上提供的其他安裝步驟,否則容易出現某一步出現問題而需要反復進行安裝的情況( 僅根據個人之前安裝失敗的經驗所述 )。
2.在 Ubuntu 18.04 中將第三方軟件添加至 favorite 菜單欄( Ubuntu Dock )
Ubuntu 環境下,某些通過 tar 包下載的軟件如 PyCharm 通過執行命令行命令的方式啟動,這樣操作導致每次啟動應用程序的操作較為繁瑣。同時在啟動軟件后,雖然軟件在屏幕左側的菜單欄上有圖標顯示,但卻無法通過 右鍵 -> add to favorites 的選項來將應用圖標固定在菜單欄上以便於啟動應用。而且在 Show Application 中也無法通過搜索獲得對應的應用程序的圖標。這里主要通過添加 .desktop 文件的方式來為應用程序在桌面上建立快捷啟動方式。
.desktop 文件為 linux 系統下為快速啟動系統而使用的快捷方式文件,根據其所處位置的不同而具有不一樣的效果,當 .desktop 文件位於 /usr/share/applications/ 文件目錄下,則該快捷方式對於整個系統范圍有效,而若 .desktop 文件位於 ~/.local/share/applications 文件目錄下,則其僅對於當前用戶有效。一般情況下,在通過安裝包進行軟件安裝過程中,安裝過程會自動為應用創建 .desktop 文件,但通過源碼編譯生成的應用程序和通過 archive 格式下載的軟件則不會有對應的 .desktop 文件,用戶可為其手動創建。
.desktop 文件的格式用戶可參考上述目錄中已存在的文件的格式,也可參照以下簡單的模板創建名為 applicaiton_name.desktop 的快捷方式文件。
[Desktop Entry] Type=Application Encoding=UTF-8 //字符編碼類型 Name=MyApplication //對應 entry 的名字 Comment=My fancy new application //對該 entry 的描述 Exec=my_application //應用的可執行命令,包括執行程序和參數,一般是安裝的應用程序中推薦使用的啟動命令,注意一般使用絕對路徑進行描述 Icon=my_application.png //應用的圖標文件路徑 Terminal=false
將上述 .desktop 文件保存后(不包含注釋),用戶即可通過 Alt + F1 打開的 Activities 或 win + a 打開的 Show Application 界面中通過搜索在先前 .desktop 文件中指定的 Name 字段的名字搜索得到對應的應用的圖標( 該圖標由 .desktop 文件中的 Icon 字段的路徑指定 )。之后用戶可選中上述圖標 右鍵 -> Add to favorite 即可將對應的圖標添加至桌面的左側菜單欄,方便對應用程序進行快捷啟動。
參考資料:
Gnome Shell - How to add a custom favorite app / change favorite's path ?
Adding custom programs to favorites of Ubuntu Dock
How to Create a .Desktop File For Your Application in Linux
3.在 VMware workstation 中為虛擬機安裝 VMware Tools
VMware Tools 可以為虛擬機提供更多諸如全屏顯示,文件共享等功能,這里記錄下在 CentOS 虛擬機中安裝 VMware Tools 的過程。(安裝過程需要 root 權限)
(1)選中需要安裝的虛擬機的標簽,右鍵 -> 選擇 安裝 VMware Tools ,VMware workstation 會將一個載有安裝文件的虛擬 CD 載入系統中;
(2)通過 mount 命令檢查系統是否已經自動掛載了虛擬光驅,如果系統自動掛載了光驅,則會有一條掛載項顯示文件系統類型為 iso9660 ,即對應光盤系統的文件類型;
mount //顯示當前系統的掛載情況
(3)若系統沒有自動進行掛載,則需要用戶手動進行光驅掛載。
mount /dev/cdrom /mnt/cdrom //即將光驅掛載在目錄 /mnt/cdrom目錄下
若系統提示對應的掛載目錄不存在,則新建 /mnt/cdrom 目錄即可。
mkdir /mnt/cdrom //新建一個目錄
(4)手動掛載成功后, /mnt/cdrom 目錄下的內容即為掛載的光驅中的內容。可通過 ls 命令進行查看。此時該目錄下應該有一個名為 VMwareTools-xxxx.tar.gz 的文件。
ls /mnt/cdrom //查看掛載成功后的目錄內容
(5)解壓該文件,並運行其中的 vmware-install.pl 文件,即可進行 VMware Tools 的安裝。
tar -zxvf /path/to/VMwareTools -C /path/to/extract file //將對應的 .tar.gz 壓縮文件解壓至對應的 /path/to/extract file 文件夾下
之后進入解壓后的文件目錄,通過 ./vmware-install.pl 文件安裝 VMware Tools 即可。
(6)用戶可通過 umount 掛載目錄 的方式取消當前的掛載。
umount /mnt/cdrom //取消在/mnt/cdrom 目錄上掛載
在使用 Matlab R2018b 時,發現其支持的 g++ 版本為 g++ 6.3.0 ,而在 Ubuntu 發行版上,g++ 版本一般隨系統升級(有些 distribution 上默認不包含編譯環境),所以無法滿足上述需求。這里記錄下 Ubuntu 環境安裝不同版本的 g++ 編譯器。
(1) 首先通過 g++ --version 查看當前系統的 g++ 版本;
g++ --version //查看當前 g++ 版本
可以看到當前的 g++ 版本為 7.3.0.
(2) 通過 apt 命令查看當前可通過 apt 安裝的 g++ 的版本( 顯示的信息依賴於上一次進行 apt-get update 的緩存信息)
sudo apt-cache search g++ | grep g++ //查看當前與 g++ 相關的包,並篩選其中包含有 g++ 的行
通過上述命令看到目前可使用 apt 命令安裝的 g++ 版本的情況,包括對應不同版本,不同架構的編譯器,以及對應的庫的支持,一般而言,安裝某版本的 g++ 只需要選擇對應的 g++-n 和 g++-6-multilib 即可。
(3) 通過 apt 安裝對應所需要的 g++ 版本和庫。但是這里注意,使用 apt 安裝的 g++ 編譯器和相關庫的版本只能選擇大的版本號如 6 ,而無法指定具體的小版本號 6.3.0,如筆者安裝的 g++-6 的版本實際為 g++-6.4.0.
sudo apt install g++-n g++-n-multilib //安裝對應的 g++ 編譯器和庫
(4) 通過命令切換不同的 g++ 編譯器版本。
通過 update-alternative 為不同版本的編譯器創建鏈接
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 40 //創建 g++-6 的鏈接,並指定了優先級 40 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 60 //創建 g++-7 的鏈接,並指定了優先級 60
優先級用於在系統進行自動選擇時確定使用的軟件版本,在自動模式下,總是使用優先級高的版本。
sudo update-alternatives --config g++ //手動選擇所需的軟件版本
輸入上述命令后,直接通過數字索引選擇所需的 g++ 版本即可。
上述配置過程除可以用於不同版本的編譯器的設置外,還可以用於設置具有相似功能的不同軟件的替換和切換,更多原理的介紹可以參考 update-alternatives 命令的幫助文檔 man update-alternatives。
ffmpeg 是一個由提供對視頻、音頻和其他多媒體流文件進行處理功能的庫和程序構成的自由軟件項目,其常被用於適用於不同格式的音頻和視頻的錄影、轉換和流處理等場合。這里記錄在 Ubuntu 18.04 平台下安裝 ffmpeg 的過程。( 注:ffmpeg 目前已經可以通過 apt 直接進行安裝,見最后 )
a.在 ffmpeg 官網上下載對應的安裝壓縮包,筆者使用的是 ffmpeg-4.1.tar.bz2 ,將其解壓至用戶主目錄下。
tar -xvjf ffmpeg-4.1.tar.bz2 -C ~ //將文件解壓縮至用戶主目錄
b.簡單的安裝過程在解壓獲得的 ffmpeg-4.1 目錄中的 INSTALL.md 文件中有一定的描述,首先對編譯安裝環境進行配置。
./configure //檢測當前的編譯安裝環境
此時可能會產生報錯 "nasm/yasm not found or too old" ,這是由於 ffmpeg 中部分優化代碼使用匯編編寫,對應的編譯過程需要使用匯編編譯器,這里有兩種選擇,一種是在 ./configure 時使用 --disable-yasm 選項,最終獲得是一個裁剪版本的 ffmpeg 工具集;另外一種是安裝對應的匯編編譯器,可使用下列命令進行安裝。
sudo apt install yasm //安裝 yasm 編譯器
安裝完成后,需要重新執行上述 ./configure 操作,再進行下一步操作。
c.正確的進行環境配置后,ffmpeg 會列出目前已經檢測到的環境的情況,包括檢測到的外部依賴庫和將要生成的應用程序等,完整的應用程序套件包括 ffmpeg( 用於視頻的轉碼 ),ffplay( 用於簡單的視頻播放和測試 )和 ffprobe( 用於查看文件格式 ),在配置的 programs 字段會有輸出。此時可能會出現 ffmpeg 准備生成的應用程序中沒有 ffplay 的情況,如下圖所示。
這時可以查看一下對應的 External libraries 字段,看其中是否存在 SDL。
SDL是編譯 ffplayer 所必須的外部庫,而 Ubuntu 環境並不會對其默認安裝,故而需要用戶手動安裝。這里注意,網上的一些大概五六年前的博客記錄的是要安裝 libsdl1.2-dev 的庫,而實際上目前(2018) ffmpeg 已經支持 SDL2,用戶可通過如下命令查看可以安裝的 sdl 版本。
apt-cache search libsdl | grep libsdl //查看目前可安裝的 sdl 庫版本
這里選擇安裝的是 libsdl2-dev,使用 apt-install 安裝。
sudo apt install libsdl2-dev //安裝所需的 sdl 庫
安裝完成后,可以查看下 /usr/include 目錄下是否含有對應的 SDL2 的庫,確認安裝過程成功,若上述目錄不存在,在后續的編譯過程可能會產生報錯 "fatal error: SDL.h: No such file or directory" 。完成上述配置后,再進行 ./configure ,就可以在 External libraries 字段中發現對應的 sdl2 字段,對應的 Programs 字段下也會有 ffplay 了。
d.通過 make 執行編譯過程,編譯完成后,在解壓目錄下就應該已經存在 ffmpeg 、ffplay 和 ffprobe 的可執行程序了。此時執行 sudo make install 命令完成安裝過程。
make //編譯產生對應的庫文件和應用程序 sudo make install //安裝上述編譯結果,某些操作需要 root 權限,故而使用 sudo
注意:上述安裝過程僅編譯了最基本的 ffmpeg 功能,並沒有包括所有 ffmpeg 支持的編碼格式等內容,用戶在編譯時需要根據自己的需要對編譯時的參數進行調整。
(1)手動編譯獲得的 ffmpeg 在使用時可能出現以下錯誤
Unrecognized option 'crf'. Error splitting the argument list: Option not found
以及
Unrecognized option 'preset'. Error splitting the argument list: Option not found
這常見於在使用 ffmpeg 時使用到了 libx264,但在實際的編譯過程中並有指定編譯 libx264 參數,默認不會編譯這一部分組件,從而產生報錯。解決方案可以是直接通過命令行安裝最新版本的 ffmpeg 或者通過指定對應參數的方式重新編譯 ffmpeg.重新編譯的參數具體可以參考 Compile FFmpeg for Ubuntu, Debian, or Mint。
若想要使用 apt 安裝 ffmpeg ,可以進入 ffmpeg 源碼目錄,通過 make uninstall 卸載之前安裝的手動編譯版本的 ffmpeg.之后通過 apt 命令安裝 ffmpeg。
sudo apt install ffmpeg //通過 apt 安裝 ffmpeg
參考:ffmpeg: Unrecognized option 'crf'. Error splitting the argument list: Option not found
(2)在通過 apt 安裝 ffmpeg 后,在使用時可能會出現報錯。這是由於手動編譯安裝的 ffmpeg 安裝在 /usr/local/bin/ 目錄下,而通過 apt 安裝的 ffmpeg 位於 /usr/bin 目錄下。在卸載手動安裝的 ffmpeg 后上述應用程序信息並沒有直接更新,故而產生了以下報錯。
bash: /usr/local/bin/ffmpeg: No such file or directory
解決方式:對於終端或圖像界面,均可通過重新啟動的方式刷新上述可能的更新信息,從而可以正常使用。在命令行環境下,也可以直接通過命令 hash -r 刷新信息。
參考:why ffmpeg command producing error in Ubuntu terminal?
Ubuntu 系統環境下,可以通過 ftp 協議與遠程主機和服務器進行文件的傳輸。用戶想使用 ftp 服務時,可以使用提供 ftp 服務的應用程序如 FileZilla,從而在圖像界面上方便地進行操作。Ubuntu 18.04 中可以直接通過 apt 進行 FileZilla 的安裝,這里安裝的是可以提供 ftp 連接功能的 FileZilla 客戶端。
sudo apt install filezilla //通過 apt 安裝 filezilla 客戶端
而在某些情況下,用戶可以直接通過命令行中的 ftp 命令使用 ftp 服務。
a.登錄開啟了 ftp 服務的服務器,通過 ftp 地址 的方式使用 ftp 命令登錄 ftp 服務器。通過 ftp 命令登錄 ftp 服務器后,會進入一個 ftp 命令提供的交互式界面,后續與 ftp 相關的操作均在該界面中進行。
ftp address //登錄 address 指向的 ftp 服務器,地址可以是域名或ip地址,后續需輸入用戶名和密碼
使用 ftp 命令登錄 ftp 服務器的效果如圖所示。僅使用目標地址作為 ftp 命令的參數時,需要依次輸入賬號和密碼進行登錄。在某些 ftp 服務器中,開放了匿名賬戶即賬號和密碼均為 anonymous 的賬戶供公共使用。用戶可在提示符 "ftp>" 后輸入需執行的命令。
b.用戶可在上述交互式界面中執行所需的操作,包括文件管理、文件的上傳下載等操作。
1)遠程登錄的 ftp 服務器上可以進行基本的文件管理操作,支持包括顯示當前目錄下文件結構( ls ),切換目錄( cd )和新建/刪除文件夾( mkdir/rmdir ),顯示當前路徑( pwd )等命令。上述命令針對的是登錄的服務器端的操作,與本地主機無關。如圖示的操作中,通過 cd 命令進入了名為 VSR 的目錄,通過 ls 命令列出了當前目錄下所包含的文件結構。
2)用戶可以通過 put 和 get 命令進行文件的上傳和下載操作。文件路徑可以是相對路徑也可以是絕對路徑,當不指定文件的絕對路徑時,上述命令默認在當前目錄下通過相對路徑尋找指定的文件。
put 文件路徑 //將本地的文件上傳至服務器端的當前目錄 get 文件路徑 //將服務器端的文件下載至本地的當前路徑
上述 put 和 get 命令僅支持單個文件的傳輸,若想要一次同時處理多個文件,可以使用 mput 和 mget 命令,從而可以同時指定多個文件。
3)使用 get 和 put 命令時,get 命令將 ftp 服務器上的文件下載到本地主機的當前目錄,這里本地主機的當前目錄默認為使用 ftp 命令登錄遠程主機時的本地目錄。如若登錄時,本地終端位於用戶根目錄~,則后續 get 命令直接將文件下載至用戶根目錄 ~ 下。用戶可以通過 lcd 命令切換本地主機的目錄,從而使得 get 命令下載的文件能夠直接位於目標目錄下。
lcd dir //切換本地主機的當前目錄至 dir 指定的目錄
c.在完成所需文件的操作后,通過 bye / quit / bye 命令退出上述交互界面,同時結束與遠程服務器之間的會話。
quit/bye //退出 ftp 服務器
參考:
FTP Commands for Linux and UNIX
7.Ubuntu 18.04 運行 deep wine for ubuntu 時 TIM 中文顯示方框
運行的系統為 Ubuntu 18.04,系統默認語言為英文。
問題描述:安裝了 deep wine for ubuntu 以在系統上支持 TIM 的使用。TIM 在安裝時運行正常,進行過一些 Ubuntu 的系統更新后,TIM 中文顯示全部變為方框的形式,且中文輸入也為空白框,如下圖所示。
解決方案:
在 Ubuntu 系統更新后,可能存在一些依賴上的問題。可以找到文件 /opt/deepinwine/tools/run.sh ,將原來的 WINE_CMD 注釋掉,並將 WINE_CMD 修改為 "LC_ALL=zh_CN.UTF-8 deepin-wine".
#WINE_CMD="deepin-wine" //注釋掉原始的 WINE_CMD
WINE_CMD="LC_ALL=zh_CN.UTF-8 deepin-wine" //定義一個新的 WINE_CMD
Linux 中通過 locale 來設置程序運行的不同語言環境。locale 的命名規則為 <語言>_<地區>.<字符編碼集>,如 zh_CN.UTF_8 即代表 中文_大陸地區-UTF-8 字符集。而 LC_ALL 被設置時,則將所有的 LC_* 的變量的值設置為 LC_ALL 的值。通過上述設置,可以使得通過 wine 運行的程序的字符設置為 zh_CN.UTF_8 ,從而使得顯示正常。
除上述方法外,若想要更換運行的程序中的字體,可以參考這里。
參考:
locale的設定中LANG、LC_ALL、LANGUAGE環境變量的區別