Não é possível criar o módulo “Hello World” (e NVIDIA e VirtualBox)

4

Primeiro, os detalhes.

ANTES: kernel: 3.2.0-2-amd64, driver nvidia: 295.59

DEPOIS: kernel: 3.2.0-3-amd64, driver nvidia: 302.17-3

Meu Debian wheezy é mantido recente em todos os momentos. Na verdade, fazendo diariamente apt-get upgrade -s me pegou neste problema em primeiro lugar.

Evidentemente, depois de um apt-get upgrade , algo "quebrou" no meu Debian - algo relacionado ao ecossistema de construção e / ou ao próprio DKMS.

O driver NVIDIA não pode obter a compilação por qualquer método recomendado nos Wikis oficiais. Incluindo o binário oficial da NVIDIA (log snippet daquele em uma das atualizações).

Veja a saída de dpkg-reconfigure nvidia-kernel-dkms :

# dpkg-reconfigure nvidia-kernel-dkms

------------------------------
Deleting module version: 302.17
completely from the DKMS tree.
------------------------------
Done.
Loading new nvidia-302.17 DKMS files...
Building only for 3.2.0-3-amd64
Building initial module for 3.2.0-3-amd64
Error!  Build of nvidia.ko failed for: 3.2.0-3-amd64 (x86_64)
Consult the make.log in the build directory
/var/lib/dkms/nvidia/302.17/build/ for more information.

Um snippet relevante de /var/lib/dkms/nvidia/302.17/build/make.log segue. O problema é não na compilação, posso garantir isso.

  LD [M]  /var/lib/dkms/nvidia/302.17/build/nvidia.o
  Building modules, stage 2.
  MODPOST 0 modules
make[1]: Leaving directory '/usr/src/linux-headers-3.2.0-3-amd64'
make: Leaving directory '/var/lib/dkms/nvidia/302.17/build'

E é isso. Nenhuma explicação de qualquer tipo em nenhum outro arquivo no mesmo diretório (pelo menos até onde eu verifiquei).

Antes de fazer minhas perguntas: estou usando o driver nouveau agora (não é como se eu tivesse outra escolha), mas não funciona muito bem para mim. Eu tenho 3 desktops, constantemente reproduzindo filmes em 1 deles, e sendo um desenvolvedor muito ocupado no outro 2. O driver nouveau falha um pouco lá (os filmes na segunda tela ficam listras horizontais o tempo todo, o atraso de consoles XFCE um pouco na rolagem, etc.)

Perguntas:

  • Devo alterar a versão do meu kernel? Tentei 3.2.0-2-amd64 e 3.2.0-3-amd64 , sem sucesso. Tentar o 3.2.0-3-rt-amd64 faz minha máquina congelar depois de alguns minutos de operação, portanto não me atrevo a instalá-lo novamente.
  • Devo alterar uma versão de algo no meu ambiente de criação? (Como apontado nas atualizações, não é apenas o problema da NVIDIA, como se vê).
  • Devo supor que meu vinculador esteja com falha (estou não usando gold , estou usando ld do pacote binutils ) e, em caso afirmativo, o que eu poderia fazer fazer o método DKMS finalmente funcionar? Já que o problema parece se manifestar na fase de ligação (e o MODPOST mostra 0 módulos).

Em uma nota pessoal, isso me perturba em um nível muito mais profundo que eu geralmente gosto de admitir. Eu tive um grande respeito ao Debian , que no momento está quebrado. C'mon, um simples apt-get upgrade quebra todas as compilações / ligações de drivers de kernel de código aberto?

Extremamente decepcionante.

UPDATE # 1:

Na verdade, tentei instalar os drivers oficiais da NVIDIA 304.22, aqui está o arquivo de log. Parece que a ligação realmente falha, não é?

Além disso, se eu tentar também ativar a integração do DKMS, recebo uma mensagem do tipo que o script não pode determinar a versão atual do kernel (texto na 3ª atualização).

nvidia-installer log file '/var/log/nvidia-installer.log'
creation time: Sat Jul 21 22:59:30 2012
installer version: 304.22

PATH: /usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

nvidia-installer command line:
    ./nvidia-installer

