Como posso converter o instalador do driver da Nvidia em um deb?

5

De vez em quando há uma versão beta do driver da Nvidia que eu quero experimentar. Isso aconteceu hoje: houve um grande problema de desempenho com a versão 295.40 e quero testar o novo 302.07 habilitado para XRandR.

Eu sou mais do que capaz de baixar o instalador, remover todos os arquivos do driver repo-instalado e instalar a nova versão, mas é francamente uma dor na parte inferior para virar isso e voltar para a versão repo. Isso também significa que tenho que reinstalar o driver manualmente sempre que houver uma atualização do Kernel.

A outra opção que normalmente damos às pessoas é um PPA, mas neste caso estou sendo muito impaciente. Vai demorar alguns dias até que qualquer PPA receba isso, mas eu preciso tentar isso hoje. Eu já o instalei manualmente na central de mídia e agora estou de olho no meu desktop.

Então, como faço para instalar um instalador (por exemplo: NVIDIA-Linux-x86-302.07.run ) e convertê-lo em um novo pacote nvidia-current / nvidia-current-updates ?

Outra maneira de perguntar isso pode ser: Como as pessoas empacotam os drivers da Nvidia?

    
por Oli 03.05.2012 / 11:35

3 respostas

6

A menos que existam diferenças estruturais na nova versão, deve ser possível reutilizar a embalagem atual:

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

Algo como isso pode funcionar, há um monte de coisas por aí, que eu acho que é por isso que os pacotes de PPA não são liberados instantaneamente;)

    
por arand 13.06.2012 / 14:26
2

Como arand disse, você pode usar os pacotes de código-fonte existentes supondo que ele não mudou muito. Os comandos abaixo baixam um arquivo .run, recuperam e adaptam arquivos fonte existentes e finalmente o empacotam.

Prepare a instalação instalando algumas dependências de construção:

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

Para preparar, defina algumas variáveis que controlam os arquivos que estão sendo baixados e crie um novo diretório para ele:

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

Faça o download do arquivo chamado NVIDIA-Linux-x86-310.19.run , se ainda não tiver. Se você tiver uma máquina de 64 bits, baixe também o instalador de 64 bits denominado NVIDIA-Linux-x86_64-310.19-no-compat32.run :

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

Agora recupere os arquivos de empacotamento, "extraia", altere o número da versão e construa o pacote sem assiná-lo:

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

Agora, no momento da redação deste artigo, a versão 295.40-0ubuntu1.1 não cria 310.19 porque a embalagem foi alterada. Acontece que libXvMCNvidia.* arquivos foram removidos, então vamos deletar essas linhas incluindo XvMCConfig:

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

Crie o pacote:

dpkg-buildpackage -b -uc -us

Se tudo correu bem, você agora deve ser capaz de instalar o arquivo deb resultante com:

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

(o comando sudo apt-get install -f é opcional se você instalou nvidia-current antes e não corre em problemas de dependência)

    
por Lekensteyn 18.11.2012 / 11:42
0

Esses drivers realmente dependem de kernels mais novos, etc, então neste caso você pode não ser capaz de apenas recompilar - para uma descrição completa incluindo PPAs, veja esta resposta

    
por David Fraser 15.07.2012 / 21:17