知识库

wiki.linsakura.com

用户工具

站点工具


wiki:os:ubuntu:desktop:20_04_unity

这是本文档旧的修订版!


Ubuntu 20.04 Unity桌面

下载并安装 ubuntu

site: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04.6/
file: ubuntu-20.04.6-desktop-amd64.iso
md5: eeabb7996e94b2f0a6eaf73f8943d19f

VMware新建虚拟机向导

打开VMWare Workstation(这里以17.5.1版本为例),文件 ⇒ 新建虚拟机 ⇒ 自定义(高级) ⇒ 下一步。
a) 选择虚拟机硬件兼容性
硬件兼容性: Workstation 16.x。
下一步。
b) 安装客户端操作系统
稍后安装操作系统 ⇒ 下一步。
c) 选择客户机操作系统
Linux ⇒ Ubuntu 64位 ⇒ 下一步。
d) 命名虚拟机
虚拟机名称: ubuntu_20.04.6 (自定义)
位置: (自定义)
下一步。
e) 处理器配置
处理器数量: 1
每个处理器的内核数量: 8 (自定义)
下一步。
f) 此虚拟机的内存
8GB (自定义)
下一步。
g) 网络类型
使用网络地址转换(NAT) ⇒ 下一步。
h) 选择I/O控制器类型
SCSI控制器: 准虚拟化 SCSI
下一步。
i) 选择磁盘类型
SCSI ⇒ 下一步。
j) 选择磁盘
创建新虚拟磁盘 ⇒ 下一步。
k) 指定磁盘容量
最大磁盘容量: 120GB (自定义)
将虚拟磁盘拆分成多个文件 ⇒ 下一步。
l) 指定磁盘文件
使用默认 ⇒ 下一步。
m) 已准备好创建虚拟机
完成。
注意: 这里本来可以马上自定义硬件浏览iso加载的,但是VMWare好像有bug,这里加载会出错,所以创建完成再去加载。
n) 加载iso镜像
点击创建好的虚拟机页面中的设备-CD/DVD (SATA) ⇒ 修改连接 ⇒ 使用 ISO 映像文件 ⇒ 浏览选中ubuntu-20.04.6-desktop-amd64.iso ⇒ 确认。

开启虚拟机进行安装

首先开启此虚拟机
a) 欢迎
左侧语言选择中文(简体);
右侧点击安装Ubuntu。
b) 键盘布局
默认即可 ⇒ 继续。
注意: 由于屏幕太小,无法点击下方按钮,可以按快捷键 Alt + F7,然后调整窗口位置。
c) 更新和其他软件
勾选正常安装 ⇒ 勾选安装Ubuntu时下载更新 ⇒ 勾选为图形或无线硬件,以及其他媒体格式安装第三方软件 ⇒ 继续。
注意: 勾选上方选项后,会自动安装open-vm-tools(-desktop)工具,自适应屏幕。
d) 安装类型
清除整个磁盘并安装Ubuntu ⇒ 现在安装。
弹出“将改动写入磁盘吗?”,继续。
e) 您在什么地方?
默认就是Shanghai,继续。
f) 您是谁?
您的姓名: test (自定义)
您的计算机名: test (自定义,建议越简短越好,因为命令行每次都会显示,避免过长)
选择一个用户名: test (可与姓名一致)
选择一个密码:
确认您的密码:
勾选登录时需要密码,继续。
g) 安装完成
现在重启。
提示Please remove the installation medium, then press ENTER:
VMWare菜单栏,关闭客户机。
再次编辑虚拟机设置,CD/DVD (SATA) ⇒ 使用物理驱动器 ⇒ 取消勾选启动时连接。

进入Ubuntu

跳出在线帐号

右上角跳过 ⇒ 前进,
您想要发送这些信息吗?: 否,不发送系统信息。
前进 ⇒ 关闭位置服务 ⇒ 前进 ⇒ 完成。

软件和更新