Using: nvidia-installer ncurses user interface
-> License accepted.
-> Installing NVIDIA driver version 304.22.
-> There appears to already be a driver installed on your system (version: 304.22).  As part of installing this driver (version: 304.22), the existing driver will be uninstalled.  Are you sure you want to continue? ('no' will abort installation) (Answer: Yes)
-> Would you like to register the kernel module sources with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later. (Answer: No)
-> Performing CC sanity check with CC="gcc-4.6".
-> Performing CC version check with CC="gcc-4.6".
-> Kernel source path: '/lib/modules/3.2.0-3-amd64/source'
-> Kernel output path: '/lib/modules/3.2.0-3-amd64/build'
-> Performing rivafb check.
-> Performing nvidiafb check.
-> Performing Xen check.
-> Cleaning kernel module build directory.
   executing: 'cd ./kernel; make clean'...
-> Building kernel module:
   executing: 'cd ./kernel; make module SYSSRC=/lib/modules/3.2.0-3-amd64/source SYSOUT=/lib/modules/3.2.0-3-amd64/build'...
   NVIDIA: calling KBUILD...
   make -C /lib/modules/3.2.0-3-amd64/build \
    KBUILD_SRC=/usr/src/linux-headers-3.2.0-3-common \
    KBUILD_EXTMOD="/tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel" -f /usr/src/linux-headers-3.2.0-3-common/Makefile \
    modules
   test -e include/generated/autoconf.h -a -e include/config/auto.conf || (     \
    echo;                               \
    echo "  ERROR: Kernel configuration is invalid.";       \
    echo "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
    echo "         Run 'make oldconfig && make prepare' on kernel src to fix it.";  \
    echo;                               \
    /bin/false)
   mkdir -p /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/.tmp_versions ; rm -f /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/.tmp_versions/*
   make -f /usr/src/linux-headers-3.2.0-3-common/scripts/Makefile.build obj=/tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel
     gcc-4.6 -Wp,-MD,/tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/.nv.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.6/include -I/usr/src/linux-headers-3.2.0-3-common/arch/x86/include -Iarch/x86/include/generated -Iinclude  -I/usr/src/linux-headers-3.2.0-3-common/include -include /usr/src/linux-headers-3.2.0-3-common/include/linux/kconfig.h   -I/tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -Os -m64 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=2048 -Wno-unused-but-set-variable -fomit-frame-pointer -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO   -I/tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel -Wall -MD -Wsign-compare -Wno-cast-
   qual -Wno-error -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"304.22\" -Wno-unused-function -Wuninitialized -mno-red-zone -mcmodel=kernel -UDEBUG -U_DEBUG -DNDEBUG  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(nv)"  -D"KBUILD_MODNAME=KBUILD_STR(nvidia)" -c -o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/.tmp_nv.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv.c
   In file included from /usr/src/linux-headers-3.2.0-3-common/include/linux/kernel.h:17:0,
                    from /usr/src/linux-headers-3.2.0-3-common/include/linux/sched.h:55,
                    from /usr/src/linux-headers-3.2.0-3-common/include/linux/utsname.h:35,
                    from /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-linux.h:38,
                    from /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv.c:13:
   /usr/src/linux-headers-3.2.0-3-common/include/linux/bitops.h: In function ‘hweight_long’:
   /usr/src/linux-headers-3.2.0-3-common/include/linux/bitops.h:49:41: warning: signed and unsigned type in conditional expression [-Wsign-compare]
   In file included from /usr/src/linux-headers-3.2.0-3-common/arch/x86/include/asm/uaccess.h:575:0,
                    from /usr/src/linux-headers-3.2.0-3-common/include/linux/poll.h:14,
                    from /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-linux.h:97,
                    from /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv.c:13:
   /usr/src/linux-headers-3.2.0-3-common/arch/x86/include/asm/uaccess_64.h: In function ‘copy_from_user’:
   /usr/src/linux-headers-3.2.0-3-common/arch/x86/include/asm/uaccess_64.h:53:6: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

...snipped lots of compile output with the same warning...

     ld -m elf_x86_64   -r -o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nvidia.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-kernel.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-acpi.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-chrdev.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-cray.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-gvi.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-i2c.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-mempool.o /tmp/selfgz10141/NVI
   DIA-Linux-x86_64-304.22/kernel/nv-mlock.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-mmap.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-p2p.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-pat.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-procfs.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-usermap.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-vm.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nv-vtophys.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/os-agp.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/os-interface.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/os-mtrr.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/os-registry.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/os-smp.o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/os-usermap.o 
   (cat /dev/null;   echo kernel//tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/nvidia.ko;) > /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/modules.order
   make -f /usr/src/linux-headers-3.2.0-3-common/scripts/Makefile.modpost
     scripts/mod/modpost -m  -i /usr/src/linux-headers-3.2.0-3-amd64/Module.symvers -I /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/Module.symvers  -o /tmp/selfgz10141/NVIDIA-Linux-x86_64-304.22/kernel/Module.symvers -S -w  -s
   NVIDIA: left KBUILD.
   nvidia.ko failed to build!
   make[1]: *** [module] Error 1
   make: *** [module] Error 2
-> Error.
ERROR: Unable to build the NVIDIA kernel module.
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.

ATUALIZAÇÃO # 2:

De acordo com a sugestão de StarNamer , eu reinstalei o linux-headers-3.2.0-3-amd64 . Depois disso, o DKMS entrou em ação e tentou novamente compilar o driver da NVIDIA. Aqui está o conteúdo do arquivo /var/lib/dkms/nvidia/304.22/build/make.log :

DKMS make.log for nvidia-304.22 for kernel 3.2.0-3-amd64 (x86_64)
Sun Jul 22 14:50:58 EEST 2012
If you are using a Linux 2.4 kernel, please make sure
you either have configured kernel sources matching your
kernel or the correct set of kernel headers installed
on your system.

If you are using a Linux 2.6 kernel, please make sure
you have configured kernel sources matching your kernel
installed on your system. If you specified a separate
output directory using either the "KBUILD_OUTPUT" or
the "O" KBUILD parameter, make sure to specify this
directory with the SYSOUT environment variable or with
the equivalent nvidia-installer command line option.

Depending on where and how the kernel sources (or the
kernel headers) were installed, you may need to specify
their location with the SYSSRC environment variable or
the equivalent nvidia-installer command line option.

*** Unable to determine the target kernel version. ***

make: *** [select_makefile] Error 1

UPDATE # 3:

Depois de dias e dias pesquisando, comecei a me perguntar se isso é culpa da NVIDIA. Acontece que não é. Eu tentei instalar o Virtual Box 4.1 (do testing repo), e me deparei com isso novamente :

# cat /var/lib/dkms/virtualbox/4.1.18/build/make.log 
DKMS make.log for virtualbox-4.1.18 for kernel 3.2.0-3-amd64 (x86_64)
Tue Jul 24 17:58:57 EEST 2012
make: Entering directory '/usr/src/linux-headers-3.2.0-3-amd64'
  LD      /var/lib/dkms/virtualbox/4.1.18/build/built-in.o
  LD      /var/lib/dkms/virtualbox/4.1.18/build/vboxdrv/built-in.o
  CC [M]  /var/lib/dkms/virtualbox/4.1.18/build/vboxdrv/linux/SUPDrv-linux.o
... snipped ...
  CC [M]  /var/lib/dkms/virtualbox/4.1.18/build/vboxpci/SUPR0IdcClientComponent.o
  CC [M]  /var/lib/dkms/virtualbox/4.1.18/build/vboxpci/linux/SUPR0IdcClient-linux.o
  LD [M]  /var/lib/dkms/virtualbox/4.1.18/build/vboxpci/vboxpci.o
  Building modules, stage 2.
  MODPOST 0 modules
make: Leaving directory '/usr/src/linux-headers-3.2.0-3-amd64'

E, claro, não há mais detalhes (como já foi dito, parece como um problema de linker, mas não tenho certeza ainda). Então, isso deve ser mais um problema Debian / DKMS ou algum tipo de configuração incorreta. No entanto, juro que não toquei em nada. Eu estava simplesmente fazendo diariamente apt-get upgrade -s. Então alguma coisa não foi tão bem, obviamente.

ATUALIZAÇÃO # 4:

Eu tentei criar um pequeno módulo como descrito aqui: link . De fato, ainda estou vendo MODPOST 0 modules . Aqui está a saída quando eu coloco V=1 no Makefile:

# make
make -C /lib/modules/3.2.0-3-amd64/build M=/home/dimi/code/hello V=1 modules
make[1]: Entering directory '/usr/src/linux-headers-3.2.0-3-amd64'
make -C /usr/src/linux-headers-3.2.0-3-amd64 \
    KBUILD_SRC=/usr/src/linux-headers-3.2.0-3-common \
    KBUILD_EXTMOD="/home/dimi/code/hello" -f /usr/src/linux-headers-3.2.0-3-common/Makefile \
    modules
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (        \
    echo;                               \
    echo "  ERROR: Kernel configuration is invalid.";       \
    echo "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
    echo "         Run 'make oldconfig && make prepare' on kernel src to fix it.";  \
    echo;                               \
    /bin/false)
mkdir -p /home/dimi/code/hello/.tmp_versions ; rm -f /home/dimi/code/hello/.tmp_versions/*
make -f /usr/src/linux-headers-3.2.0-3-common/scripts/Makefile.build obj=/home/dimi/code/hello
   gcc-4.6 -Wp,-MD,/home/dimi/code/hello/.hello.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.6/include -I/usr/src/linux-headers-3.2.0-3-common/arch/x86/include -Iarch/x86/include/generated -Iinclude  -I/usr/src/linux-headers-3.2.0-3-common/include -include /usr/src/linux-headers-3.2.0-3-common/include/linux/kconfig.h   -I/home/dimi/code/hello -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -Os -m64 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=2048 -Wno-unused-but-set-variable -fomit-frame-pointer -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(hello)"  -D"KBUILD_MODNAME=KBUILD_STR(hello)" -c -o /home/dimi/code/hello/.tmp_hello.o /home/dimi/code/hello/hello.c
(cat /dev/null;   echo kernel//home/dimi/code/hello/hello.ko;) > /home/dimi/code/hello/modules.order
make -f /usr/src/linux-headers-3.2.0-3-common/scripts/Makefile.modpost
  scripts/mod/modpost -m  -i /usr/src/linux-headers-3.2.0-3-amd64/Module.symvers -I /home/dimi/code/hello/Module.symvers  -o /home/dimi/code/hello/Module.symvers -S -w -c -s
make[1]: Leaving directory '/usr/src/linux-headers-3.2.0-3-amd64'

E aqui está o que eu vejo quando removo V=1 :

# make
make -C /lib/modules/3.2.0-3-amd64/build M=/home/dimi/code/hello modules
make[1]: Entering directory '/usr/src/linux-headers-3.2.0-3-amd64'
  CC [M]  /home/dimi/code/hello/hello.o
  Building modules, stage 2.
  MODPOST 0 modules
make[1]: Leaving directory '/usr/src/linux-headers-3.2.0-3-amd64'
    
por dimitarvp 20.07.2012 / 19:39

4 respostas

5

RESOLVIDO!

Simples assim: /root/.bashrc tinha isso dentro:

 export GREP_OPTIONS='--color=always'

Alterou para:

 export GREP_OPTIONS='--color=never'

... e reiniciei o shell de root ( é claro ; não omita este passo). Tudo começou a funcionar novamente. Módulos de kernel NVIDIA e VirtualBox construídos a partir da primeira tentativa. Eu estou tão feliz! : -)

Então, novamente, estou um pouco decepcionado com as ferramentas de construção do kernel. Eles devem conhecer melhor e passar --color=never em todos os lugares em que usam grep ; ou melhor, armazene o valor antigo de GREP_OPTIONS , substitua-o pelo ciclo de vida do processo de construção e, em seguida, restaure-o.

Espero que minha épica batalha de uma semana com esse problema seja valiosa tanto para a comunidade quanto para os desenvolvedores de ferramentas de construção do kernel.

Um muito caloroso agradecimento às pessoas que estavam comigo e tentaram ajudar.

(Todos os créditos estão aqui: link )

    
por 28.07.2012 / 07:27
2

Já tentou limpar e reinstalar dkms?

Você pode usar apt-get purge dkms e isso também irá limpar todos os pacotes que dependem dele, então você terá que reinstalá-los depois.

Se você não quiser que os pacotes dependentes sejam limpos também, você pode usar o dpkg:

dpkg --purge --force-depends dkms

reinstale com o usual: apt-get install dkms

FWIW, eu tenho duas máquinas aqui (executando o debian sid) com o kernel linux-image-3.2.0-3-amd64 e o nvidia-kernel-dkms 302.17-3 e pacotes relacionados instalados. O módulo dkms compilado sem problemas. Uma terceira máquina (minha área de trabalho principal) ainda está executando o nvidia-kernel-dkms 295.53-1, principalmente porque eu não quero ter que efetuar logout.

BTW, você mencionou a remoção e reinstalação dos vários pacotes da nvidia com o aptitude. Existem vários pacotes nvidia que não possuem nvidia no nome do pacote. Aqui está a solução que eu criei para segurar / desabancar nvidia pkgs (eu normalmente só quero atualizar o nvidia pkgs quando eu quiser / conseguir sair da minha sessão X atual ... e depois de algumas surpresas desagradáveis com novas versões nvidia , Eu gosto de testá-los na minha máquina menos importante primeiro):

(nota: você precisará do meu pacote dlocate instalado para executar isso)

$ cat /usr/local/sbin/hold-nvidia.sh 
#! /bin/bash

PKGS=$(dlocate -l nvidia cuda vdpau | awk '/^[hi]i/ {print $2}' | sed -e 's/:.*//')

