如何将Nvidia驱动程序安装程序转换为deb?

我经常尝试使用Nvidia驱动程序的测试版。 今天发生了这种情况:版本295.40出现了很大的性能问题,我想尝试shiny的新XRandR启用302.07。

我能够下载安装程序,删除所有repo安装的驱动程序文件并安装新版本,但坦白说底部的痛苦转向并回到repo版本。 这也意味着每次进行内核升级时我都必须手动重新安装驱动程序。

我们通常给人的另一个选择是PPA,但在这种情况下,我真的很不耐烦。 这将是任何PPA获得此事的前几天,但我今天需要尝试这一点。 我已经在媒体中心手动安装了它,现在我正在关注我的桌面。

那么如何使用安装程序(例如: NVIDIA-Linux-x86-302.07.run )并将其转换为新的nvidia-current / nvidia-current-updates包?

问这个问题的另一种方式可能是: 人们如何打包Nvidia驱动程序?

除非在新版本中存在结构差异,否则应该可以重新使用当前的包装:

 NEWVERSION=302.13 DIR=nvidia-graphics-drivers-"$NEWVERSION".orig/ ## Making a new tarball mkdir $DIR # Copy in new run files cp NVIDIA*.run $DIR tar --owner=root --group=src -caf nvidia-graphics-drivers_"$NEWVERSION".orig.tar.gz $DIR rm -r $DIR ## Setting up the packaging source apt-get source nvidia-graphics-drivers cd nvidia-graphics-drivers*/ # Remove old run files and copy in new rm NVIDIA*.run cp ../NVIDIA*.run . # This version number should ensure it gets replaced by official version... dch -v $VERSION-1 "my release"; dch -l~mybuild "local build"; dch -r ## Installing build-dependencies mk-build-deps sudo dpkg -i nvidia-graphics-drivers-build-deps*.deb; apt-get install -f ## Building debuild -us -uc 

这样的东西可能会起作用,周围有很多东西,我想这就是为什么PPA包不会立即释放;)

正如arand所说,你可以使用现有的源包,假设它没有太大变化。 以下命令将下载.run文件,检索并调整现有源文件,最后将其打包。

通过安装一些构建依赖项来准备安装:

 sudo apt-get build-dep nvidia-graphics-drivers sudo apt-get install execstack # needed but not included with build-deps 

要准备,请设置一些控制正在下载的文件的变量,并为其创建一个新目录:

 VER=310.19 mkdir nvidia-graphics-drivers-$VER; cd nvidia-graphics-drivers-$VER 

如果您还没有,请下载名为NVIDIA-Linux-x86-310.19.run的文件。 如果您有64位计算机,则还应下载名为NVIDIA-Linux-x86_64-310.19-no-compat32.run的64位安装程序:

 wget ftp://download.nvidia.com/XFree86/Linux-x86/$VER/NVIDIA-Linux-x86-$VER.run wget ftp://download.nvidia.com/XFree86/Linux-x86_64/$VER/NVIDIA-Linux-x86_64-$VER-no-compat32.run 

现在检索打包文件,“解压缩”它,更改版本号并构建包而不签名:

 apt-get source --diff-only nvidia-current gunzip -c *.diff.gz | patch -p1 dch -v $VER-0~local "New upstream release." 

现在,在撰写本文时,版本295.40-0ubuntu1.1没有构建310.19,因为包装已经更改。 事实certificatelibXvMCNvidia.*文件已被删除,所以让我们删除包括XvMCConfig在内的那些行:

 sed -i '/XvMC/d' debian/{*.links*.in,*.install.in,rules} 

构建包:

 dpkg-buildpackage -b -uc -us 

如果一切顺利,您现在应该能够安装生成的deb文件:

 sudo dpkg -i ../nvidia-current_$VER-*.deb; sudo apt-get install -f 

sudo apt-get install -f命令是可选的,如果您之前安装了nvidia-current,并且没有遇到依赖性问题)

这些驱动程序实际上依赖于较新的内核等,因此在这种情况下,您可能无法重新编译 – 有关包含PPA的完整描述,请参阅此答案