Как позволить `dpkg -i` установить для меня зависимости?

Установка через Debian package

Программные пакеты могут распространяться и не через репозитории. Например, они могут быть доступны на сайтах разработчиков. В таком случае, пакет можно скачать и воспользоваться утилитой dpkg (debian package) для установки. При использовании dpkg не происходит автоматическое отслеживание зависимостей и скачивание дополнительных пакетов. В случае нехватки каких-либо программ или библиотек установка завершится ошибкой с указанием списка отсутствующих пакетов. Их придется установить отдельно, например, через apt-get, если они присутствуют в подключенных репозиториях, либо скачивать с сайтов разработчиков и устанавливать в нужном порядке через dpkg.

Для примера скачаем из системного репозитория установочный пакет веб-сервера Nginx командой:

и попробуем установить через dpkg –i имя_файла.deb:

В результате система выдает ошибку с перечнем отсутствующих пакетов:


Скриншот №4. Ошибка с перечнем отсутствующих пакетов

Основные опции dpkg:

  • dpkg –i имя_файла.deb — установка пакета; в качестве параметра указывается полное имя файла;
  • dpkg –r имя_пакета — удаление ранее установленного пакета;
  • dpkg –l — выведение списка установленных в системе пакетов.

Графический пакетный менеджер Synaptic

Теперь перейдем к рассмотрению установки программ в линукс Debian с помощью графического пользовательского интерфейса. Для этого в дебиан по умолчанию используется программа Synaptic.

Если по какой либо причине в вашей копии системы этой программы нет то установить Synaptic можно командой:

sudo apt install synaptic

1 sudo apt install synaptic

С его помощью можно не только устанавливать и удалять программы но и управлять репозиториями и решать некоторые проблемы. В общем программа очень функциональна и удобна.

В верхней части окна программы есть панель с кнопками. Я буду ссылаться на него по ходу рассказа.

Для установки программ в Linux Debian с помощью Synaptic нужно выбрать пакет. Прежде всего обновите информацию о пакетах. Для этого можно нажать сочетание клавиш Ctrl+R либо кликнуть по кнопке «Обновить».

Затем, что бы вызвать меню поиска нажать сочетание клавиш Ctrl+ F  или кликнуть по кнопке «Поиск». В открывшемся окне указать название программы или пакета. Например, Midnight Commander и нажать кнопку «Поиск».

После завершения поиска будет выведен список с вариантами для установки. Можно выбрать пакет кликнув по нему левым кликом и посмотреть его описание.

Для установки нужно сделать правый клик по строке с выбранным пакетом. Появится контекстное меню в котором выберите пункт «Отметить для установки».

Откроется окно в котором будут показаны пакет и все зависимости которые потребуются для работы программы.

Нажмите кнопку «Применить», окно закроется и вы вернетесь в интерфейс выбора пакетов. Теперь в верхнем меню тоже нажмите кнопку «Применить».

Опять будет открыто окно в котором тоже нужно нажать кнопку «Применить». Начнется процесс установки. В конце будет выдано сообщение о том, что изменения применены то есть установка завершена.

Как установить быстрый фильтр в Synaptic

Synaptic безусловно удобная программа для установки приложений в линукс но для еще большей функциональности предлагаю добавить быстрый фильтр. Он позволит искать нужные программы и пакеты сразу после запуска без необходимости отрывания окна поиска. Итак, нужно установить пакет
apt-xapian-index  после чего обновить индексы.

Для установки вводим команду:

sudo apt install apt-xapian-index

1 sudo apt install apt-xapian-index

Теперь для обновления команда:

sudo update-apt-xapian-index –f

1 sudo update-apt-xapian-index –f

Ключ –f здесь нужен для принудительного обновления базы даже если она была обновлена. После всех действий в синаптике появится быстрый поиск расположенный верхнем меню.

Теперь можно закрыть Synaptic и пользоваться установленным приложением.