echo dpkg-hold $PKGS
dpkg-hold $PKGS

Há um quase idêntico para os pacotes que não são mantidos (executa dpkg-unhold em vez de dpkg-hold ), e seria trivial fazê-lo executar dpkg --purge ou apt-get purge .

    
por 25.07.2012 / 13:34
1

Isso não é bom:

PATH: /usr/local/rvm/gems/ruby-1.9.3-p194/bin:\
    /usr/local/rvm/gems/ruby-1.9.3-p194@global/bin:\
    /usr/local/rvm/rubies/ruby-1.9.3-p194/bin:\
    /usr/local/rvm/bin:\
    /usr/local/sbin:\
    /usr/local/bin:\
    /usr/sbin:\
    /usr/bin:\
    /sbin:\
    /bin

Estou disposto a apostar que em pelo menos alguns desses diretórios você tinha $PATH ed à frente de /bin e /sbin - especialmente os ruby - você tinha scripts de wrapper de aplicativo de shell comuns para a saída de colorização. Talvez você até tenha uma configuração semelhante aplicada em /etc/skel . Nesse caso, nem /bin/env -i grep poderia ter salvo você mesmo.

É por isso que as pessoas compilam em chroot.

P.S. Eu sou tão crítico porque tive que aprender a mesma lição da mesma forma há alguns anos atrás. Você provavelmente não precisaria do =never se o seu $PATH estivesse limpo. Além disso, você pode simplesmente usar --color=auto , nesse caso, as fugas do terminal só serão usadas se grep ' stdout é um terminal - em outras palavras - não está em |pipe para gcc.

