Ubuntu18.04 使用过程遇到的问题记录
索引:
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环境变量的区别