我的 Windows 系统的笔记本只有 256G 固态,磁盘已经快用满了,最近想装个 Linux 玩玩,选择了 Linux Mint,然后就在闲置的移动硬盘上安装了 Linux Mint 21 cinnamon
。
刚切换到 Linux 还是很不习惯的,还好想起了一直使用的 utools 效率神器,就准备安装一下。
下面就把踩坑经验分享出来,希望其他小伙伴少踩坑。
系统信息:
$ cat /etc/linuxmint/info
RELEASE=21
CODENAME=vanessa
EDITION="Cinnamon"
DESCRIPTION="Linux Mint 21 Vanessa"
DESKTOP=Gnome
TOOLKIT=GTK
NEW_FEATURES_URL=https://www.linuxmint.com/rel_vanessa_cinnamon_whatsnew.php
RELEASE_NOTES_URL=https://www.linuxmint.com/rel_vanessa_cinnamon.php
USER_GUIDE_URL=https://www.linuxmint.com/documentation.php
GRUB_TITLE=Linux Mint 21 Cinnamon$ uname -a
Linux ss-lm 5.15.0-41-generic #44-Ubuntu SMP Wed Jun 22 14:20:53 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
安装 utools
下载 utools 安装包:
wget https://res.u-tools.cn/version2/utools_3.1.0_amd64.deb
下载之后双击文件安装。
但安装之后双击打开没有反应。
在终端输出 utools 命令打开报错如下:
A JavaScript error occurred in the main process
Uncaught Exception:
Error: libcrypto.so.1.1: æ æ³æ å¼å
±äº«å¯¹è±¡æ件: 没æ é£ä¸ªæ件æçat process.func [as dlopen] (node:electron/js2c/asar_bundle:5:1812)at Module._extensions..node (node:internal/modules/cjs/loader:1205:18)at Object.func [as .node] (node:electron/js2c/asar_bundle:5:2039)at Module.load (node:internal/modules/cjs/loader:988:32)at Module._load (node:internal/modules/cjs/loader:829:12)at c._load (node:electron/js2c/asar_bundle:5:13343)at Module.require (node:internal/modules/cjs/loader:1012:19)at require (node:internal/modules/cjs/helpers:102:18)at Object.<anonymous> (/opt/uTools/resources/app.asar/node_modules/addon/index.js:18:62)at Module._compile (node:internal/modules/cjs/loader:1120:14)
意思是缺少 libcrypto.so.1.1
库文件。
遇到这种问题一般就是谷歌一下,检索到以下解决方法:
ubuntu 22.04 无法打开 utools
方法有两种:
- 编译 openssl-1.1.0,获取 libcrypto.so.1.1,复制到 /opt/uTools/ 目录下;
- 安装 wps 后,用 sudo cp /opt/kingsoft/wps-office/office6/libcrypto.so.1.1 /opt/uTools/命令;
本来 utools 应该自带这个文件的,现在还得手动去搞,就有点儿 😒。。
第一种还是可以尝试,第二种直接安装个 wps 好几百 M 大小的东西,未免有点儿脱裤子放气的感觉了。
不过下面我先给出第三种解决方案。
最终解决方式 👍
尝试系统中哪些目录有 libcrypto.so.1.1
:
$ sudo find / -name "libcrypto.so.1.1"
/data/software/WindTerm_2.5.0/lib/libcrypto.so.1.1
惊喜的发现,开源终端 WindTerm 2.5.0 安装包 中包含了这个文件。最近正好将终端切换到 WindTerm,真的香。
需要说明的是,有些同名的
libcrypto.so.1.1
文件,可能用不了,就像下面的踩坑章节所说的:k3s 集群中镜像 layer 中的这个文件,拷贝到 utools 目录下就用不了。
将 WindTerm 安装包中 WindTerm_2.5.0/lib/libcrypto.so.1.1
的文件拷贝到 /opt/uTools
目录下:
$ sudo cp /data/software/WindTerm_2.5.0/lib/libcrypto.so.1.1 /opt/uTools/
拷贝完成之后,utools 即可以打开了。
对于终端方案 WindTerm,关键时刻还能帮我解决 utools 安装的棘手问题,真是越用越香了!!😋
配置开机自启动
现代的 linux 桌面,用户登录自启动程序,基本都是通过在 $HOME/.config/autostart
建立一个 .desktop
文件实现的。
- 软件自己有设置的话,软件会自动在
autostart
下生成一个.desktop
文件 - 软件没有设置的话,自己建一个
- 或者把
utools
的.desktop
文件(在/usr/share/applications
下)复制或者软链到autostart
下即可
看到 /usr/share/applications
下是有 utools.desktop
文件的:
$ ll /usr/share/applications | grep utools
-rw-rw-r-- 1 root root 176 11月 9 17:10 utools.desktop
创建软连接:
$ ln -s /usr/share/applications/utools.desktop $HOME/.config/autostart/$ ll $HOME/.config/autostart/ | grep utools
lrwxrwxrwx 1 ss ss 38 11月 19 22:42 utools.desktop -> /usr/share/applications/utools.desktop
🙈 踩坑经验(可以不看 🙈)
安装 Wps 太鸡肋了,我们安装低版本 openssl 的方式。
系统自带的 openssl 版本如下:
$ openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
下面进行安装 openssl 1.1.0。
openssl 1.1.0
先下载安装包:
$ wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
执行下面命令又报错了:
$ ./config -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)'
Operating system: x86_64-whatever-linux2
"glob" is not exported by the File::Glob module
Can't continue after import errors at ./Configure line 17.
BEGIN failed--compilation aborted at ./Configure line 17.
"glob" is not exported by the File::Glob module
Can't continue after import errors at ./Configure line 17.
BEGIN failed--compilation aborted at ./Configure line 17.
This system (linux-x86_64) is not supported. See file INSTALL for details.
解决方案参考:GmSSL Linux 编译, 环境搭建
这是由于 Perl package 导致,修改 Configure 文件 参考链接
修改后再次尝试,又出现另一个错误:
$ ./config -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)'
Operating system: x86_64-whatever-linux2
Configuring for linux-x86_64
Configuring OpenSSL version 1.1.0g (0x1010007fL)no-asan [default] OPENSSL_NO_ASANno-crypto-mdebug [default] OPENSSL_NO_CRYPTO_MDEBUGno-crypto-mdebug-backtrace [default] OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACEno-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128no-egd [default] OPENSSL_NO_EGDno-fuzz-afl [default] OPENSSL_NO_FUZZ_AFLno-fuzz-libfuzzer [default] OPENSSL_NO_FUZZ_LIBFUZZERno-heartbeats [default] OPENSSL_NO_HEARTBEATSno-md2 [default] OPENSSL_NO_MD2 (skip dir)no-msan [default] OPENSSL_NO_MSANno-rc5 [default] OPENSSL_NO_RC5 (skip dir)no-sctp [default] OPENSSL_NO_SCTPno-ssl-trace [default] OPENSSL_NO_SSL_TRACEno-ssl3 [default] OPENSSL_NO_SSL3no-ssl3-method [default] OPENSSL_NO_SSL3_METHODno-ubsan [default] OPENSSL_NO_UBSANno-unit-test [default] OPENSSL_NO_UNIT_TESTno-weak-ssl-ciphers [default] OPENSSL_NO_WEAK_SSL_CIPHERSno-zlib [default]no-zlib-dynamic [default]
Configuring for linux-x86_64
Something wrong with this line:
Program fragment delivered error ``"glob" is not exported by the File::Glob module
at /home/ss/openssl-1.1.0/openssl-1.1.0g/test/build.info at ./Configure line 1613.
原因同上,修改 test/build.info
中, 查找 File::Glob
修改后再次尝试,又报其他错误:
crypto/aes/aes_ecb.c:10:10: fatal error: assert.h: No such file or directory
到这里心态已经炸,还好 WindTerm 拯救了我。。😄
其他尝试(可以不看 🙈🙈)
find 查找系统中的 libcrypto.so.1.1
库文件,发现有些镜像层中包含这个文件:
$ sudo find / -name libcrypto.so.1.1*
/run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/d98e0f596532d8c123db79487daed96db4f9f97416ca7c9df59c1259717fb07a/rootfs/lib/libcrypto.so.1.1$ sudo cp /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/d98e0f596532d8c123db79487daed96db4f9f97416ca7c9df59c1259717fb07a/rootfs/lib/libcrypto.so.1.1 /opt/uTools/
然后满心欢喜 😋 将她 拷贝到 utools
目录下,结果还是不行,又缺少了其他库文件 😱:
$ utools
A JavaScript error occurred in the main process
Uncaught Exception:
Error: libc.musl-x86_64.so.1: æ æ³æ å¼å
±äº«å¯¹è±¡æ件: 没æ é£ä¸ªæ件æçat process.func [as dlopen] (node:electron/js2c/asar_bundle:5:1812)at Module._extensions..node (node:internal/modules/cjs/loader:1205:18)at Object.func [as .node] (node:electron/js2c/asar_bundle:5:2039)at Module.load (node:internal/modules/cjs/loader:988:32)at Module._load (node:internal/modules/cjs/loader:829:12)at c._load (node:electron/js2c/asar_bundle:5:13343)at Module.require (node:internal/modules/cjs/loader:1012:19)at require (node:internal/modules/cjs/helpers:102:18)at Object.<anonymous> (/opt/uTools/resources/app.asar/node_modules/addon/index.js:18:62)at Module._compile (node:internal/modules/cjs/loader:1120:14)
😘 到这里有了 WindTerm 拯救了我。。😄