Відповіді:
Що слід врахувати:
Наскільки відомий сайт? Наприклад, чи був це випадковий блог, висвітлений в оголошеннях, чи це був випадковий користувач на якомусь форумі, чи це був добре відомий, шанований сайт?
Що він вимагає встановити? Наприклад, чи вимагає він встановити ядро чи набір іконок, але чи великий він лише 1 Мб?
Наскільки "важливим" є те, що у вас є вміст цього .deb
?
Способи надійної перевірки речей:
Я використовую arkose
( його в стандартних репостах
) пісочницю з моїми дебасами (та іншими речами) - використовую його приблизно так:
sudo arkose -n -c "cd $PWD; $SHELL"
Що , що це дає мені «пісочницю» (інакше відомий як «яй I CAN загвинчувати!») З копіювання при записі доступ до всього , на моєму комп'ютері, в тому числі і мій домашній каталог - так що якщо неприємний неприємний .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/*
Якщо сценарії пакетів виглядають здоровими, настав час проаналізувати встановлений вміст (скористайтеся вкладкою-доповненням). Для сценаріїв оболонок та інтерпретованих сценаріїв (як-от 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
валик File, щоб побачити, що всередині. Хоча я мушу сказати, що я завантажив випадковий деб від випадкового користувача на випадковому потоці на форумах Ubuntu, щоб виправити свої проблеми з моїм принтером, він спрацював.