点击左下角,找到软件和更新。
Ubuntu软件 ⇒ 下载自 ⇒ 其它… ⇒ mirrors.cqu.edu.cn ⇒ 选择服务器 ⇒ 关闭 ⇒ 重新载入。

安装Unity

!!!注意: 如果unity使用root账户,会有一个很严重的bug,就是桌面只有一个可见窗口时,对其进行最小化百分百触发界面卡死,如果两个窗口及其以上则正常,但如果最小化其他窗口并剩下一个窗口时,就会出现此问题。如果是普通账户,则没有此问题。

sudo apt install ubuntu-unity-desktop

安装完成后,配置Default display manager: lightdm
重启即可。

启用root桌面账户

启用root

# 修改root密码
sudo passwd root
# 编辑conf文件
sudo gedit /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
# 在后面添加以下3行
user-session=ubuntu
greeter-show-manual-login=true
all-guest=false

终端颜色高亮问题

使用root账户默认的终端颜色很多没有高亮,但是普通账户是有的,所以只需要将原有的普通账户的配置复制到root使用即可

cd /root
cp .bashrc ./.bashrc.bak    //备份root配置
cp /home/[普通账户名]/.bashrc .

删除普通账户

sudo userdel -r [普通账户名]

常用设置

自适应屏幕

apt install open-vm-tools open-vm-tools-desktop

重启。

主目录隐藏部分自带文件夹

我们知道,linux默认隐藏文件夹的方式是在文件夹名前加小数点,但是某些系统自定的文件夹,如“公共、模板、视频、图片、文档、下载、音乐、桌面、示例”不方便添加小数点,但是我们依然想要隐藏它们,那就可以用到下面的方法:
首先在想要隐藏文件夹的同目录打开终端,然后新建一各.hidden文件:

touch .hidden
gedit .hidden

然后在.hidden文件中每一行添加想要隐藏的文件夹,如:

公共
模板
snap
...

然后保存,刷新当前文件夹即可

ifconfig命令

通过ifconfig可以查看ip等信息

apt install net-tools

ssh连接

安装openssh-server,可以让主机通过ssh连接虚拟机

apt install openssh-server

修改配置允许root访问

gedit /etc/ssh/sshd_config
//然后修改
#PermitRootLogin prohibit-password
//为
PermitRootLogin yes

重启ssh服务

service sshd restart

壁纸存放位置

/usr/share/backgrounds
把喜欢的图片放进此目录,更改文件名为里面随便一张图片的名称,即可在设置中显示和应用

内核相关

默认自带内核:
5.15.0-117-generic(默认更新并使用的)
5.15.0-67-generic
其中从内核5.15.0-116-generic开始,多显示器无法正常使用,只能使用前一个版本5.15.0-113-generic或更旧的版本才行。
一个内核一般包含以下模块:

linux-headers-5.15.0-67-generic
linux-hwe-5.15-headers-5.15.0-67
linux-image-5.15.0-67-generic
linux-modules-5.15.0-67-generic
linux-modules-extra-5.15.0-67-generic

安装字体

otf可直接双击后安装
ttf字体,将字体复制到/usr/local/share/fonts/目录,然后执行

sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv

多版本gcc/g++切换

下面演示系统中有g++-7和g++-9的切换

# 安装
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 60
# 切换
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

安装搜狗输入法

进入系统设置 ⇒ 语言支持,会提示不完整的语言支持,然后按照提示安装。
安装完成后退出,重新进入语言支持,键盘输入法系统选择fcitx,重启。
下载搜狗linux版。
site: https://shurufa.sogou.com/linux
file: sogoupinyin_4.2.1.145_amd64.deb
md5: 1da9f84523346150c74a250b494c8b1f

dpkg -i sogoupinyin_4.2.1.145_amd64.deb

然后会报错:

 sogoupinyin 会破坏 fcitx-ui-qimpanel
  fcitx-ui-qimpanel (版本为 2.1.3-2build1)已存在并且 已安装。

