Risposte:
Cose da considerare:
Quanto è noto il sito? Ad esempio, era un blog a caso coperto da annunci pubblicitari, era un utente a caso su un forum o era un sito ben noto e rispettato?
Cosa pretende di installare? Ad esempio, afferma di installare un kernel o un set di icone, ma è grande solo 1 MB?
Quanto è "importante" che tu ne abbia il contenuto .deb
?
Modi per testare le cose in modo sicuro:
Uso arkose
(è nei
repository standard ) sandboxing con i miei debs (e altre cose) - usalo in questo modo:
sudo arkose -n -c "cd $PWD; $SHELL"
Cosa mi dà un "sandbox" (altrimenti noto come "YAY CAN CAN SCREW UP!") Con accesso copia su scrittura a tutto sul mio computer, inclusa la mia directory home - quindi se lo .deb
fa il cattivo sudo rm -rf /*
, DON PERDERE QUALUNQUE DATO!
Un'altra cosa che non è abbastanza stressata è FARE BACKUPS . Sono estremamente utili e abbiamo molte domande sull'argomento.
In breve, assicurati di pensarci e non scaricare semplicemente un deb casuale e installarlo.
Se stai scaricando un pacchetto da fonti non attendibili o discutibili, sii paranoico. Su forum popolari come ubuntuforums.org, se un utente pubblica il suo primo post contenente solo un breve testo come "installa questo, funziona per me!", Seguito da un link, fai attenzione a quel link e / o istruzioni.
Non usare pacchetti binari se possibile, specialmente da fonti non attendibili. Ottieni il sorgente (per i pacchetti Ubuntu ufficiali, puoi farlo apt-get source package-name
) e dai un'occhiata.
Se il pacchetto in questione è piccolo, potrebbe valere la pena analizzarlo. Io preferisco usare il terminale per questo, perché io allora ho accesso veloce ad altri strumenti potenti della riga di comando, come ls
, find
, file
, less
, vim
, grep
, sed
, dpkg
e un sacco altri. Usa il completamento delle tabulazioni (ovvero premi Tabper completare comandi e nomi di file), ti fa davvero risparmiare tempo!
Per scaricare un file .deb, è possibile utilizzare il browser, ma copiare il collegamento e quindi utilizzare wget
è più veloce poiché è già possibile sperimentarlo.
$ 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
Successivamente, è il momento di controllare il file stesso. less
(tramite lesspipe
) può fornire una rapida panoramica del contenuto del file. I tasti freccia, pagina su / giù, home / end possono essere utili per la navigazione, Qesce dal programma.
$ 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 <ubuntu-devel-discuss@lists.ubuntu.com>
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
...
Successivamente, si ottiene una panoramica delle dipendenze del pacchetto e del tipo di file eventualmente contenuti. Tempo di estrarre i file e analizzare i contenuti utilizzando dpkg-deb
. Il primo comando estrae l'albero dei file in una directory appena creata fs
, il secondo lo estrae DEBIAN
perché non è stata specificata un'altra destinazione:
$ dpkg-deb -x nvidia-common_0.2.35_amd64.deb fs
$ dpkg-deb -e nvidia-common_0.2.35_amd64.deb
Useremo less
di nuovo per analizzare il contenuto dei script del manutentore (cioè i file che verranno utilizzati / eseguiti durante l'installazione (e la rimozione). prerm
, preinst
, postrm
, postinst
Sono script eseguiti prima / dopo la rimozione / installazione, che sono la maggior parte dei file importanti da analizzare Utilizzare :n
e :p
per alternare tra i file Premendo =
si ottengono il nome del file e il numero di riga correnti, nonché il numero di file presenti nell'elenco.
$ less DEBIAN/*
Se gli script del pacchetto sembrano sani, è tempo di analizzare i contenuti installati (utilizzare il completamento con tabulazione). Per gli script shell e gli script interpretati (come Python), l'analisi è più semplice (supponendo che tu sia noto con la lingua).
$ 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
Prestare particolare attenzione ai file di configurazione, specialmente se utilizzano directory come /etc/init
(per gli script di avvio) o /etc/modprobe.d
(opzioni per il caricamento dei moduli del kernel).
Per i binari, ldd
può dare un'idea di cosa potrebbe essere utilizzato un programma. Il programma seguente sembra un programma grafico che utilizza 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)
...
Dopo si è sicuri che il pacchetto sembra valida, si può andare a installarlo in VirtualBox fare il boot da un CD Live e l'utilizzo ps aux
, top
, strace -f -o logfile.txt programname
per ulteriori analisi.
.deb
con il rullo File per vedere cosa c'è dentro. Anche se devo dire che ho scaricato un deb casuale da un utente casuale su un thread casuale nei forum di Ubuntu per risolvere i miei problemi con la mia stampante, ha funzionato.