Ответы:
Что нужно учитывать:
Насколько хорошо известен сайт? Например, это был случайный блог, покрытый рекламой, случайный пользователь на каком-либо форуме или это хорошо известный, уважаемый сайт?
Что он утверждает, чтобы установить? Например, он утверждает, что устанавливает ядро или набор иконок, но он имеет размер всего 1 МБ?
Насколько «важно», что у вас есть содержание этого .deb
?
Способы безопасного тестирования:
Я использую arkose
( в стандартных репозиториях
) песочницу с моими дэбами (и другими вещами) - использую это примерно так:
sudo arkose -n -c "cd $PWD; $SHELL"
Что это дает мне «песочницу» (также известную как «YAY I CAN SCREW UP!») С доступом копирования на запись ко всему на моем компьютере, включая мой домашний каталог - так что, если это .deb
делает неприятная неприятность sudo rm -rf /*
, я не делаю ТЕРЯЕТ ЛЮБЫХ ДАННЫХ!
Еще одна вещь, которая недостаточно подчеркнута, СДЕЛАТЬ РЕЗЕРВНЫЕ КОПИИ . Это очень полезно, и у нас есть много вопросов по этой теме.
Короче говоря, просто убедитесь, что вы думаете об этом, а не просто скачать случайный деб и установить его.
Если вы загружаете пакет из ненадежных или сомнительных источников, будьте параноиком. На популярных форумах, таких как ubuntuforums.org, если пользователь делает свой первый пост, содержащий только краткий текст типа «установить это, работает для меня!», За которым следует ссылка, будьте осторожны с этой ссылкой и / или инструкциями.
Не используйте бинарные пакеты, если это возможно, особенно из ненадежных источников. Получите исходный код (для официальных пакетов Ubuntu это можно сделать apt-get source package-name
) и посмотрите на него.
Если рассматриваемый пакет небольшой, возможно, стоит проанализировать его. Я предпочитаю использовать терминал для этого , потому что я тогда иметь быстрый доступ к другим инструментам мощной командной строки , как ls
, find
, file
, less
, vim
, grep
, sed
, dpkg
и много других. Используйте завершение табуляции (т. Е. TabВвод команд и имен файлов), это действительно экономит время!
Чтобы загрузить файл .deb, вы можете использовать браузер, но копирование и последующее использование ссылки wget
происходит быстрее, поскольку вы уже можете экспериментировать с ним.
$ 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
Далее пришло время проверить сам файл. less
(через lesspipe
) может предоставить быстрый обзор содержимого файла. Клавиши со стрелками, страница вверх / вниз, домой / конец могут быть полезны для навигации, Qвыход из программы.
$ 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
...
После этого вы получите обзор зависимостей пакета и того, какие файлы он может содержать. Время для извлечения файлов и анализа содержимого с помощью dpkg-deb
. Первая команда извлекает дерево файлов во вновь созданном каталоге fs
, вторая извлекает его, DEBIAN
потому что никакая другая цель не указана:
$ dpkg-deb -x nvidia-common_0.2.35_amd64.deb fs
$ dpkg-deb -e nvidia-common_0.2.35_amd64.deb
Мы будем использовать less
еще раз проанализировать содержание сценариев сопровождающего (то есть файлы , которые будут использоваться / работают во время установки (и удаление). prerm
, preinst
, postrm
, postinst
Скрипты запуска перед / после удаления / установки , которые являются наиболее важными для анализа файлов Используйте :n
и :p
для переключения между файлами. Нажав =
, вы получите текущее имя файла и номер строки, а также количество файлов в списке.
$ less DEBIAN/*
Если скрипты пакета выглядят вменяемыми, самое время проанализировать установленное содержимое (используйте tab-завершение). Для сценариев оболочки и интерпретируемых сценариев (таких как Python) анализ проще (при условии, что вы знакомы с языком).
$ 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
Обратите особое внимание на файлы конфигурации, особенно если они используют такие каталоги, как /etc/init
(для сценариев запуска) или /etc/modprobe.d
(варианты загрузки модулей ядра).
Для двоичных файлов ldd
может дать представление о том, для чего может использоваться программа. Приведенная ниже программа выглядит как графическая программа, использующая 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)
...
После того, как вы уверены , что пакет выглядит действительно, вы можете перейти установить его в VirtualBox загрузке с Live CD и использования ps aux
, top
, strace -f -o logfile.txt programname
для дальнейшего анализа.
.deb
ролик с файлом и посмотрите, что внутри. Хотя я должен сказать, что я скачал случайный дебат от случайного пользователя в случайной ветке на форумах Ubuntu, чтобы исправить мои проблемы с принтером, это сработало.