Ou, melhor ainda, em vez de configurar um shell inflexível alias com:

alias grep=grep\ --color=anything

Você pode aproveitar a configuração grep ' $ENV :

GREP_COLOR=auto
    
por 23.03.2014 / 22:50
0

Estou executando o Debian Wheezy (32 bits) com drivers NVIDIA. Eu também recentemente tentei a versão DKMS 320.17, mas reverti para a versão 'Oficial' da NVIDIA (295.59), não porque ela não tenha sido instalada, mas porque ela não inclui o programa nvidia-settings e preciso redefinir o overscan no meu HD TV (monitor secundário).

Dito isto, você não precisa vincular /usr/bin/gcc ao gcc-4.6 para executar a versão mais antiga. Acabei de executar CC=gcc-4.6 antes de executar a instalação 'Oficial' 295.59 depois de ter limpado todas as coisas da nvidia que apt-get tinha instalado.

Wheezy ainda é a versão testing , então é possível que você tenha encontrado um bug que não foi testado adequadamente na versão de 64 bits. Como eu disse, minha atualização de 32 bits não apresentou problemas além da funcionalidade ausente. Você pode querer verificar um relatório de erros se tiver certeza de que tudo está OK no seu sistema.

Minha recomendação seria reverter para a versão 295.59 'Official' (usando seu link ou definindo CC para usar a versão correta de gcc ) e então aguardar uma atualização para o módulo nvidia-kernel-dkms ( ou até Wheezy ser lançado como estável ).

Claro, se você verificar aqui você verá que o código é Non-free de qualquer maneira, então provavelmente está usando uma versão de pré-lançamento do binário 'Official' que simplesmente adicionaria as possibilidades de problemas.

    
por 20.07.2012 / 20:26