-Поиск по дневнику

Поиск сообщений в varzaev

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 17.04.2007
Записей: 31
Комментариев: 17
Написано: 53

Выбрана рубрика Документация.


Другие рубрики в этом дневнике: Юмор(6), Размышления(1), Праздники(1), Непонятки(3), кино(2), Интересности(8)

Разрешение конфликтов зависимостей.

Дневник

Воскресенье, 06 Мая 2007 г. 10:40 + в цитатник

Из книги Шредера “Linux. Сборник рецептов”. Все нижесказанное проверено и работает.

Проблема

Программа не устанавливается из-за проблем с зависимостями, или команда apt-get dist-upgrade оставляет пакеты, которые нужно удалить.

Решение

Существует несколько команд, которые могут пригодиться для решения этой задачи; перечислим их в том порядке, в котором их стоит попробовать. Допустим, проблемы возникли с пакетом libpam-modules, который не желает обновляться:

# apt-get install libpam-modules

The following packages have unmet dependencies:
libpam-modules: Depends: Iibdb3 (>=3.2.9-19.1) but 3.2.9-19 is to be installed
E: Broken packages

Если вы работаете в смешанной системе, для начала попробуйте указать версию:

# apt-get install -t stable libpam-modules

Если это не помогает или система не является смешанной, попробуйте воспользоваться системой разрешения конфликтов Debian:

# apt-get -f install

Затем выполните команду:

# dpkg --configure -a

И снова повторите команду:

# apt-get -f install

Если будет получен следующий ответ, значит, попытка завершилась неудачей:

Reading Package Lists… Done
Building Dependency Tree… Done
0 upgraded, 0 newly installed. 0 to remove and 1 not upgraded.

Теперь проверьте, что произойдет при удалении существующего пакета libpam- modules:

# apt-get remove –dry-run libpam-modules

Reading Package Lists… Done
Building Dependency Tree… Done
The following packages will be REMOVED:

adduser adminmenu apache at base-config courier-imap courier-imap-ssl courier-pop courier-pop-ssl cron cupsys cupsys-driver-gimpprint diet-elements dict-foldoc dict-gcide diet-jargon dict-vera dict-wn dictd gdm2…

WARNING: The following essential packages will be removed
This should NOT be done unless you know exactly what you are doing!
login libpam-modules (due to login)

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

Если apt-get -u dist-upgrage отображает какие-либо задержанные (held) пакеты, от них лучше избавиться. Пакеты удерживаются из-за конфликтов зависимостей, которые не удается разрешить apt. Попробуйте воспользоваться следующей командой для поиска и исправления конфликтов:

# apt-get -о Debug::pkgProblemResolver=yes dist-upgrade

Если исправить конфликты не удается, команда завершается с сообщением

0 upgraded. 0 newly installed , 0 to remove and 6 not upgraded.

Удаляйте held-пакеты один за одним, каждый раз запуская dist-upgrade, пока не останется ни одного задержанного пакета. Затем установите заново все необходимые пакеты. Не забудьте использовать ключ –dry-run, чтобы заранее знать обо всех последствиях:

# apt-get remove –dry-run libsdl-perl

Рубрики:  Документация

Поиск потерянных man-страниц.

Дневник

Суббота, 05 Мая 2007 г. 17:13 + в цитатник

Данный текст не является моим, а взят из книги Шредера “Linux. Сборник рецептов” с небольшими дополнениями.

Проблема

Вам не удается найти man-страницу для установленной программы, хотя уверены, что она должна находиться в системе.

Решение

Иногда база данных man-страниц повреждается из-за изменений, вносимых пользователями, или некорректной установки man-страниц. Для начала попробуйте провести поиск командой whereis -m:

$whereis -m cat
cat:/usr/man/manl/cat.1.gz /usr/share/man/manl/cat.1.gz

Страница обнаружена. Попробуйте прочитать ее командой man:

$man /usr/man/manl/cat.l.gz

Если не получится, попробуйте заново построить базу данных man командой mandb:

# mandb

Если и это не поможет, проверьте общесистемный поиск с использованием команд locate и grep:

$locate / cat. | egrep -w ‘cat\.[1-9][a-zA-Z]*[.gz]?’

Команда подойдет для любой man-страницы — достаточно заменить cat искомым именем.
Если ни одно из этих решений не помогло добраться до нужной страницы, попробуйте воспользоваться сценарием finddoc, написанном на Python. Если и сценарий не найдет страницу, значит, она отсутствует в вашей системе. Имя сценария может быть произвольным. Не забудьте разрешить его исполнение:

$chmod +x finddoc

В командной строке указывается только имя сценария и название программы, для которой ищется документация. Пример:

$ ./finddoc grep
/usr/share/doc/grep
/usr/share/doc/grep-dctrl
/usr/share/doc/grep-dctrl.changelog.gz

Выходные данные фильтруются другими командами или направляются в файл:

$ ./finddoc | grep -i examples |lpr
$ ./finddoc | grep -i faq
$ ./finddoc | grep -1 examples > python-examples.txt

Отсебятина.

Сам сценарий конечно приводится в книге, но по старой программерской памяти (было время когда программировал в Delphi под виндой) я книжным листингам не доверяю. Поэтому порывшись в интернете нашел этот скрипт и проверил на своей Ubuntu. Все работает.

Листинг со скриптом можно найти по этой ссылочке.
Успехов Вам и не теряйте свои man’ы. :)

Рубрики:  Документация

Метки:  

 Страницы: [1]