How to Install Deb Files (Packages) on Ubuntu

27 Января 2021
|

Ubuntu

Deb — это формат установочного пакета, используемый всеми дистрибутивами на основе Debian.

Хранилища Ubuntu содержат тысячи пакетов DEB , которые могут быть установлены либо из Ubuntu Software Center или из командной строки с помощью и утилиты.

Многие приложения не включены в Ubuntu или какие-либо сторонние репозитории. Эти приложения необходимо загрузить с веб-сайтов разработчика и установить вручную. Будьте особенно осторожны при установке пакетов deb из неофициальных источников.

Скачивание файлов deb 

В целях демонстрации мы загрузим и установим deb-файл TeamViewer . TeamViewer — это комплексное решение для удаленной поддержки, совместного использования рабочего стола, онлайн-встреч и передачи файлов между компьютерами.

Запустите свой веб-браузер и перейдите на страницу загрузки TeamViewer для Linux . Загрузите пакет deb, щелкнув ссылку для загрузки Ubuntu и Debian.

Если вы предпочитаете терминал, вы можете загрузить файл deb с помощью или :

Установка файлов deb из командной строки 

Когда дело доходит до установки пакетов deb из командной строки, в вашем распоряжении несколько инструментов. В следующих разделах мы покажем вам , как использовать , и утилиты для установки пакетов DEB.

Установка файлов deb с помощью  

— это утилита командной строки для установки, обновления, удаления и иного управления пакетами deb в Ubuntu, Debian и связанных дистрибутивах Linux. Он был представлен в Ubuntu 14.04 и сочетает в себе наиболее часто используемые команды из и .

Чтобы установить локальные пакеты deb, вам необходимо указать полный путь к файлу deb. Если файл находится в вашем текущем рабочем каталоге, вместо того, чтобы вводить абсолютный путь, вы можете добавить его перед именем пакета. В противном случае попытается получить и установить пакет из репозиториев Ubuntu.

    Вам будет предложено ввести, чтобы продолжить:

Менеджер пакетов разрешит и установит все зависимости пакетов.

Установка файлов deb с помощью  

это инструмент для установки локальных пакетов deb. По умолчанию он не установлен в Ubuntu, но вы можете установить его с помощью следующей команды:

Чтобы установить пакет deb с типом:

Введите, когда будет предложено, и разрешит и установит пакет deb и все его зависимости за вас.

Установка файлов deb с помощью  

это низкоуровневый менеджер пакетов для систем на базе Debian. Используйте опцию (или ) для установки пакетов deb с .

   В отличие от и , не разрешает зависимости. Если при установке пакетов deb вы получаете какие-либо ошибки зависимостей, вы можете использовать следующую команду для разрешения и установки всех зависимостей пакетов:

Установка пакетов deb с помощью графического интерфейса 

Если вы предпочитаете использовать графический интерфейс, просто загрузите файл deb и откройте его двойным щелчком.

Это откроет центр графического программного обеспечения дистрибутива по умолчанию:

Нажмите кнопку «Установить», и откроется диалоговое окно «Проверка подлинности».

    Введите пароль администратора и нажмите кнопку «Аутентификация».

    Установка может занять некоторое время в зависимости от размера файла и его зависимостей. После установки пакета deb кнопка «Установить» в программном центре Ubuntu изменится на «Удалить».

Вот и все, приложение установлено в вашей системе и вы можете начать им пользоваться.

Мы показали вам, как установить локальные файлы deb в Ubuntu. При установке пакетов из командной строки предпочитайте использовать, поскольку он разрешит и установит все зависимости пакетов.

8 ответов

Вы можете установить gdebi-core, это версия командной строки установщика пакета GDebi с 10.04 и ранее. В новых версиях Ubuntu Центр программного обеспечения используется для установки debs, который не имеет эквивалента командной строки.

Чтобы установить пакет deb с помощью gdebi, просто запустите:

ответ дан
25 May 2018 в 21:31