卸载fcitx-ui-qimpanel:

apt remove --purge fcitx-ui-qimpanel

重新安装搜狗,然后重启。
点开右上角输入法图标 ⇒ 配置,会提示:
您正在图形界面下运行fcitx,但是fcitx-configtool未被找到,软件包名通常为fcitx-config-gtk,fcitx-config-gtk3,或者fcitx-configtool。现在将用默认文本编辑器打开配置文件。

apt install fcitx-config-gtk

然后再次打开配置,在输入法配置中,删除其他输入法,添加搜狗输入法个人版。
神(S)奇(B)的ubuntu会认为libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2不需要了,让我们用apt autoremove移除它们,但是你一旦卸载了,输入法就不能用了。
所以建议是,先autoremove,然后手动install它们,这样就不会被再次当做要被移除的了。
还有就是你如果点进语言支持,他会提示安装不完整,让你继续安装fcitx-ui-qimpanel,然后你的搜狗输入法又没了,所以属于是恶性循环了,所以不要管语言支持的那个提示。

安装svn RabbitVCS

sudo apt install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus

ubuntu20.04无法保存svn账户和密码的:
升级python3-svn到1.9.11

sudo add-apt-repository ppa:philippun/stuff
sudo apt update
sudo apt install python3-svn

安装git

sudo apt install git

使用git管理svn

如果要在git中使用svn,则安装git-svn

sudo apt install git-svn

git-svn的使用:

# 克隆全部提交
git svn clone svn://[ip]/xxx
# 克隆最近几次提交
git svn -r[开始版本]:HEAD clone svn://[ip]/xxx
# 克隆版本17到版本21的提交
git svn -r17:21 clone svn://[ip]/xxx
# 更新svn到最新版,先贮藏,rebase后,再弹出
git svn rebase
# 将本地git的commit提交到svn
git svn dcommit

安装sqlite3

sudo apt install sqlite3 sqlitebrowser

分析器

Clang Tools QC 4.11.1

参考QtCreator版本4.11.1

Run Options ⇒ Manage… ⇒ Diagnostic Configurations
点击Copy…, 然后取一个新的配置名字用于自定义
配置Clang-Tidy
勾选clang-analyzer-*, 勾选google-* ⇒ explicit-constructor, 其他默认
配置Clazy

Clang Tools QC 15.0.0

参考QtCreator版本15.0.0

Run Options ⇒ Default Clang-Tidy and Clazy checks ⇒ Diagnostic Configurations
点击复制, 然后取一个新的配置名字用于自定义
配置Clang-Tidy Checks
勾选clang-*, 勾选cppcoreguidelines-* ⇒ macro-*, 勾选google-* ⇒ explicit-constructor
配置Clazy Checks

Qt问题集棉

xxx.h is not used directly

新版QtCreator,其实是clangd 17.x之后的版本,如果include的头文件不是当前文件直接使用的话,会提示一下警告:
Included header ***.h is not used directly (fix available)
这个很难处理,也没必要处理,所以可以采用下面的方法屏蔽
找到clangd的配置文件:
/root/.config/clangd中,修改config.yaml文件
修改前:

# This file was generated by Qt Creator and will be overwritten unless you remove this line.
Hover:
  ShowAKA: Yes
Diagnostics:
  UnusedIncludes: Strict

修改后:

Hover:
  ShowAKA: Yes
Diagnostics:
  UnusedIncludes: None

上面第一句话一定要删掉,不然配置修改后也会被qt重置,还有就是后面的Strict改为None,然后整个世界清静了

on_foo_bar are error prone

如果自动生成槽的空间名称中不含_就会出现这种警告:
Slots named on_foo_bar are error prone [clazy-connect-by-name]
这个其实不是错误,只是clangd的qt定制的Clazy的警告,主要是怕你自动生成的on_xxx_click之类的槽,
一旦在更改objectName之后,可能不会去手动更改这些槽的名称,所以就会出现警告

