Журнал LinuxFormat - перейти на главную

LXF104:Ответы

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(викификация, оформление)
(викификация, оформление)
Строка 212: Строка 212:
  
 
'''Дэвид Хилл [David Hill]'''
 
'''Дэвид Хилл [David Hill]'''
 +
 +
'''О:''' Ядро Linux сейчас включает родной драйвер для беспроводного чипсета Broadcom BCM43xx, но он сделан методом обратного инжиниринга и не cправляется со всеми вариантами этих чипсетов. Я использовал его с BCM4306-картами, и драйвера работали достаточно хорошо, но некоторые из более поздних чипсетов не работают (пока).
 +
 +
Вы можете увидеть самый свежий список поддерживаемых устройств на http://linuxwireless.org/en/users/Drivers/b43 (запустите ''lspci'' в терминале root,
 +
чтобы выяснить, что именно Вы используете). Если Ваш чипсет поддерживается, Вы сможете настроить
 +
его в ''Yast'', хотя, возможно, придется убеждать SUSE загрузить драйвер при запуске. Если в выводе
 +
 +
lsmod | grep bcm
 +
 +
показано, что модуль загружается, все должно быть в порядке. В противном случае наберите:
 +
 +
modprobe bcm43xx
 +
 +
и загрузите его, затем отредактируйте '''/etc/sysconfig/kernel''', чтобы добавить '''bcm43xx''' к списку модулей в строку '''MODULES_LOADED_ON_BOOT''', чтобы он загружался автоматически при включении ПК.
 +
 +
Если у Вас один из неподдерживаемых чипсетов, продолжайте использовать ''NdisWrapper'', точно так же, как делали в SUSE 10.1. Тогда Вам, возможно,
 +
придется пресечь попытки родного драйвера захватить устройство и сначала добавить строку '''bcm43xx''' в черный список '''/etc/modprobe.d/blacklist'''. Затем настроить ''NdisWrapper'', как Вы сделали в SUSE 10.1. '''ГМ'''
 +
 +
===Fsckатнутая загрузка===
 +
 +
'''В:''' ''Пытался загрузить мою Ubuntu Gutsy – и не смог. Я увидел ''Grub'', выбрал ОС, и она перешла в экран загрузки с индикатором. Это продолжалось недолго, а затем вылез черный экран с курсором в верхнем левом углу экрана. Там он и остался, и на этом все кончилось.''
 +
 +
''Я подозреваю, что это связано с регулярной проверкой '''fsck''': возможно, она пытается выполниться, но не может. Если это так, что мне делать?  По-моему, Ubuntu выполняет проверку '''fsck''' при каждой 27-й загрузке. Я исправил дело, загрузившись в режиме восстановления и заставив '''fsck''' запуститься, но это ведь снова приключится, не так ли? Как остановить эти каждые 27 раз?''
 +
 +
'''SpecialStuff'''
 +
 +
'''О:''' Экраны загрузки очень красивы, но они также скрывают любые сообщения об ошибках, которые система хочет показать Вам. Некоторые дистрибутивы позволяют удалить заставку нажатием клавиши, как правило, '''Esc''' или '''F2''', но в Ubuntu теперь этого нет. Вы можете убрать этот экран вообще, изменив параметры загрузки. Когда появится надпись “'''Press Esc to enter the menu'''” (Нажмите '''Esc''' для входа в меню), сделайте это. Затем нажмите '''E''' для редактирования, выделите строку '''kernel''' и нажмите '''Е''' снова. Удалите '''quiet splash''' в конце этой строки и нажмите '''B+Enter''' для загрузки с измененными значениями. Теперь Вы должны увидеть все загрузочные сообщения и определить, что мешает процессу. Внесенные изменения являются временными, но Вы можете отредактировать '''/boot/grub/menu.lst''' и сделать их постоянными, или скопировать блок текущей загрузки и изменить его, чтобы получить выбор: загружаться с экраном или без.
 +
 +
Если очередной вызов ''fsck'' прекращает загрузку, это значит, что либо есть ошибки в файловой системе и ''fsck'' нуждается в Вашем вводе для продолжения, либо Вы просто не дождались отработки ''fsck'', которая требует времени. Загрузка без экрана Вам все это покажет. После успешного завершения ''fsck'' проблемы быть уже не должно, разве что Ваша система повреждена и хронически портит файловую систему.
 +
 +
Один из способов обойтись без автоматического запуска ''fsck'' заключается в регулярном запуске его вручную, чтобы эти 27 загрузок никогда не выполнялись без проверки. Вы также можете использовать ''tune2fs'' для установки интервалов между проверками. Команды
 +
 +
tune2fs -c 0 /dev/что_то
 +
tune2fs -i 2w /dev/что_то
 +
 +
будут игнорировать cчетчик подключений первой командой, и проверять каждые две недели второй. Отключать проверки совсем крайне неразумно: тогда
 +
повреждения файловой системы могут втихомолку накапливаться, пока не произойдет серьезный сбой. А по-умному, следует добавить нечто вроде этого к
 +
ежедневному скрипту ''Cron'':
 +
 +
  #!/bin/sh
 +
MOUNTS=”$(tune2fs -l /dev/whatever | awk
 +
‘/^Mount count/ {print $3}’)
 +
if [[ $MOUNTS > 20 ]]
 +
