我的Linux笔记
目录
引言
作为一个Linux初学者,在第一次接触到Manjaro(kde)时就深深地爱上了这个系统,以至于后来重装系统时选择的也是Manjaro(Gnome),之所以选择后者,是因为Gnome的风格和操作习惯更适合我。这个系统我已经用了有一段时间,有几个比较困扰人,可能大多数人都会遇到的的问题今天一起把它们解决了 ^_^ 。
输入法
安装输入法,我这里选用的是Googlepinyin
。一般现在的系统,在软件管理程序中下载输入法时就包括有相应的依赖包。
如果没有依赖包或者不全,我们只好手动安装:
1 | 依赖包 |
输入法和依赖包都安装好后,然后配置环境。我们需要在/etc/profile
中添加以下内容并关机重启:
1 | export GTK_IM_MODULE=fcitx |
安装好的输入法:
鼠标滚轮
新系统装好后可能会遇到滚轮速度过慢的问题,不解决的话真的很影响日常使用。我们先下载imwheel
这个程序,然后在~/.imwheelrc
中添加程序设置(注:在vim中,“Esc”退出,“i”插入),如下:
1 | ".*" |
开机自启
上面的imwheel
安装好后还要设置开机自启,也有一些其他软件需要设置,比如IDM
,Qv2ray
等。有的Linux发行版可以直接在系统设置里面添加,我的Gnome也可以,但是却只能添加完整的应用软件,不能是单独的程序。所以针对Gnome,我们可以在gnome-session-properties
中设置,如果没有则需要事先下载。
下载好后,打开就是这样。在添加程序时,若不知道安装位置,可以使用whereis “name”
指令查看。
科学上网
在Linux中如何科学上网这个问题困扰了我许久,解决后才知道如此简单(菜是原罪)。代理软件我用的是Qv2ray(好用不多说),我们需要下载两个东西,v2ray-core和Qv2ray。
下载好后,我们先解压v2ray-core,然后打开Qv2ay(若无法打开,则右键属性修改权限,允许执行文件),我们现设置“首选项”,在“内核设置”里,修改“可执行文件路径”和“资源目录”。
“可执行文件路径”,点击右边按钮选择刚刚解压的文件,找到“v2ray”,点击确定。
而“资源分配”则直接选择总的解压文件,然后在“连接设置”里把“绕过中国大陆IP”勾选上,其它设置就不用管了。
因为我个人使用但是机场订阅链接,所以这里主要讲订阅链接的使用方法。
首先点击左下角的“分组”,在“组编辑器”里选择“订阅设置”,勾选下方的“此分组是一个订阅”并输入订阅链接,最后点击下方的“更新订阅”就可以确定并退出。
当然你可以选择手动配置,方法是点击左下角“新建”,选择“手动输入”,再点击下方的“打开连接编辑器”即可手动配置。
双击机场节点,并在设置里选择“系统代理”即可正常使用。
插件管理
在Qv2ray的左上角还有一个“插件”选项,点进去后我们可以在这里添加一些常用插件,比如SSR,Trojan,NaiveProxy等插件,可以让我们使用其它格式的订阅链接。
注:插件同样也要赋予可执行权限。
耳机问题
其实在第一次使用Manjaro时就遇到耳机(有线)无法识别的问题,但并不影响,因为可以在“音量控制”里找到“Headphones”选项,虽然显示“(已拔出)”但可以正常使用。
这次在Gnome上也遇到这个问题,不过并不是像上面一样,而是根本无法识别出耳机。
针对这种情况,我们需要下载另一个音量控制程序——“PulseAudio”。
安装好后,我们在”端口“选项中就可以找到”Headphones“,显示”(已拔出)“但不影响。
现在,可以正常使用你的耳机啦。
补充:用命令行修复输出设备无法识别,在终端里输入以下命令后并重启计算机。
1 | $ echo "options snd-intel-dspcfg dsp_driver=1" > /etc/modprobe.d/alsa.conf |
JAVA环境配置
JDK 11
JAVA现在普遍用的版本是11,而最常用的是Oracle家的jdk11,所以我也下载的是这个,点击下载。
根据下方图片所示完成下载后,我们把压缩包解压到目录/usr/java
。
解压好后,我们就可以在/etc/profile
中修改环境变量,添加以下内容:
1 | export JAVA_HOME=/usr/java/xxx-----XXX为你使用的jdk |
最后重启电脑以生效。
JRE
jdk9以后的版本不再自动生成jre,这时我们需要手动生成。如果java目录中没有jre,那么上面环境变量中的jre并不会生效。接下来的操作很简单,我们在终端进入到/usr/java/XXX
,然后执行以下指令:
1 | $ bin/jlink --module-path jmods --add-modules java.desktop --output jre |
执行成功后,我们可以看到目录中已经有了jre。
出处:https://blog.csdn.net/y_qc_lookup/article/details/99948136
Android Studio
AS可以直接从Arch的仓库中下载安装,十分方便。
安装好后,我们在使用AS时遇到的最大问题就是SDK,AVD,以及gradle。但是,这些问题都是可以通过科学上网直接解决的,或者使用国内镜像代理。
镜像列表及使用方法
镜像列表
南阳理工学院镜像服务器地址:
- mirror.nyist.edu.cn 端口:80
中国科学院开源协会镜像站地址:
- IPV4/IPV6: mirrors.opencas.cn 端口:80
- IPV4/IPV6: mirrors.opencas.org 端口:80
- IPV4/IPV6: mirrors.opencas.ac.cn 端口:80
上海GDG镜像服务器地址:
- IPV4/IPV6: mirrors.opencas.ac.cn 端口:80
北京化工大学镜像服务器地址:
- IPv4: ubuntu.buct.edu.cn/ 端口:80
- IPv4: ubuntu.buct.cn/ 端口:80
- IPv6: ubuntu.buct6.edu.cn/ 端口:80
大连东软信息学院镜像服务器地址:
- mirrors.neusoft.edu.cn 端口:80
腾讯Bugly镜像:
- android-mirror.bugly.qq.com 端口:8080
- 腾讯镜像使用方法:http://android-mirror.bugly.qq.com:8080/include/usage.html
使用方法
- 启动Android Studio,打开主界面,依次选择“Configure”,“System Settings”,弹出“HTTP Proxy”窗口;
- 在“HTTP Proxy”窗口中,选择“Manual Proxy Configuration”,勾选“HTTP”,在“Host name”和“Port number”输入框内填入上面镜像服务器地址(不包含http:// ,如下图)和端口,设置完成后单击“Check connection”按钮,最后关闭设置窗口返回到主界面;
- 依次选择“Packages”,“Reload”。
VS Code
最开始我并不知道Arch的仓库中有VS Code,我是根据网上的这篇帖子完成安装,虽然有点多此一举,但是也给其它Linux发行版提供了参考,下面是安装流程:
首先我们去官网下载最新的VS Code,下载时注意你所选择的文件格式以及架构。
下载完后,我们把压缩包解压到文件目录/usr/vs_code
,此时双击“code”就已经可以运行了(可能需要给予执行权限),但是我们还是得创建一个快捷方式。
在程序根目录下,我们可以在/resources/app/resources/linux/
这个路径中找到VS的图标“code.png”,然后把这个图标复制到/usr/share/icons
目录下,由于在文件夹中无法直接执行这一操作,所以我们在终端中用以下指令:
1 | $ sudo cp /usr/vs_code/VSCode-linux-x64/resources/app/resources/linux/code.png /usr/share/icons/ |
最后我们就可以在/usr/share/applications/
目录下创建VS的快捷方式。在终端中,用编辑器创建/usr/share/applications/VSCode.desktop
,然后在文本框中输入以下内容:
1 | [Desktop Entry] |
保存后退出,我们在应用菜单里就可以看到VS Code了。打开VS Code,加载插件:vscode-icons。
Adobe在Linux中的替代品
Photoshop
- GIMP: https://www.gimp.org/
- Krita: https://krita.org/en/
- Photopea: https://www.photopea.com/
Lightroom
- Darktable: https://www.darktable.org/
- RawTherapee: https://rawtherapee.com/
Illustrator
- Inkscape: https://inkscape.org/
- Vectr: https://vectr.com/
InDesign
- Scribus: https://www.scribus.net/
- Lucidoress: https://www.lucidpress.com/pages/
Premiere Pro
- Blender: https://www.blender.org/
After Effects
- Natron: https://natrongithub.github.io/
Audition
- Audacity: https://www.audacityteam.org/
Dreamweaver
- BlueGriffon: http://bluegriffon.org/
DaVinci-Resolve
让DaVinci-Resolve在Manjaro中跑起来 (abandoned)
今天打算在电脑上装达芬奇,原本是已经有了一个Kdenlive,但是我在看了油管博主@TechHut的视频[Why I Switched To Resolve from Kdenlive - Best Video Editor on Linux?]后,对达芬奇产生了浓厚的兴趣,所以就有了后面的一系列操作,视频中其实也提到了从安装到使用的这整个过程并不是很顺利(伏笔)。
老样子,我们还是先去官网下载镜像文件(app store也有,放在最后尝试),软件我们选择davinci-resolve 16,下载时选择Linux版本,这时会弹出来一个登记表,随便填一下,点击右下角注册并下载。
压缩包下载好后,里面分别是安装指导PDF和安装程序,注意,安装程序是.run
后缀。文件提取出来后不要急着点击安装,我们还需要把DaVinci所需的各种依赖包装上。当然,你也可以先安装,安装好后再检查所缺文件。安装界面和win差不多,一直next就完事[doge]。
因为我已经安装过了,所以这里的选项是“重装”或“卸载”
DaVinci安装好后,这时一般无法直接启动,因为还缺少依赖,所以接下来我们要检查到底缺哪些东西。
安装目录一般默认是opt/resolve/
,而程序就在bin文件夹里。我们可以先试试命令./resolve
启动DaVinci,结果报错,提示如下:
1 | error while loading shared libraries: libOpenCL.so.1: cannot open shared object file: No such file or directory |
通过提示可以明显看出是缺少依赖的,如果想要知道得更清楚,可以使用ldd resolve
来检查。
这时你就会看到一长串依赖目录,注意每一行的=>
符号,如果缺少依赖则右边会显示not found
,正常情况和下面一样:
1 | linux-vdso.so.1 (0x00007ffd23fce000) |
那么现在我们就开始安装依赖包,总共需要安装以下这几类文件:
详情请参考B站视频「好跪好我不是Tim…」
ssl
- Arch
- openssl
- openssl-1.0
- lib32-openssl
- Debian / Ubuntu / etc
- libssl-1.0
ocl-icd
- Arch
- lib32-ocl-icd
- ocl-icd
- Debian / Ubuntu / etc
- ocl-icd-opencl-dev
cuda
不一定会用上
- Arch
- cuda
- Debian
- nvidia-cuda-dev
opencl
- Arch
- NVIDIA
- opencl-headers
- opencl-nvidia
- lib32-opencl-nvidia
- AMD / Intel核显
- lib32-opencl-mesa
- opencl-headers
- opencl-mesa
- NVIDIA
- Debian / Ubuntu / etc
- nvidia-opencl-icd
fuseiso
因为安装程序是.run
文件,所以需要fuseiso把它内部的镜像文件挂载成一个虚拟文件系统,从里面拷贝文件,否则因挂载失败而导致安装失败(我用的Manjaro不需要),最后记得重启。
fuseiso是用于arch,其它发行版就需要另外查找
到这里就可以正常启动 / 安装。如果在启动过程中遇到了问题,那么可以查看运行日志,位置就在opt/resolve/logs/
,在log中我们可以看到有两个error,我个人猜测问题还是出在显卡或驱动上。
1 | | ERROR | 2021-08-21 13:22:11,602 | Failed to connect to panel socket |
但是前面我已经把各种需要的或不需要的驱动都装上了,而我的笔记本是IU + N卡,那么问题可能在于显卡运行模式(DaVinci对显卡这方面很挑剔)。后面我了解到optimus-manager
可以控制并切换显卡的运行模式,下载这个软件时,还得再下载一个optimus-manager-qt
,然后重启电脑。
详情请参考B站视频「超简单Linux双显卡…」
当我从终端启动optimus-manager时,结果又报错,看到提示我真的是“黑人问号??”
提示的第三行说道“If your login manager is GDM, make sure to follow those instructions”,我一看到这个GDM就知道事情不简单,下面提供的解决方案我点进去一看,GDM指的是“Gnome Display Manager”,然后下面给了两条解决措施,一是替换gdm为gdm-prime;二是optimus-manager与我的wayland窗口系统不兼容,还得修改/etc/gdm/custom.conf
,把#WaylandEnable=false
里的注释取消。
但是在这里我犹豫了,先不说这样做对系统的稳定性会不会产生影响,关键是我也不清楚我的方向是否正确。所以我先暂时放下这个,想去看看独显的运作情况。
Linux查看GPU信息和使用情况
查看核显
$ lspci | grep -i vga
1
00:02.0 VGA compatible controller: Intel Corporation WhiskeyLake-U GT2 [UHD Graphics 620]
上面的
00:02.0
就是核显的代号,利用这个代号输入lspci -v -s 00:02.0
核显信息
- 00:02.0 VGA compatible controller: Intel Corporation WhiskeyLake-U GT2 [UHD Graphics 620] (prog-if 00 [VGA controller])
- DeviceName: Onboard - Video
- Subsystem: Intel Corporation Device 2112
- Flags: bus master, fast devsel, latency 0, IRQ 127
- Memory at 6012000000 (64-bit, non-prefetchable) [size=16M]
- Memory at 4000000000 (64-bit, prefetchable) [size=256M]
- I/O ports at 5000 [size=64]
- Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
- Capabilities: access denied
- Kernel driver in use: i915
- Kernel modules: i915
查看独显
$ lspci | grep -i -nvidia
1
01:00.0 3D controller: NVIDIA Corporation GP108M [GeForce MX250] (rev a1)
上面的
01:00.0
就是独显的代号,利用这个代号输入lspci -v -s 01:00.0
独显信息
- 01:00.0 3D controller: NVIDIA Corporation GP108M [GeForce MX250] (rev a1)
- Subsystem: Device 1b50:5515
- Flags: bus master, fast devsel, latency 0, IRQ 137
- Memory at 80000000 (32-bit, non-prefetchable) [size=16M]
- Memory at 6000000000 (64-bit, prefetchable) [size=256M]
- Memory at 6010000000 (64-bit, prefetchable) [size=32M]
- I/O ports at 4000 [size=128]
- Expansion ROM at 81000000 [virtual] [disabled] [size=512K]
- Capabilities: access denied
- Kernel driver in use: nvidia
- Kernel modules: nouveau, nvidia_drm, nvidia
利用
nvidia-smi
查看独显1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.63.01 Driver Version: 470.63.01 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A |
| N/A 42C P8 N/A / N/A | 4MiB / 2002MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1320 G /usr/lib/Xorg 4MiB |
+-----------------------------------------------------------------------------+看到这个后我迷惑了,这独显有在工作吗?
行吧,不想折腾了,app-store我也试过了,无法下载,解决方法应该是把之前下好的压缩包放在一个下载目录,但是这样做也没什么意义(虽然我也没找到),最后还是会回到启动报错的问题。
Kdenlive又不是不能用。
PGP签名问题
Describe the bug
- 我在使用pamac更新软件时遇到报错,报错内容如下:
- Pamac reported errors when I used it to upgrate the software, the error content is as follows:
1 | 正在准备... |
error: multilib.db: GPGME error: no data
invalid or corrupted database (PGP signature)
- 使用pacman更新系统是也同样报错:
- Same problem with pacman when i upgrate my system :
1 | 错误:GPGME 错误:无数据 |
error: GPGME error: No data
error: failed to synchronize all databases (invalid or corrupted database (PGP signature))
- 然后我在论坛里看到这篇帖子「Error: failed to synchronize all databases …」,我的情况和帖子里面的一模一样,我以为我找到了解决方案。
- Then I saw this post 「Error: failed to synchronize all databases …」 in the forum, my problem is exactly the same as pjbrunet’s and I thought I found the solution .
To Reproduce
- 根据pjbrunet的描述,我在
var/lib/pacman/sync
该路径下看到了sig文件并把它们删掉,pacman可以正常使用了,但pamac并没有。我再次使用pamac更新软件时,该路径下依然会产生‘.sig’文件,同样的操作在手机热点下结果一样,所以我并不确定是我的网络问题还是pamac的问题。
- According to pjbrunet, I saw the ‘.sig’ files in
var/lib/pacman/sync
and deleted them , pacman works fine but pamac does not. When I used pamac to upgrating the software again, the ‘.sig’files was still generated in this path. The same operation had the same result with my mobile’s wifi , so I wasn’t sure if it was my network or pamac .
System information
- OS: Manjaro Gnome 40
- pamac version: 10.1.3-3
- Pacman: v6.0.0 - libalpm v13.0.0
Additional context
- network: campus network
- mirrorlist: global (refresh frequently)
Solutions
- 这篇帖子「Error: failed to update multilib …」基本概括了我的情况,里面提到的解决方法应该是解决了我的问题,虽然还是有点玄学的成分在里面233
- 关于PGP签名更详细的内容请看Arch Wiki的这篇「pacman / Package signing」
Hi!
Try this
1
2
3 sudo pacman -Sy archlinux-keyring manjaro-keyring
sudo pacman-key --populate archlinux manjaro
sudo pacman-key --refresh-keys
If doesn’t work, try this
Delete package cache
1 pacman -Sc
Delete as root/etc/pacman.d/gnupg
Regenerate it with
1
2 sudo pacman-key --init
sudo pacman-key --populate archlinux———— @visone
在安装密钥之前
PGP签名损坏的原因比较多,其中一个可能容易遇到的是系统时间不同步,所以在这里我们要引入“ntp”,“systemd-timesyncd”这两个东西。
ntp,即网络时间协议(Network Time Protocol),是GNU/Linux系统通过Internet时间服务器同步系统软件时钟的最常见的方法。如果你已经安装了这个程序,那么就可以用这个命令同步时间。
1
$ sudo ntpd -u ntp:ntp
实际上在大多数情况下,我们并不需要提供 NTP 服务,所以不需要安装ntp软件包,而是使用下一节的方法实现时间同步。
systemd-timesyncd,是一个用于跨网络同步系统时钟的守护服务,它实现了一个 SNTP 客户端,与 NTP 的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。
启用时间同步命令
1
$ sudo timedatectl set-ntp true
检查时间同步状态
1
$ timedatectl status
1
$ systemctl status systemd-timesyncd
上面我们提到了通过重新安装密钥来解决PGP签名损坏的问题,其实这里建议放到最后一步,也就是在同步好系统时间并刷新镜像源之后。
关于镜像的问题,我尝试了几种方法效果都不太好,最后还是在Manjaro的论坛里看到这篇帖子「Pacman-mirrors-fasttrack …」,并找到了解决方法,就是下面这个命令。
1
$ sudo pacman-mirrors --method -rank
这条命令在从arch的镜像源里拉取镜像时,给每一条地址做了测速,并按照高低顺序排好了位置。注意,刷新完后一定要强制更新一下系统和软件库。
1
$ sudo pacman -Syyu
按照顺序做完这三步后,不出意外应该可以让系统重新“活过来了”。
折腾Linux真的是让人又爱又恨 233
后续若有其它内容,我再一一补充 ^_^ 。