Итак, я просматривал веб-страницу на днях и наткнулся на несколько мест, в которых я хотел загрузить .deb
файлы - и так как они устанавливаются пользователем root (и поэтому обладают «полномочиями» и возможностями root) ), Я не был уверен в этом.
Вещи рассмотреть:
, Насколько известный сайт? Например, действительно ли это был случайный блог, охваченный в рекламе, действительно ли это был случайный пользователь на некотором форуме, или действительно ли это был известный, уважаемый сайт?
, Что это утверждает, что установило? Например, это утверждает, что установило ядро или iconset, но является им большой только 1 МБ?
, Насколько "важный" он, что у Вас есть содержание этого .deb
?
Способы протестировать вещи надежно:
я использую arkose
( в стандартном repos ) играющий в песочнице с моим debs (и другие вещи) - используют его что-то вроде этого:
sudo arkose -n -c "cd $PWD; $SHELL"
, Что это, это дает мне "песочницу" (иначе известный как "YAY I ВИНТОВ CAN!") с копией на доступе для записи ко всему на моем компьютере, включая мой корневой каталог - поэтому, если противное противное .deb
делает sudo rm -rf /*
, , я не ТЕРЯЮ ДАННЫХ!
Другая вещь, которая не подчеркнута, достаточно , ДЕЛАЮТ РЕЗЕРВНЫЕ КОПИИ . Те чрезвычайно полезны, и у нас есть много вопросов по теме.
Короче говоря, просто удостоверьтесь, что Вы думаете об этом, и не просто загружаете случайный deb и устанавливаете его.
Если Вы загружаете пакет с недоверяемых или сомнительных источников, являются параноидальными. На популярных форумах как 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
) может предоставить быстрый обзор содержания файла. Клавиши со стрелками, страница, up/down, дом/конец может быть полезен для навигации, 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, загружающемся от Живого CD и использования ps aux
, top
, strace -f -o logfile.txt programname
для дальнейшего анализа.