then
 +
echo “dev/whatever has been mounted
 +
$MOUNTS times since the last check, run fsck
 +
on it now.”
 +
  fi
 +
 +
Он отправит Вам письмо, когда счетчик монтирования превысит 20 и пора будет запустить ''fsck'' вручную. Вторая строка выглядит сложной, но это просто запуск ''tune2fs'' для работы со списком файловой информации, пользующийся числом монтирований с помощью ''awk''. '''НБ'''
 +
 +
===Финты ''Fuser''===
 +
 +
'''В:''' ''Пытаясь воспользоваться утилитой '''fuser''' в своей системе SUSE Linux Eneterprise Server 10 SP1 (x86-64), наткнулся на непонятную вещь: команда '''fuser /home''' (каталог не важен, равно как и файл) «зависает» намертво, помогает только '''kill -9'''. Почему такое может происходить?''
 +
 +
'''Дмитрий Сидоров'''
 +
 +
'''О:''' Подобное поведение характерно для случаев, когда имеются примонтированные удаленные файловые системы (например, ''NFS'') – нет ли у вас таких? Если есть, проверьте, доступны ли ''NFS''-ресурсы и, при необходимости, отмонтируйте их. Если и это не получается – перезагрузите систему. '''ВС'''
 +
 +
===IRC-бот и куча забот===
 +
 +
'''В:''' ''Огромное спасибо за статью про IRC-бота на Perl из [[LXF100-101:Программирование на Perl|LXF100/101]]! Только прочитал, сразу опробовал – работает. Вот только я не совсем понял, зачем жестко прописывать каждую команду. Я немного модифицировал код:''
 +
 +
sub on_msg {
 +
    $self = shift;
 +
    $event = shift;
 +
    if ($event->nick eq $botadmin) {
 +
      foreach $arg ($event->args) {
 +
          @output = `$arg`;
 +
          foreach $line (@output) {
 +
            $self->privmsg($botadmin, $line);
 +
            sleep(1);
 +
          }
 +
      }
 +
    }
 +
}
 +
 +
''и у меня появились два вопроса. Во-первых, как сделать так, чтобы был виден «сервисный» вывод консоли? Например, когда я пытался запустить проигрыватель, в терминале появилось следующее:''
 +
 +
sh: ls /media: Нет такого файла или каталога
 +
ls: невозможно получить доступ к /fast/music/music/:
 +
Нет такого файла или каталога
 +
VLC media player 0.8.6d Janus
 +
 +
''а в чате ничего такого не было. И второе: как заставить бота говорить по-русски? Я использую Fedora 8.''
 +
 +
'''Security XIII'''
 +
 +
'''О:''' Определенный резон в том, чтобы ограничить число команд, доступных боту, есть: представьте, что кто-нибудь отдаст вашей реализации команду ''rm -rf /''. Конечно, для этого злоумышленнику придется украсть Ваш ник, но это не так уж и трудно. Невключение потенциально опасных команд в список понимаемых ботом – просто дополнительная линия защиты.
 +
 +
Что же касается «сервисного вывода», а говоря конкретнее – сообщений об ошибках, вы не видите их потому, что обратные кавычки (`'''$arg'''`) присваивают
 +
переменной '''@output''' лишь то, что было отправлено командой в стандартный вывод ('''stdout'''). Сообщения об ошибках, как правило, отсылаются на '''stderr''', поэтому, чтобы видеть их в окне чата, надо перенаправить '''stderr''' в '''stdout'''. Это делается так:
 +
 +
@output = `$arg 2>&1`;
 +
 +
Кстати, заменив '''&1''' на '''/dev/null''', Вы полностью избавитесь от «ругани» вызываемых ботом утилит.
 +
 +
Касательно русского языка... В IRC нет жесткого понятия кодировки – сервер просто воспринимает весь посланный текст как набор восьмибитных символов. Поскольку по умолчанию Fedora использует
 +
Unicode-локаль, рискну предположить, что '''use utf8;''' в начале скрипта должно Вам помочь. Главное –
 +
убедиться, что Ваш клиент и бот-скрипт используюодну и ту же кодировку: в ''XChat'' она настраивается, а скрипт нужно просто сохранить в нужном наборе символов. Скажем, никто не мешает сохранить его как KOI8-R и выставить такую же кодировку в ''X-Chat''. '''ВС'''
 +
 +
===* Трудности перевода===
 +
 +
'''В:''' ''Я установил на нескольких компьютерах фирмы Mandriva 2007, однако, вскоре обнаружилось что архиватор '''Ark''', входящий в нее, отказывает «понимать» архивы в формате '''RAR'''. В других дистрибутивах такого не происходит. Подскажите, пожалуйста, какие ещё программыархиваторы, кроме '''Ark''', имеются в Linux и где я могу их взять?''
 +
 +
'''raaf'''
 +
 +
'''О:''' ''Ark'' прекрасно работает с ''RAR''-архивами: судя по всему, в вашей установке Mandriva просто отсутствует утилита ''unrar'', используемая ''Ark'' для распаковки. ''Unrar'' есть в репозитории Penguin Liberation Front (PLF), который можно добавить, проследовав по ссылке http://easyurpmi.zarb.org. На первом этапе, укажите 2007 в качестве «Версии Mandrake» и требуемую архитектуру (скорее всего, сгодится выбор по умолчанию – i586). На втором этапе выберите подходящее зеркало и, наконец, введите сгенерированные системой команды в root-терминале. После этого вы сможете установить ''unrar'' (а также множество других полезных программ, не доступных в Mandriva по умолчанию) командой ''urpmi unrar'' или через '''Центр управления Mandriva'''.
 +
 +