Gdebi

gdebi устанавливает пакет deb и его зависимости. Чтобы использовать его, выполните:

В новых версиях Ubuntu это не установлено по умолчанию, поэтому вам нужно будет установить его из репозиториев.

См. для полного списка опций.

gdebi — это командная строка, эквивалентная графическому инструменту с тем же именем, которое по умолчанию было включено в Ubuntu. Команда для графического инструмента — gdebi-gtk и имеет аналогичную функциональность:

ответ дан
25 May 2018 в 21:31

, начиная с apt 1.1 (доступно в Xenial (16.04), растянуть) apt install также позволяет локальные файлы:

. Так проще и чище.

См. релиз объявления

ответ дан
25 May 2018 в 21:31

running

после установки пакета с dpkg может разрешить разбитые зависимости (по крайней мере, man apt-get сказать так …). Ill update, когда я его проверю.

ответ дан
25 May 2018 в 21:31

dpkg не поддерживает зависимость. Существует способ обойти это, но для этого потребуется создать локальную базу данных (и, следовательно, вы уже знаете зависимости), и считается устаревшей (…).

Должна ли она быть командой линия? (server install?) Если это так, посмотрите на apt-get -f, но будьте осторожны: решение зависимостей после установки может привести к повреждению системы.

gdebi (gui frontend) раньше имел возможность сделайте это, но замените USC.

Как вы загрузили .deb. Некоторые из новых возможностей 11.04 — это обработка .deb, загружаемая с веб-сайта: она открывается в USC, поэтому зависимости будут решены установщиком.

EDIT, основанный на комментарии andrew: sudo gdebi foo-1.2.3.deb сделал бы трюк !!

ответ дан
25 May 2018 в 21:31

В качестве альтернативы gdebi-gtk вы можете использовать Ubuntu Software Center.

Двойной щелчок по пакету и кнопка установки должна быть доступна.

ответ дан
25 May 2018 в 21:31

Вы можете создать файл dpkg-dep-inst со следующим содержимым.

Предполагаю, что вы создали файл в своей домашней папке. Сделайте это с помощью chmod +x dpkg-dep-inst и переместите его на /usr/local/bin с помощью sudo cp dpkg-dep-inst /usr/local/bin.

Теперь вы можете установить пакет debian с зависимостями автоматически с помощью:

ответ дан
25 May 2018 в 21:31

Я просто столкнулся с этой проблемой. Вызов apt-get install -f не будет устанавливать рекомендуемые зависимости, хотя! Единственным обходным решением для этого было бы создание локального репозитория и добавление к /etc/apt/sources.list, т. Е .:

ответ дан
25 May 2018 в 21:31

3.2 Установка пакетов

Наконец-то, ожидание окончено! Ваш sources.list готов и списки доступных
пакетов обновлены, теперь вам только остается дать команду
apt-get, чтобы установить предпочитаемый пакет. Например, вы
можете запустить:

     apt-get install xchat

APT будет искать в своей базе данных наиболее свежие версии пакетов и будет
скачивать их из соответствующих архивов так, как они указаны в
sources.list. В случаях, когда пакет зависит от другого — как в
варианте ниже — APT проверит зависимости и установит необходимые пакеты. См.
пример:

     @[/] # apt-get install nautilus
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 0 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 17.2MB will be used.
     Do you want to continue? [Y/n]

Пакет зависит от совместно-используемых библиотек,
поэтому APT скачает их из архива. Если бы вы указали имена этих библиотек в
командной строке apt-get, то APT не стал бы спрашивать у вас
разрешения продолжать установку; он бы автоматически решил, что вы хотите
установить все эти пакеты.

Это означает, что APT запрашивает подтверждения только тогда, когда нужно
установить пакеты, которые не были перечислены в командной строке.

