Se você estiver baixando um pacote de fontes não confiáveis ou questionáveis, seja paranóico. Em fóruns populares como o ubuntuforums.org, se um usuário fizer seu primeiro post contendo apenas um texto curto como "instalar isso, funciona para mim!", Seguido por um link, tenha cuidado com esse link e / ou instruções.
Não use pacotes binários, se possível, especialmente de fontes não confiáveis. Obtenha a fonte (para pacotes oficiais do Ubuntu, isso pode ser feito com apt-get source package-name
) e dê uma olhada nela.
Se o pacote em questão é pequeno, pode valer a pena analisá-lo. Eu prefiro usar o terminal para isso, pois tenho acesso rápido a outras ferramentas de linha de comando avançadas, como ls
, find
, file
, less
, vim
, grep
, sed
, dpkg
e muitos outros. Faça uso de conclusão de tabulação (ou seja, pressionando Tab para completar comandos e nomes de arquivos), isso realmente economiza tempo!
Para fazer o download de um arquivo .deb, você pode usar o navegador, mas copiar o link e usar wget
é mais rápido, já que você já pode experimentá-lo.
$ mkdir /tmp/foo && cd /tmp/foo
$ wget http://nl.archive.ubuntu.com/ubuntu/pool/main/n/nvidia-common/nvidia-common_0.2.35_amd64.deb
Em seguida, é hora de verificar o arquivo em si. less
(através de lesspipe
) pode fornecer uma visão geral rápida do conteúdo do arquivo. Teclas de seta, página para cima / baixo, home / end podem ser úteis para navegar, Q encerra o programa.
$ less nvidia-common_0.2.35_amd64.deb
nvidia-common_0.2.35_amd64.deb:
new debian package, version 2.0.
size 10802 bytes: control archive= 1877 bytes.
197 bytes, 11 lines * config #!/bin/sh
703 bytes, 16 lines control
741 bytes, 10 lines md5sums
163 bytes, 9 lines * postinst #!/bin/sh
206 bytes, 8 lines * postrm #!/bin/sh
827 bytes, 38 lines * preinst #!/bin/sh
263 bytes, 14 lines * prerm #!/bin/sh
365 bytes, 12 lines templates
Package: nvidia-common
Version: 1:0.2.35
Architecture: amd64
Maintainer: Ubuntu Developers <[email protected]>
Installed-Size: 156
Pre-Depends: dpkg (>= 1.15.7.2)
Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2), python (<< 2.8), debconf (>= 0.5.00) | debconf-2.0, pciutils, python-apt
Conflicts: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
Replaces: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
Section: admin
Priority: optional
Description: Find obsolete NVIDIA drivers
This package will find obsolete NVIDIA drivers in use,
detect the hardware and recommend the most appropriate
driver.
Python-Version: 2.6, 2.7
*** Contents:
drwxr-xr-x root/root 0 2011-09-07 11:06 ./
drwxr-xr-x root/root 0 2011-09-07 11:06 ./usr/
drwxr-xr-x root/root 0 2011-09-07 11:06 ./usr/share/
drwxr-xr-x root/root 0 2011-09-07 11:06 ./usr/share/doc/
drwxr-xr-x root/root 0 2011-09-07 11:06 ./usr/share/doc/nvidia-common/
-rw-r--r-- root/root 1174 2011-09-07 11:07 ./usr/share/doc/nvidia-common/changelog.gz
-rw-r--r-- root/root 466 2011-06-24 14:45 ./usr/share/doc/nvidia-common/copyright
...
Depois disso, você terá uma visão geral das dependências do pacote e do tipo de arquivo que possivelmente contém. Hora de extrair os arquivos e analisar o conteúdo usando dpkg-deb
. O primeiro comando extrai a árvore de arquivos em um diretório recém-criado fs
, o segundo extrai para DEBIAN
porque nenhum outro destino é especificado:
$ dpkg-deb -x nvidia-common_0.2.35_amd64.deb fs
$ dpkg-deb -e nvidia-common_0.2.35_amd64.deb
Usaremos less
novamente para analisar o conteúdo dos scripts do mantenedor (ou seja, os arquivos que serão usados / executados durante a instalação (e remoção). prerm
, preinst
, postrm
, postinst
são scripts executados antes / depois da remoção / instalação, que são os arquivos mais importantes para analisar. Use :n
e :p
para alternar entre os arquivos. Pressionando =
, você obtém o nome do arquivo atual e o número da linha como o número de arquivos que estão na lista.
$ less DEBIAN/*
Se os scripts de pacote parecerem sensatos, é hora de analisar o conteúdo instalado (use tab-completion). Para scripts de shell e scripts interpretados (como o Python), a análise é mais fácil (supondo que você seja conhecido com a linguagem).
$ less fs/usr/bin/nvidia-detector # fs<TAB><TAB>/usr/ <TAB><TAB>bin ...
$ less fs/usr/lib/nvidia/pre-install
$ ls -la fs/usr/lib # quickly check the directory contents, my memory is weak
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 .
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 ..
drwxr-xr-x 2 peter peter 60 2011-09-07 11:06 nvidia
drwxr-xr-x 3 peter peter 60 2011-09-07 11:06 python2.6
drwxr-xr-x 3 peter peter 60 2011-09-07 11:06 python2.7
$ # I conclude: python2.6 is not a symlink to python2.7
$ less fs/usr/lib/python2.7/dist-packages/NvidiaDetector/*
press 'v' to open an editor (e.g. nano, vim) to get syntax highlighting if preferable
Preste atenção especial aos arquivos de configuração, especialmente se eles estiverem usando diretórios como /etc/init
(para scripts de inicialização) ou /etc/modprobe.d
(opções para carregar módulos do kernel).
Para binários, ldd
pode dar uma ideia do que um programa poderia ser usado. O programa abaixo parece um programa gráfico que usa o OpenGL.
$ ldd /usr/bin/glxgears
linux-vdso.so.1 => (0x00007fff7d3ff000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007fa2ead11000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa2eaa8d000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa2ea754000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa2ea3b5000)
...
Depois de ter certeza de que o pacote parece válido, você pode instalá-lo no VirtualBox inicializando em um Live CD e usar ps aux
, top
, strace -f -o logfile.txt programname
para análise posterior.