Из других программ-архиваторов (а точнее сказать – графических оболочек, поскольку реальная работа все равно выполняется утилитами командой
 +
строки вроде ''unrar'') для Linux следует упомянуть ''PeaZip'' (http://peazip.sourceforge.net). В отличие от ''Ark'', он базируется на инструментарии ''GTK+'', однако, должен тоже хорошо вписаться в Ваш рабочий стол Mandriva Linux. ''PeaZip'' доступен как в виде RPM-пакета, так и в форме универсального двоичного инсталлятора, не говоря уж об исходных текстах. Однако, как уже было сказано выше, смена оболочки не заставит ''RAR''-архивы поддерживаться волшебным образом – Вам все равно потребуется установить ''Unrar''. '''ВС'''
 +
 +
===* Нету модуля Perl===
 +
 +
'''В:''' ''Я попытался установить '''Evince''' с LXFDVD99. Скопировав приложение и откомпилировав и установив библиотеку '''XML2''', я попытался сконфигурировать '''Evince''' и получил следующее сообщение об ошибке.
 +
 +
Checking for intltool >=
 +
0.35.0....0.35.5 found
 +
checking for perl ..../usr/local/bin/perl
 +
checking for XML::Parser
 +
configuration error XML:: Parser
 +
perl module is required for intltool.
 +
 +
''Затем я попробовал загрузить '''Perl''' с раздела Разработка DVD. Linux сообщил про ошибку ввода/вывода, а Windows – про сбой CRC. Те же сообщения я получил, когда вставил DVD в другой ноутбук. Я скачал и установил последнюю версию '''Perl''', но вышло опять то же самое.''
 +
 +
''Не считаете ли вы, что это связано с проблемами при чтении DVD? Другие разделы на DVD тоже не читаются, и как мне получить замену здесь, в Австралии?''
 +
 +
'''Дэвид Дэвис [David Davies]'''
 +
 +
'''О:''' Ошибки чтения Вашего DVD скорее всего, вызваны повреждением при транспортировке. Другие читатели из Австралии сообщали нам об этой проблеме, и мы пытаемся ее решить. Пока же мы пошлем Вам диск на замену.
 +
 +
Вторая проблема в том, что у Вас отсутствует модуль ''Perl XML::Parser''. Он не является частью стандартного пакета ''Perl'', а идет как дополнительный модуль, поэтому переустановка ''Perl'' не поможет. Прежде всего надо искать модуль ''Perl'', как и вообще что угодно, в репозитории Вашего дистрибутива. Он по идее должен быть там, но если нет, то модули ''Perl'' можно установить со '''CPAN''' (The Comprehensive Perl Archive Network), на сайте http://www.cpan.org. Подключившись к Интернет, запустите данную команду от имени root для установки ''XML::Parser:''
 +
 +
perl -MCPAN -e ‘install XML::Parser’
 +
 +
Существуют и другие способы установки модулей со ''CPAN'' – см. FAQ на http://www.cpan.org/misc/cpan-faq.html для дополнительной информации.

Версия 13:34, 12 марта 2009

Содержание

Oтветы

Есть вопрос по Open Source? Пишите нам по адресу: answers@linuxformat.ru

Мониторим сервер

В: У меня три сервера на Ubuntu, где запущены различные сервисы (Apache, MySQL, FTP, и т.д.). Начинка у этих компьютеров не очень надежная, вот я и думаю, нет ли какого-нибудь открытого ПО, способного наблюдать за несколькими серверами. Хорошо бы оно выводило результат на сайт, чтобы я мог получать доступ к нему с КПК через интернет.

Надо ли мне самому писать код, или уже есть что-то готовое?

Боб [Bob]

О: Существует множество программ, делающих то, что Вы хотите, с различной степенью сложности. Самая суровая в этом списке – Nagios (http://www.nagios.org), но для Ваших нужд будет вполне достаточно чего-нибудь попроще.

Monit (http://www.tildeslash.com/monit) в основном предназначена для мониторинга программ на локальной машине, но может наблюдать и за удаленными серверами. Лучше запускать ее не на той машине, которую надо контролировать, поскольку проблемы с сервером «уронят» также и монитор, а Вы будете продолжать думать, что все в порядке. Можно указать Monit, какие сервисы тестировать и что делать, если сервиc рухнул. Чтобы не пришлось лихорадочно вспоминать, проверили ли Вы web-страницу на предмет новых проблем – Monit может известить Вас по электронной почте. Вдобавок она умеет выполнять внешние программы или перезапускать службы. Последний вариант предназначен для локальных сервисов, но можно сделать перезапуск командой

ssh remote.server /etc/init.d/service restart

при условии, что Вы настроили SSH-аутентификацию по ключу и вводить пароль не придется. Возможны и другие внешние действия – например, при помощи скрипта xsend из xmpppy (http://xmpppy.sourceforge.net) отправить мгновенное сообщение на Ваш карманный компьютер и дать Вам знать немедленно, или отправить электронной почтой письмо на SMS-шлюз, уведомив Вас текстовым сообщением. Все зависит от того, насколько срочно Вам нужно знать, что возникла проблема, и каким образом Вы хотите узнавать об этом.

Вот выжимки из рабочего файла конфигурации:

 set mailserver mail.example.com
 set alert me@example.com
 set httpd port 2812 and allow admin:monit
 check host slartibartfast with address 192.168.13.27
   if failed icmp type echo count 3 with timeout 3 seconds then alert
   if failed port 3306 protocol mysql with timeout 15 seconds then alert
   if failed url http://example.com then alert

Первая часть задает глобальные настройки – адрес получателя письма-предупреждения и включение web-интерфейса. Это позволяет соединяться отовсюду, но контролируется именем учетной записи, так что можете использовать КПК, где бы Вы ни были. Второй блок производит три теста на удаленном хосте и посылает письмо с предупреждением при любых сбоях. Если вы хотите, чтобы Monit перезапускала сервисы, добавьте по блоку на каждый сервис, по следующему образцу:

 check host example.com with address 192.168.1.27
  if failed port 3306 protocol mysql with timeout 15 seconds
    then exec “/usr/bin/ssh root@example.com /etc/init.d/mysql restart”

Команда exec тоже посылает предупреждение, и Вы узнаете, если сервис потерпит крах и будет перезапущен.

У Monit также есть web-интерфейс, так что можете время от времени выполнять проверку и убеждаться, что все работает. Monit не просто приглядывет за серверами: она может проверить нагрузку на процессор или свободное дисковое пространство или отследить изменения в содержании или атрибутах файлов и каталогов. Примерный файл конфигурации охватывает самое основное – просто раскомментируйте и отредактируйте те части, которые хотите использовать.

Автомонтирование с Udev

В: У меня есть автомобильный компьютер с USB-портом на передней панели, и я загрузил на него облегченную версию PCLinuxOS. Мне хотелось бы, чтобы Udev (на init level 3) автоматически монтировал USB-накопители, подключаемые к USB-порту в /media/removable. Я попытался написать следующее правило, но оно не работает:

SUBSYSTEMS==”usb”, ATTRS{product}==”Mass Storage
Device”, SYMLINK:=”removable”,
RUN+=”/bin/mount /dev/removable /media/removable”

Вы видите какие-нибудь ошибки в правиле? Я перечитал несколько учебников про Udev, которые привели меня к выводу, что это должно работать, но /dev/removable не создается.

Ноэль [Noel]

О: Первый шаг – попробовать правило без команды RUN, чтобы убедиться в его работоспособности. Только когда /dev/removable будет создан, и Вы сможете запустить команду mount вручную, можно добавить ее в правило. Udev умеет применять изменения в файле правил без рестарта, поэтому достачно держать файл открытым в текстовом редакторе и модернизировать правила, без отключения и подключения устройства.

Когда Вы пишете правила Udev, помните, что атрибуты, которые Вы применяете, должны браться теми же самыми, которые выводит udevinfo. Если Вы хотите использовать USB-устройства хранения данных (которые не все имеют одинаковые атрибуты продукта), попробуйте

SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h]1”,
SYMLINK:=”removable”, RUN+=”/bin/mount /dev/removable /media/removable”

Это правило смонтирует первый раздел любого USB-накопителя при подсоединении. Вам не надо создавать символическую ссылку с /dev/removable в правиле, которое монтирует устройство, хотя ее можно применять в других случаях, так что Ваше правило упрощается до

SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h]1”,
RUN+=”/bin/mount /dev/%k /media/removable”

потому что %k содержит имя, определенное ядром для этого устройства, например, sda1.

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

ATTRS{model}!=”superduper 500G”

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

SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h][0-9]”,
SYMLINK:=”removable%n”, RUN+=”/usr/bin/pmount /dev/removable%n”

Это правило использует не программу mount, а более сложную pmount, применяемую большинством автомонтировщиков. Одно из ее преимуществ – в качестве аргумента ей нужен только узел устройства, и она создает точку монтирования в /media автоматически. Ее коллега, pumount, удаляет точку монтирования при размонтировании, сохраняя /media в чистоте. %n в вышеуказанном правиле заменяется на число, определенное ядром, так что третий раздел (sda3) будет смонтирован в /media/removable3. НБ

USB в сериале

В: Я бы с радостью вышвырнул Windows и запустил чистую Linux-систему. Уже нашел эквивалентное ПО для всего, что мне надо, и с помощью Live DVD убедился, что моя система будет работать. Но я готовлюсь к экзамену на Cisco CCNA и использую репликатор последовательного порта, подключенный к USB-порту на моей машине. На другом конце последовательный кабель затем подключается к консольному порту на маршрутизаторе Cisco через перекрестный кабель serial-to-RJ11.

Знаете ли вы, как заставить USB-репликатор последовательного порта работать в Linux, и не порекомендуете ли замену приложениям Hyper Terminal и TFTP-серверу SolarWinds?

Кристофер Смит [Christopher Smith]

О: Под репликатором Вы, видимо, подразумеваете конвертор. Репликатор порта обычно соединяет порт с выходом того же типа, как для док-станции ноутбука. Существует масса конверторов USB-to-serial, и большинство из них поддерживается Linux. У меня самого таких два, оба куплены на eBay и используют различные чипсеты и драйверы, но прекрасно работают под Linux. Ядро имеет набор модулей для поддержки этих устройств, которые должны автоматически загружаться, когда Вы подсоединяете конвертер. Перед присоединением, запустите следующую команду от имени суперпользователя (root) (в Ubuntu предварите ее sudo):

 tail -f /var/log/messages

Подключив устройство, Вы должны увидеть нечто подобное:

usbcore: registered new interface driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for ark3116
ark3116 5-2:1.0: ark3116 converter detected 
usb 5-2: ark3116 converter now attached to  ttyUSB0
usbcore: registered new interface driver ark3116

Как видите, это устройство использует модуль ark3116 и создает последовательное устройство на /dev/ttyUSB0. Чтобы узнать, какие последовательные USB-драйвера есть в Вашей системе, наберите

 ls -1 /lib/modules/$(unamer)/kernel/drivers/usb/serial

Если Ваше устройство не распозналось, получите его номер ID запуском команды lsusb и поищите на http://qbik.ch/usb/devices. Может быть, Ваше устройство не поддерживается (хотя это маловероятно) или Ваше ядро собрано без соответствующих модулей; в последнем случае придется пересобрать ядро, включив необходимый драйвер. Стандартная программа последовательного терминала для Linux – Minicom, она должна быть включена в Ваш дистрибутив. Есть целый ряд TFTP-серверов, включая Atftp (ftp://ftp.mamalinux.com/pub/atftp) и NetKit TFTP (ftp://ftp.uk.linux.org/pub/linux/Networking/netkit), а я предпочитаю использовать TFTP-сервер в dnsmasq (http://www.thekelleys.org.uk/dnsmasq). Посмотрите учебник по сетевой загрузке в LXF100/101 для дополнительной информации об использовании dnsmasq как TFTP-сервера. НБ

Вопросы компиляции

В: Я новичок в Linux и ценю решения «из коробки». Например, в моем Slackware я установил Filelight, прочитав файл Install и выполнив

./configure && make && su -c “make install”

потому что файл Install имеет смысл читать. Я получил январский номер 2008 (LXF100/101) и в рубрике HotPicks увидел программу NoteCase. Файл readme.txt смутил меня. Там говорится: «Просто распакуйте архив с содержимым и запустите программу. Пользователям Windows необходимо установить библиотеки GTK.»

Написанные строки «Просто распакуйте архив с содержимым и запустите программу» относятся к установке в Windows или Linux? Если они относятся к Linux, то в распакованном архиве notecase-1.7.4_src.tar.gz нет никаких исполняемых файлов.

Потом, там есть опции компиляции только для Ubuntu. Так как программы для Ubuntu работают в Gnome, можете ли вы сообщать в HotPicks, что приложение годится только под Gnome или KDE?

Я попытался запустить make и получил такое сообщение об ошибке:

/notecase-1.7.4# make
===> Compiling src/main.cpp
Package gnome-vfs-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gnome-vfs-2.0.pc’
to the PKG_CONFIG_PATH environment variable

Брайан [Brian]

О: Файл Readme для данного приложения довольно запутанный. Возможно, что один и тот же Readme используется и для исходного, и для двоичного архивов, и тот, который Вы пытались использовать – это архив с исходными текстами. Хотя инструкции по компиляции даны для Ubuntu, программа предназначена не только для Ubuntu. Из упоминания об Ubuntu также не следует автоматически, что программа для Gnome: Ubuntu вполне может работать и с KDE-программами, как, кстати, и с самим KDE. По сути, это GTK-приложение, хоть оно и требует установленного gnome-vfs.

Для приведенной Вами ошибки есть две возможных причины: или у Вас не установлен gnome-vfs, или он установлен, но pkgconfig не осведомлен о нем. В последнем случае, проблему должна решить установка значения PKG_CONFIG_PATH в правильную директорию перед запуском make:

 locate gnome-vfs-2.0.pc
 export PKG_CONFIG_PATH=”каталог из вывода первой команды”
 make

Как альтернатива, существует двоичный пакет. Наш DVD содержит пакеты RPM и Debian, а на сайте NoteCase имеются готовые двоичные tar-архивы, которые надо просто распаковать в директорию root в Вашей файловой системе:

 tar xf notecase-1.7.6.tar.gz -C /

Альтернатива загрузке двоичного пакета, и один из полезных способов, когда нет двоичных архивов, но есть RPM, заключается использовании команды rpm2targz для перехода от RPM к tgz-архиву. Заметьте, что при таком подходе Вам придется самому разрешать зависимости пакета, поэтому данный метод лучше использовать только в тех случаях, когда исходные тексты недоступны. ПХ

Подкачка мнений

В: Во-первых, я хотел бы сказать, что я новичок в мире Linux. Несколько раз слышал, что файл подкачки [swap] должен быть в два раза больше размера ОЗУ, но не более 512 МБ. А в уроке по загрузке в LXF100/101 (пример 2) автор упоминает… «2-ГБ раздел hda2 для подкачки». Я запутался. Может, я неправильно прочел?

Второе: можно ли на отдельной машине запустить образ Linux из-под Linux? Я знаю, что для этого существуют и другие способы, типа запуска VMware или VirtualBox, но возможно ли это в принципе?

Лерой Морилл [LeRoy Morrill]

О: Это один из тех вопросов, на которые десять разных «экспертов» дадут дюжину разных ответов. Традиционно рекомендуется раздел подкачки в два раза больше размера ОЗУ, но этот совет восходит ко временам, когда у большинства машин ОЗУ было всего 64–128 МБ. Некоторые утверждают, что при современном оборудовании, где памяти так много, большой раздел подкачки – излишество. На это приводится контр-аргумент: современные приложения способны сожрать столько памяти, что swap актуален как никогда. Если Вы рассчитываете делать работу с интенсивным использованием памяти, сделайте swap побольше. Трата одного-двух гигабайт на диске не сравнится с потерями от зависания компьютера, если Вы выберете всю память при сессии видеомонтажа [наиболее вероятный сценарий в этом случае – принудительное завершение «прожорливого» приложения; кроме того, swap можно иметь не только в виде выделенного раздела, но и файла, который создается вручную по мере необходимости, – прим. др. эксп.].-

Некоторые системы используют tmpfs в директории /tmp, ускоряя систему за счет хранения временных файлов в памяти. Они, как правило, невелики, но некоторые программы выкладывают в /tmp и большие файлы, и припасти дополнительное место на диске на случай переполнения – дело хорошее. Кроме того, распространена практика использования раздела подкачки для засыпания с сохранением на диск, особенно на ноутбуках. В этом случае раздел подкачки должен быть по меньшей мере равен ОЗУ. Я бы порекомендовал использовать для пространства подкачки раздел в 1–2 раза больше ОЗУ, особенно сейчас, когда размеры жестких дисков растут даже быстрее, чем ОЗУ.

Хотя и можно запустить дистрибутив Linux в окне прямо из-под своего дистрибутива – в конце концов, это можно сделать и в Windows – я не знаю ни одного дистрибутива, специально предназначенного для этой цели. Это, наверно, потому, что существует столько вариантов запуска виртуальной машины, на которой может работать любой дистрибутив, что создание дистрибутива, заточенного на такую задачу, будет довольно бессмысленным (но если кто знает такой дистри- бутив/приложение, пожалуйста, сообщите нам). При наличии выбора между VMware, VirtualBox, Qemu и Xen, у Вас уже есть достаточно возможностей для Linux в Linux, и это более надежно, так как виртуальная машина защищает хост от процессов гостевой системы. НБ

Xubuntu бунтует

В: Я хочу установить Xubuntu с диска LXF99 на компьютер без DVD-привода. Я скопировал файл xubuntu-7.04-alternate-i386.iso в мою домашнюю директорию и затем прожег CD с помощью Xfburn.

CD почему-то не загрузился на обоих моих старых компьютерах. Они вполне могут загружаться с CD: по факту, с CD установился Dapper и даже CentOS – но не Xubuntu, который я записал. Я сравнил хэш-суммы MD5 прожигаемого образа и файла, который я скопировал в домашнюю директорию, и они одинаковые.

Грег Морзе [Greg Morse]

О: На это есть несколько возможных причин. Первое, что приходит на ум – Вы могли записать ISO-образ на диск в виде файла, а не как образ. Глядя на содержимое CD, Вы видите несколько файлов и каталогов, или просто один большой файл? Если один файл, то Вы просто скопировали образ. В Xfburn Вы должны использовать кнопку Burn CD Image.

Другим возможным виновником является диск. Используете ли Вы CD-RW диски? Если да, то попробуйте взять новый диск или CD-R. У дисков CD-RW отражательная способность ниже, и она еще ухудшается, когда диски царапаются при использовании. Это усугубляется сочетанием со старыми компьютерами, где лазеры привода потеряли мощность, а линза у них загрязнилась. Диски, может, и читаются, но так медленно, что BIOS успевает решить, что загрузочный CD в дисководе отсутствует, и перейти к загрузке с жесткого диска.

Одним из решений для дисков, отказывающихся загружаться, является использование Smart Boot Manager, который Вы найдете в каталоге Главное каждого LXFDVD. Запишите файл на дискету, загрузитесь с нее с CD в приводе, а затем выберите CD из меню Smart Boot Manager. НБ

Broadcom и SUSE

В: У меня OpenSUSE 10.1 на ноутбуке Dell M70, но я вынужден использовать NdisWrapper для моей беспроводной карты. Для ее активации я применяю modprobe, и все работает отлично. Вроде бы мой ноутбук использует беспроводной чипсет Broadcom.

Хотел бы перейти на OpenSUSE 10.3, но не могу заставить работать беспроводную карту – дистрибутив поставляется вместе с со встроенными драйверами, но я не знаю, как активировать беспроводную сеть, чтобы она заработала.

Дэвид Хилл [David Hill]

О: Ядро Linux сейчас включает родной драйвер для беспроводного чипсета Broadcom BCM43xx, но он сделан методом обратного инжиниринга и не cправляется со всеми вариантами этих чипсетов. Я использовал его с BCM4306-картами, и драйвера работали достаточно хорошо, но некоторые из более поздних чипсетов не работают (пока).

Вы можете увидеть самый свежий список поддерживаемых устройств на http://linuxwireless.org/en/users/Drivers/b43 (запустите lspci в терминале root, чтобы выяснить, что именно Вы используете). Если Ваш чипсет поддерживается, Вы сможете настроить его в Yast, хотя, возможно, придется убеждать SUSE загрузить драйвер при запуске. Если в выводе

lsmod | grep bcm

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

modprobe bcm43xx

и загрузите его, затем отредактируйте /etc/sysconfig/kernel, чтобы добавить bcm43xx к списку модулей в строку MODULES_LOADED_ON_BOOT, чтобы он загружался автоматически при включении ПК.

Если у Вас один из неподдерживаемых чипсетов, продолжайте использовать NdisWrapper, точно так же, как делали в SUSE 10.1. Тогда Вам, возможно, придется пресечь попытки родного драйвера захватить устройство и сначала добавить строку bcm43xx в черный список /etc/modprobe.d/blacklist. Затем настроить NdisWrapper, как Вы сделали в SUSE 10.1. ГМ

Fsckатнутая загрузка

В: Пытался загрузить мою Ubuntu Gutsy – и не смог. Я увидел Grub, выбрал ОС, и она перешла в экран загрузки с индикатором. Это продолжалось недолго, а затем вылез черный экран с курсором в верхнем левом углу экрана. Там он и остался, и на этом все кончилось.

Я подозреваю, что это связано с регулярной проверкой fsck: возможно, она пытается выполниться, но не может. Если это так, что мне делать? По-моему, Ubuntu выполняет проверку fsck при каждой 27-й загрузке. Я исправил дело, загрузившись в режиме восстановления и заставив fsck запуститься, но это ведь снова приключится, не так ли? Как остановить эти каждые 27 раз?

SpecialStuff

О: Экраны загрузки очень красивы, но они также скрывают любые сообщения об ошибках, которые система хочет показать Вам. Некоторые дистрибутивы позволяют удалить заставку нажатием клавиши, как правило, Esc или F2, но в Ubuntu теперь этого нет. Вы можете убрать этот экран вообще, изменив параметры загрузки. Когда появится надпись “Press Esc to enter the menu” (Нажмите Esc для входа в меню), сделайте это. Затем нажмите E для редактирования, выделите строку kernel и нажмите Е снова. Удалите quiet splash в конце этой строки и нажмите B+Enter для загрузки с измененными значениями. Теперь Вы должны увидеть все загрузочные сообщения и определить, что мешает процессу. Внесенные изменения являются временными, но Вы можете отредактировать /boot/grub/menu.lst и сделать их постоянными, или скопировать блок текущей загрузки и изменить его, чтобы получить выбор: загружаться с экраном или без.

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

Один из способов обойтись без автоматического запуска fsck заключается в регулярном запуске его вручную, чтобы эти 27 загрузок никогда не выполнялись без проверки. Вы также можете использовать tune2fs для установки интервалов между проверками. Команды

tune2fs -c 0 /dev/что_то
tune2fs -i 2w /dev/что_то

будут игнорировать cчетчик подключений первой командой, и проверять каждые две недели второй. Отключать проверки совсем крайне неразумно: тогда повреждения файловой системы могут втихомолку накапливаться, пока не произойдет серьезный сбой. А по-умному, следует добавить нечто вроде этого к ежедневному скрипту Cron:

 #!/bin/sh
MOUNTS=”$(tune2fs -l /dev/whatever | awk
‘/^Mount count/ {print $3}’)
if [[ $MOUNTS > 20 ]]
then
echo “dev/whatever has been mounted
$MOUNTS times since the last check, run fsck
on it now.”
 fi

Он отправит Вам письмо, когда счетчик монтирования превысит 20 и пора будет запустить fsck вручную. Вторая строка выглядит сложной, но это просто запуск tune2fs для работы со списком файловой информации, пользующийся числом монтирований с помощью awk. НБ

Финты Fuser

В: Пытаясь воспользоваться утилитой fuser в своей системе SUSE Linux Eneterprise Server 10 SP1 (x86-64), наткнулся на непонятную вещь: команда fuser /home (каталог не важен, равно как и файл) «зависает» намертво, помогает только kill -9. Почему такое может происходить?

Дмитрий Сидоров

О: Подобное поведение характерно для случаев, когда имеются примонтированные удаленные файловые системы (например, NFS) – нет ли у вас таких? Если есть, проверьте, доступны ли NFS-ресурсы и, при необходимости, отмонтируйте их. Если и это не получается – перезагрузите систему. ВС

IRC-бот и куча забот

В: Огромное спасибо за статью про IRC-бота на Perl из LXF100/101! Только прочитал, сразу опробовал – работает. Вот только я не совсем понял, зачем жестко прописывать каждую команду. Я немного модифицировал код:

sub on_msg {
    $self = shift;
    $event = shift;
    if ($event->nick eq $botadmin) {
      foreach $arg ($event->args) {
         @output = `$arg`;
         foreach $line (@output) {
            $self->privmsg($botadmin, $line);
            sleep(1);
         }
      }
    }
}

и у меня появились два вопроса. Во-первых, как сделать так, чтобы был виден «сервисный» вывод консоли? Например, когда я пытался запустить проигрыватель, в терминале появилось следующее:

sh: ls /media: Нет такого файла или каталога
ls: невозможно получить доступ к /fast/music/music/:
Нет такого файла или каталога
VLC media player 0.8.6d Janus

а в чате ничего такого не было. И второе: как заставить бота говорить по-русски? Я использую Fedora 8.

Security XIII

О: Определенный резон в том, чтобы ограничить число команд, доступных боту, есть: представьте, что кто-нибудь отдаст вашей реализации команду rm -rf /. Конечно, для этого злоумышленнику придется украсть Ваш ник, но это не так уж и трудно. Невключение потенциально опасных команд в список понимаемых ботом – просто дополнительная линия защиты.

Что же касается «сервисного вывода», а говоря конкретнее – сообщений об ошибках, вы не видите их потому, что обратные кавычки (`$arg`) присваивают переменной @output лишь то, что было отправлено командой в стандартный вывод (stdout). Сообщения об ошибках, как правило, отсылаются на stderr, поэтому, чтобы видеть их в окне чата, надо перенаправить stderr в stdout. Это делается так:

@output = `$arg 2>&1`;

Кстати, заменив &1 на /dev/null, Вы полностью избавитесь от «ругани» вызываемых ботом утилит.

Касательно русского языка... В IRC нет жесткого понятия кодировки – сервер просто воспринимает весь посланный текст как набор восьмибитных символов. Поскольку по умолчанию Fedora использует Unicode-локаль, рискну предположить, что use utf8; в начале скрипта должно Вам помочь. Главное – убедиться, что Ваш клиент и бот-скрипт используюодну и ту же кодировку: в XChat она настраивается, а скрипт нужно просто сохранить в нужном наборе символов. Скажем, никто не мешает сохранить его как KOI8-R и выставить такую же кодировку в X-Chat. ВС

* Трудности перевода

В: Я установил на нескольких компьютерах фирмы Mandriva 2007, однако, вскоре обнаружилось что архиватор Ark, входящий в нее, отказывает «понимать» архивы в формате RAR. В других дистрибутивах такого не происходит. Подскажите, пожалуйста, какие ещё программыархиваторы, кроме Ark, имеются в Linux и где я могу их взять?

raaf

О: Ark прекрасно работает с RAR-архивами: судя по всему, в вашей установке Mandriva просто отсутствует утилита unrar, используемая Ark для распаковки. Unrar есть в репозитории Penguin Liberation Front (PLF), который можно добавить, проследовав по ссылке http://easyurpmi.zarb.org. На первом этапе, укажите 2007 в качестве «Версии Mandrake» и требуемую архитектуру (скорее всего, сгодится выбор по умолчанию – i586). На втором этапе выберите подходящее зеркало и, наконец, введите сгенерированные системой команды в root-терминале. После этого вы сможете установить unrar (а также множество других полезных программ, не доступных в Mandriva по умолчанию) командой urpmi unrar или через Центр управления Mandriva.

Из других программ-архиваторов (а точнее сказать – графических оболочек, поскольку реальная работа все равно выполняется утилитами командой строки вроде unrar) для Linux следует упомянуть PeaZip (http://peazip.sourceforge.net). В отличие от Ark, он базируется на инструментарии GTK+, однако, должен тоже хорошо вписаться в Ваш рабочий стол Mandriva Linux. PeaZip доступен как в виде RPM-пакета, так и в форме универсального двоичного инсталлятора, не говоря уж об исходных текстах. Однако, как уже было сказано выше, смена оболочки не заставит RAR-архивы поддерживаться волшебным образом – Вам все равно потребуется установить Unrar. ВС

* Нету модуля Perl

В: Я попытался установить Evince с LXFDVD99. Скопировав приложение и откомпилировав и установив библиотеку XML2, я попытался сконфигурировать Evince и получил следующее сообщение об ошибке.

Checking for intltool >=
0.35.0....0.35.5 found
checking for perl ..../usr/local/bin/perl
checking for XML::Parser
configuration error XML:: Parser
perl module is required for intltool.

Затем я попробовал загрузить Perl с раздела Разработка DVD. Linux сообщил про ошибку ввода/вывода, а Windows – про сбой CRC. Те же сообщения я получил, когда вставил DVD в другой ноутбук. Я скачал и установил последнюю версию Perl, но вышло опять то же самое.

Не считаете ли вы, что это связано с проблемами при чтении DVD? Другие разделы на DVD тоже не читаются, и как мне получить замену здесь, в Австралии?

Дэвид Дэвис [David Davies]

О: Ошибки чтения Вашего DVD скорее всего, вызваны повреждением при транспортировке. Другие читатели из Австралии сообщали нам об этой проблеме, и мы пытаемся ее решить. Пока же мы пошлем Вам диск на замену.

Вторая проблема в том, что у Вас отсутствует модуль Perl XML::Parser. Он не является частью стандартного пакета Perl, а идет как дополнительный модуль, поэтому переустановка Perl не поможет. Прежде всего надо искать модуль Perl, как и вообще что угодно, в репозитории Вашего дистрибутива. Он по идее должен быть там, но если нет, то модули Perl можно установить со CPAN (The Comprehensive Perl Archive Network), на сайте http://www.cpan.org. Подключившись к Интернет, запустите данную команду от имени root для установки XML::Parser:

perl -MCPAN -e ‘install XML::Parser’

Существуют и другие способы установки модулей со CPAN – см. FAQ на http://www.cpan.org/misc/cpan-faq.html для дополнительной информации.

Персональные инструменты
купить
подписаться
Яндекс.Метрика