安装更新导致ubuntu崩溃
记录一些ubuntu崩溃的过程。
目前只有一个,以后遇到都放在这里,以提醒自己。
前言
如果从10000年看现在的linux,不是说不完美,而是糟透了。
linux的版本号,本质是glibc的版本的号。可是,linux还存在许多不能动的东西!
例如kernel,例如,本文中提到的一些东西:uuid! font
所以,一个经验是,永远也不要用upgrade指令。
今天我就掉这个坑里了。因为以为只更新一个模块,结果,整个更新了。
ubuntu 可以说是版本管理最差的一个,但也是人们最喜欢的一个发行版。
所以,有必要,记一下这些我们踩过的坑。
10000年后人类,可以看看他们的前辈是生活在一个什么样的上下文中。
特别是,linux体系,为了解决版本不能对齐的问题,不是去解决问题,而是发明新的轮子来重复这一问题,最著名的,当然就是KVM的代表作:docker .
uuid编不过,导致的崩溃
正在编kernel-shark,需要qt6,
装好qt6后,cmake过程有错,但我没在意,可是链接时果然出错了。
注意,本文,只是把问题放在这,不是解决这个问题,因为我马上要重装机器了!
ubuntu2204vm:/data/shark/kernel-shark/build$ cmake ..
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
project: Kernel Shark: (version: 2.3.1)
-- Found TraceEvent: /usr/local/lib64/libtraceevent.so
-- Found TraceFS: /usr/local/lib64/libtracefs.so
-- Found TraceCmd: /usr/local/lib64/libtracecmd.so
-- Found JSONC: /usr/lib/x86_64-linux-gnu/libjson-c.so
-- Found Doxygen: /usr/bin/doxygen (found version "1.9.1") found components: doxygen dot
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- Checking for module 'glut'
-- No package 'glut' found
-- Found GLUT: /usr/lib/x86_64-linux-gnu/libglut.so
fc-list: /usr/local/lib/libuuid.so.1: no version information available (required by /lib/x86_64-linux-gnu/libfontconfig.so.1)
make
[ 39%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsDualMarker.cpp.o
[ 40%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsWidgetsLib.cpp.o
[ 41%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsTraceGraph.cpp.o
[ 42%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsTraceViewer.cpp.o
[ 43%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsMainWindow.cpp.o
[ 43%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsPluginsGUI.cpp.o
[ 44%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsCaptureDialog.cpp.o
[ 45%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsQuickContextMenu.cpp.o
[ 46%] Building CXX object src/CMakeFiles/kshark-gui.dir/KsAdvFilteringDialog.cpp.o
[ 47%] Linking CXX shared library ../../lib/libkshark-gui.so.2.3.1
[ 47%] Built target kshark-gui
[ 48%] Building CXX object src/CMakeFiles/kernelshark.dir/kernelshark.cpp.o
[ 49%] Linking CXX executable ../../bin/kernelshark
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libfontconfig.so.1: undefined reference to `uuid_generate_random@UUID_1.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libfontconfig.so.1: undefined reference to `uuid_copy@UUID_1.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libfontconfig.so.1: undefined reference to `uuid_parse@UUID_1.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libfontconfig.so.1: undefined reference to `uuid_unparse@UUID_1.0'
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/kernelshark.dir/build.make:116: ../bin/kernelshark] Error 1
make[1]: *** [CMakeFiles/Makefile2:274: src/CMakeFiles/kernelshark.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
然后,做了许多,无法解决
网上查了一下,
sudo apt-get update
sudo apt-get upgrade libfontconfig1
然后就出了严重问题。
这个upgrade几乎把整个ubuntu全面升级到2404去了。
然后,就全线崩溃了。
因为,uuid体系,全面不认之前的体系了。。。
包括硬盘相关的操作,也不能执行的,因为硬盘的guid,工具无法与kernel沟通了!
服了。
然后,我的计划,一边是重装系统,一边,还是想办法在windows下来编。
以前我在风河时,一直不懂为什么我维护的gcc,gdb,binutils这些toolchain,一定要伴随一套cygwin的版本,有一次我按发布手册删除了那部分,客户不干了。老板找我好一顿确认,虽然我是按手册来的,但客户说一直都有。
那时我才明白,为什么国外的人,为什么基本都在cygwin干活,他们是贼精啊。
这个在管理学上,也是有个说法的。就是要想信那些处于冲突焦点处的第三方。而不要信双方的信誓旦旦的誓言。