解决办法一:
严格的重新命名文件,就是空间的objectName中必须包含一个下划线_
比如我拉两个QPushButton,第一个默认为pushButton,第二个默认为pushButton_2
这样生成的槽就是on_pushButton_clickedon_pushButton_2_clicked
然后on_pushButton_clicked就会报这个警告
所以就必须严格去更改名称为有意义的,比如pushButton_DoSth,甚至你随便加一个下划线也可以,如pushButton__pushButtonbtn_btn_Close之类的,
但终归很多时候你可能并不会去重新命名,且这样命名后也只是消除了报警,它担心的事情依旧没有解决,相当于掩耳盗铃
所以

解决办法二:
打开首选项分析器Clang ToolsRun OptionsDiagnostic configuration:Default Clang-Tidy and Clazy checks
因为这个是默认的,所以我们无法更改,所以需要新建一个我们自己的配置
点击复制 ⇒ 填入配置名称 ⇒ 确定
然后在Custom那里就会看到我们的配置,点击它 ⇒ Clanzy Checks*Level 0: No false positives ⇒ 取消勾选 connect-by-name
这样,就不会产生上面的警告了

当然最好的习惯就是,默认的控件名后加上_YourName这样的方式最好,修改名称后也记得手动去更改那些槽函数名

编译错误error: cannot find lGL

apt install libgl1-mesa-dev

添加x86的qmake错误

错误提示: The qmake executable [path] could not be added: Cannot start "xxxx/qmake": execve: No such file or directory
需要安装32位库:

sudo apt-get install lib32stdc++6

编译错误error: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded

编译x86即编译器加上-m32时(x86-linux-generic-elf-32bit),会出现以下错误:
:-1: error: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
此时需要安装libgtk3-nocsd0:i386
但是ubuntu20只提供了libgtk3-nocsd0而没有i386的库,这个库在ubuntu18上有提供
所以打开软件和更新其他软件添加:

deb http://mirrors.cqu.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.cqu.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.cqu.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.cqu.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

添加上面第一行即可,然后等待重新载入完成,再安装该库:

sudo apt install libgtk3-nocsd0:i386

编译x86 找不到c++ config.h等

系统自动默认安装了g++-9,但不是multilib

sudo apt install g++-9-multilib

然后还是编不过,需要用g++-7版本

sudo apt install g++-7-multilib

QtCreator 14.0.1

安装会提示:

From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
 
Available platform plugins are: minimal, xcb, eglfs, minimalegl, vkkhrdisplay, wayland-egl, linuxfb, wayland, offscreen, vnc.

安装libxcb:

sudo apt install libxcb-cursor0

*.qss文件无法语法高亮

打开Qt首选项 ⇒ 环境 ⇒ MIME类型 ⇒ 过滤css ⇒ 点击text/css,
然后在模式处,更改*.css*.css;*.qss

编译目录设置

修改编译文件的路径和文件夹名
Qt Creator 4.11.1:
构建和运行 ⇒ Default build directory ⇒ Default build directory
原本参考: ../%{JS: Util.asciify("build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}")}
改成: ./build/%{JS: Util.asciify("%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}")}
Qt Creator 5.0.2:
构建和运行 ⇒ Default Build Properties ⇒ Default build directory
原本参考: ../%{JS: Util.asciify("build-%{Project:Name}-%{Kit:FileSystemName}-%{BuildConfig:Name}")}
改成: ./build/%{JS: Util.asciify("%{Kit:FileSystemName}-%{BuildConfig:Name}")}
Qt Creator 14.0.1
构建和运行 ⇒ Default Build Properties ⇒ Default build directory
原本参考: ./build/%{Asciify:%{Kit:FileSystemName}-%{BuildConfig:Name}}

wiki/os/ubuntu/desktop/20_04_unity.1750407129.txt.gz · 最后更改: 2025/06/20 16:12 由 博丽幻月