linux使用dpkg-repack命令打包已安装的软件为deb包

周末遇到一个问题,就是由于我ubuntu22.04安装的内核版本比较老,是5.15.0-88-generic这个版本,然后发现linux-libc-dev这个软件被升级了,我们使用命令查看跟内核版本不一致,这个包是linux内核头文件开发包,默认应该是随内核版本的。

dpkg -l | grep linux-libc-dev
ii linux-libc-dev:amd64     5.15.0-164.174    amd64    Linux Kernel Headers for development

实际发现这个问题之前是我准备重装英伟达GPU驱动,重装英伟达GPU驱动一直报错,有如下报错信息

./NVIDIA-Linux-x86_64-580.105.08.run -s --dkms
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 580.105.08....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

ERROR: An error occurred while performing the step: "Building kernel modules". See /var/log/nvidia-installer.log for details.


ERROR: An error occurred while performing the step: "Checking to see whether the nvidia kernel module was successfully built". See /var/log/nvidia-installer.log for details.


ERROR: The nvidia kernel module was not created.


ERROR: Installation has failed.  Please see the file '/var/log/nvidia-installer.log' for details.  You may find suggestions on fixing installation problems in the README available on the Linux driver
       download page at www.nvidia.com.

然后根据/var/log/nvidia-installer.log查找内核相关的软件包,查看到了linux-libc-dev这个包的版本不对,于是想安装对应内核的版本使用madison没有当前内核对应版本的linux-libc-dev包

apt-cache madison linux-libc-dev
linux-libc-dev | 5.15.0-164.174 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates/main amd64 Packages
linux-libc-dev | 5.15.0-164.174 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-security/main amd64 Packages
linux-libc-dev | 5.15.0-25.25 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/main amd64 Packages

然后去ubuntu官网也无法找到,最后想到使用dpkg-repack工具去同一批节点上打包一个已安装的linux-libc-dev包,首先我们需要进行安装

sudo apt install dpkg-repack fakeroot

然后将正常节点的linux-libc-dev打包出来

fakeroot dpkg-repack linux-libc-dev

打包完成以后可以在当前目录下查看到linux-libc-dev_5.15.0-88.98_amd64.deb的安装包,然后传到问题节点进行安装即可

dpkg -i linux-libc-dev_5.15.0-88.98_amd64.deb

然后再次安装英伟达GPU驱动就正常了。

如果我们打包其他的包,实际有很多会有依赖,我们需要使用下面命令查看依赖,并最后要将依赖的包也打包出来

apt-cache depends linux-libc-dev

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/1158

评论列表

0%