Вам могут быть полезны следующие опции apt-get:

     -h   справка
     -d   только загрузить - не устанавливать и не распаковывать архивы
     -s   ничего не делать реально, имитировать выполнение
     -y   предполагается ответ Yes на все вопросы, сами вопросы не выводить
     -f   продолжать, даже если проверка целостности не удачна
     -u   плюс ко всему показывать список обновленных пакетов

В одной строке можно задавать несколько пакетов. Скачанные из сети файлы
помещаются в каталог для дальнейшей установки
/var/cache/apt/archives.

Также, вы можете указывать пакеты для удаления в той же командной строке.
Просто поместите ‘-‘ сразу после имени удаляемого пакета, например:

     @[/] # apt-get install nautilus gnome-panel-       
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 
     The following packages will be REMOVED:
       gnome-applets gnome-panel gnome-panel-data gnome-session 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 4 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 2594kB will be used.
     Do you want to continue? [Y/n]

Более подробную информацию об удалении пакетов можно найти в разделе .

Если вы обнаружили, что пакет испортился, или просто хотите переустановить
файлы пакета более новой доступной версии, то вы можете использовать опцию
—reinstall, например:

     @[/] # apt-get --reinstall install gdm
     Reading Package Lists... Done
     Building Dependency Tree... Done
     0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1  not upgraded.
     Need to get 0B/182kB of archives. After unpacking 0B will be used.
     Do you want to continue? [Y/n]

При создании этого руководства APT имел версию 0.5.3, которая была текущей
версией в Debian `unstable’ (sid) на время написания. Если вы
установили эту версию, то вам доступны некоторые дополнительные возможности: вы
можете использовать команды типа apt-get install пакет/дистрибутив
для установки пакетов из указанных дистрибутивов, или apt-get install
пакет=версия
. Например:

     apt-get install nautilus/unstable

установит nautilus из дистрибутива `unstable’ (нестабильный), даже если вы
работаете на `stable’ (стабильном). Для ‘distribution’ допускаются значения
stable, testing и unstable.

Вы можете предпочесть использование ключа -t для выбора целевого
дистрибутива, указывающего предпочесть указанный
дистрибутив при обработке зависимостей.

ВАЖНО: `unstable’ версия Debian — это самая первая версия, в которой
появляются новейшие версии пакетов Debian. Этот дистрибутив подвергается
воздействию изменений, сделанных в пакетах, и маленьким, и большим, каждое из
которых может воздействовать на множество пакетов или систему в целом

По этой
причине, эта версия дистрибутива не должна использоваться неопытными
пользователями или теми, кто ожидает стабильности.

Дистрибутив `testing’ (тестируемый) несколько лучше `unstable’ в отношении
стабильности, но на производстве лучше все-таки использовать стабильный
дистрибутив.

3.3 Удаление пакетов

Если пакет вам больше не нужен, то вы можете удалить его из вашей системы,
используя APT. Чтобы это сделать просто введите: apt-get remove
package
. Например:

     @[/] # apt-get remove gnome-panel
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       gnome-applets gnome-panel gnome-panel-data gnome-session 
     0 packages upgraded, 0 newly installed, 4 to remove and 1  not upgraded.
     Need to get 0B of archives. After unpacking 14.6MB will be freed.
     Do you want to continue? [Y/n]

Из вышеприведенного примера можно видеть, что APT также предлагает удалить
пакеты, от которых зависит пакет, предлагаемый вами к удалению. Способа
удалить пакет при помощи APT без удаления пакетов, от которых он зависит, нет.

Вышеприведенная команда удалит пакеты, но оставит их
настроечные файлы, если они есть. Для полного удаления пакета запустите:

     @[/] # apt-get --purge remove gnome-panel
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 
     0 packages upgraded, 0 newly installed, 4 to remove and 1  not upgraded.
     Need to get 0B of archives. After unpacking 14.6MB will be freed.
     Do you want to continue? [Y/n]

Обратите внимание на ‘*’ после имен. Это указывает на то, что будут удалены
настроечные файлы для каждого из этих пакетов.. Аналогично действию install, вы можете инвертировать действие
remove для определенных пакетов

В случае удаления, если вы
добавите знак ‘+’ справа от имени пакета, то пакет будет
установлен, а не удален.

Аналогично действию install, вы можете инвертировать действие
remove для определенных пакетов. В случае удаления, если вы
добавите знак ‘+’ справа от имени пакета, то пакет будет
установлен, а не удален.

     @[/] # apt-get --purge remove gnome-panel nautilus+
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     The following packages will be REMOVED:
       gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 4 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 2594kB will be used.
     Do you want to continue? [Y/n]

Обратите внимание на то, что распечатывает дополнительные
пакеты, которые будут установлены (т.е., пакеты, которые будут установлены для
правильной работы запрашиваемых к установке пакетов), удаляемые пакеты и затем
пакеты, которые будут установлены (также включая дополнительные пакеты).

Установка пакетов Aptitude

Aptitude — это более продвинутая программа для управления пакетами. Она поддерживает больше функций чем apt. Но для использования ее нужно установить:

Кроме консольных команд, утилита имеет псевдографический интерфейс, с помощью которого намного удобнее управлять пакетами. Возможно, установка пакетов Debian здесь не так удобна, зато удалить лишние пакеты и посмотреть уже установленные самое оно. Для запуска утилиты выполните:

Пакеты разделены на удобные категории чтобы их можно было просто найти:

Чтобы посмотреть информацию о пакете нажмите «Enter», чтобы отметить пакет для установки, нажмите «+», а для удаления пакета — «-«:

Далее чтобы установить или удалить отмеченные пакеты нажмите кнопку «g». Затем еще раз «g» для подтверждения:

Конечно, вам необязательно использовать интерфейс curses, если хотите, можете применять привычные консольные команды, утилита их тоже поддерживает. Синтаксис выполнения такой же, как и у apt, но команд намного больше:

  • install — установить пакет, поддерживает регулярные выражения;
  • remove — удалить пакет;
  • purge — удалить пакет вместе с его конфигурацией;
  • reinstall — переустановить пакет;
  • build-depens — отобразить зависимости пакета;
  • markauto — пометить пакет, как установленный автоматически в виде зависимости;
  • hold — не обновлять этот пакет;
  • keep — если для пакета намечено какое-либо действие — отменяет его;
  • forget-new — удаляет всю информацию о пакете;
  • update — обновление системы;
  • safe-update — обновление системы без удаления конфликтующих пакетов, такие пакеты не будут обновлены;
  • full-update — полное обновление системы;
  • search — поиск пакетов;
  • show — посмотреть информацию о пакете;
  • source — скачать исходный код пакета;
  • vesrsions — отобразить доступные версии пакета;
  • why — отображает причину, почему пакет не может быть установлен;
  • clean — удаляет лишние deb файлы;
  • autoclean — удаляет все пакеты из кэша;
  • download — скачать пакет, но не устанавливать.

Установка deb пакетов в debian с помощью aptitude будет выглядеть аналогично apt:

Опция -t здесь тоже актуальна:

Использование

В APT входит несколько утилит, выполняющих отдельные задачи.

Начиная с версии Ubuntu 16.04 доступна новая утилита , которая содержит наиболее часто используемые команды из и . Утилита предназначена для пользователей, в то время как можно рассматривать как как инструмент более низкого уровня.

apt-get

apt-get это утилита управления пакетами. apt-get требует прав суперпользователя для своей работы.

Основные команды:

  • — Обновить информацию о пакетах, содержащихся в репозиториях.
  • — Установить пакет foo. Скачивание, установка и настройка происходят автоматически. Если для настройки пакета foo нужны дополнительные сведения, будет показан запрос к пользователю.
  • — Обновление пакетов, для которых в репозитории доступны новые версии.
  • — Обновление пакетов, требующих разрешения зависимостей (установка дополнительных или удаление конфликтующих пакетов).
  • — Удаление пакета foo из системы.
  • — Удаление пакета foo и очистка системы от его конфигурационных файлов. Файлы настроек в домашних каталогах пользователей удалены не будут.
  • — Удаление пакета, который более не нужен в системе. Используется для очистки системы от ненужных пакетов. Факт, что пакет более не нужен, определяется следующим образом: если пакет был установлен не сам по себе, а как зависимость для другого пакета, который впоследствии был удалён, значит этот пакет тоже уже не нужен в системе.
  • — Получение исходных текстов пакета foo.
  • — Получение зависимостей для сборки пакета foo.

Починка базы пакетов

apt-get также используется для устранения сбоев в базе пакетов вызванных нарушенными зависимостями. Разрешение зависимостей производится командой:

sudo apt-get install -f

apt-cache

apt-cache – утилита, позволяющая выполнять запросы к кешу APT.

Основные команды:

  • — Поиск пакета по части названия или описания. Поддерживает регулярные выражения.
  • — Информация о пакете: версия, размер, описание и т. п.
  • — Зависимости указанного пакета.
  • — Обратные зависимости пакета.

apt-key

apt-key служит для добавления ключей от репозиториев в систему. Ключи защищают репозитории от возможности подделки пакета. Подробнее смотрите в статье .

Основные команды:

  • — Добавление ключа в базу доверенных ключей.
  • — Удаление ключа из доверенных.

3.4 Обновление пакетов

Обновления пакетов — это конек системы APT. Это может быть сделано одной
командой: apt-get upgrade. Вы можете использовать эту команду для
обновления пакетов в том же самом дистрибутиве, равно как и при обновлении
существующего дистрибутива до нового, хотя для последнего действия
предназначена команда apt-get dist-upgrade; см. подробности в
разделе .

Эту команду полезно запускать с опцией -u. Эта опция заставляет
APT показывать полный список пакетов, предназначенных для обновления. Без нее
вы будете обновляться вслепую. APT последние версии каждого из пакетов и
установит их в правильном порядке

Поэтому очень важно запустить перед этим
apt-get update. См

раздел . Вот пример:

     @[/] # apt-get -u upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages have been kept back
       cpp gcc lilo 
     The following packages will be upgraded
       adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent
       ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev
       libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0
       libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 
     29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
     Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.
     Do you want to continue? [Y/n]

Процесс очень прост

Обратите внимание, что в первых строках
apt-get говорит, что некоторые пакеты были kept back.
Это означает, что новые версии некоторых пакетов не будут установлены по
некоторым причинам. Возможными причинами могут быть битые зависимости (пакет,
от которого он зависит не доступен для скачивания) или новые зависимости (пакет
последней версии зависит от новых пакетов).

В первом случае прозрачного решения не существует. Для второго случая, должна
помочь команда apt-get install для указанного в вопросе пакета,
так ка это приведет к скачиванию зависимости. Даже более прозрачное решение
сосотоит в использовании dist-upgrade. См. раздел .

Установка через файлы сценариев

Установка программы представляет собой распаковку архива, копирование файлов программы в системные директории и, при необходимости, внесение изменений в системные конфигурационные файлы. Все эти действия могут быть внесены в исполняемый файл сценария и выполнены при его запуске. Сейчас достаточно редко встречается подобный метод установки программы, но, тем не менее, некоторые разработчики его используют. Если возникла необходимость в установке такого пакета, необходимо скачать архив (обычно это файл с расширением .tgz или .tar.gz), распаковать его в отдельную директорию на сервере, изучить распакованные файлы, а также прочитать файл readme, если он имеется. Установка программы запускается, обычно, сценарием install.sh, поэтому нужно включить атрибут исполняемого файла командой:

после чего запустить непосредственно сценарий:

220140
Минск
ул. Домбровская, д. 9

+375 (173) 88-72-49

700
300

ООО «ИТГЛОБАЛКОМ БЕЛ»

700
300

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: