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

LXF76:Вопрос? Ответ!

Материал из Linuxformat
Версия от 06:55, 21 июня 2008; Kryver (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Вопрос? Ответ!

Вы завязли в какой-то проблеме и HOWTO не помогают? Почему бы не написать нам? Наши эксперты помогут в решении самых сложных проблем.

Установка Gnome

Вопрос

На моем старом ноутбуке раньше был Windows 98. Я установил Gnome LiveCD с декабрьского диска LinuxFormat. Он идеально подходит для моих нужд, но слишком долго загружается. Можно ли как-нибудь перегнать его на жесткий диск? Думаю, что нет, потому что никакой программы установки я не обнаружил.

Проблема Linux в том, что чем дальше, тем он сложнее. Тем не менее, этот дистрибутив показался мне идеальным для людей, которые работают на старых компьютерах. Гарольд Кларк (Harold Clark)

Ответ

Вы правы, этот дистрибутив невозможно установить на жесткий диск, да он и не для этого его сделали только для демонстрации работы Gnome 2.12, на основе дистрибутива Ubuntu. К счастью, сам Ubuntu доступен в виде установочного диска. Это отличный дистрибутив, который за короткое время сумел завоевать симпатии пользователей по всему миру. Скачать образ установочного диска можно с http://www.ubuntulinux.org.

Если же у Вас нет возможности скачать такой объем, закажите копию компакт-диска Ubuntu, их бесплатно высылают по всему миру [и в Россию тоже - см. http://www.shipit.ubuntulinux.org; если надумаете заказывать, заполняйте все поля транслитом. - прим. переводчика]. Не забывайте также, что Ubuntu поставлялся на диске с январским номером журнала. Для вашего ноутбука подойдет версия i386. Внешний вид среды Gnome в Ubuntu немного отличается от того, что Вы видели на LiveCD (кстати, его можно переделать), однако работает он точно так же.

Вполне естественно, что программное обеспечение постоянно развивается и становится сложнее, обрастая новыми функциями. Это касается и двух самых популярных графических сред для Unix: KDE и Gnome. Но наряду с ними существует множество простых и быстрых оконных менеджеров. Если Вам не нужны <рюшечки>, увешивающие KDE и Gnome, попробуйте IceWM, XFce4 и Fluxbox. Вы можете установить их в Ubuntu, воспользовавшись менеджером пакетов Synaptic. НБ

BIOS с дискеты

Вопрос

У меня HP Omnibook 6000, на котором установлен Mandrake 10.0. При перезагрузке машина намертво зависает. Я поискал в сети, и нашел решение этой проблемы: нужно обновить BIOS.

Первая проблема, с которой я столкнулся - образ диска содержится в InstallShield-инсталляторе, который надо запустить в Windows и создать загрузочную дискету. Но у меня-то только Linux! Вторая проблема: на моем ноутбуке нет дисковода, только CD/DVD-привод. Можно ли как-нибудь извлечь образ дискеты из инсталлятора и создать с его помощью загрузочный компакт-диск? Педро Блом (Pedro Blom)

Ответ

Некоторые инсталляторы представляют собой самоизвлекающиеся zip-архивы, но, к сожалению, это не ваш случай. Придется все-таки поискать Windows машину и создать загрузочную дискету на ней. Потом сделайте образ дискеты, для этого пригодится программа rawwritewin.exe с нашего диска (директория Essentials/Rawwrite). Полученный образ скопируйте на ноутбук.

Вторая проблема легко решается путем вставки образа дискеты в загрузочный сектор компакт-диска (именно так изготовляются загрузочные CD). Допустим, образ дискеты называется bios.img. Создайте для него отдельную директорию biosupdate и скопируйте туда этот образ.

После этого введите команду:

mkisofs -b bios.img -c bios.cat -o biosupdate.iso biosupdate

Все, теперь у Вас есть образ загрузочного компакт-диска, который можно записать на диск с помощью Cdrecord или другой программы прожига CD. ISО-образ диска можно создать с помощью K3b, выбрав файл boot.img в качестве загрузочного образа.

Альтернатива - попробовать Ultimate Boot CD (http://www.ultimatebootcd.com). Это загрузочный диск, который содержит больше сотни образов дискет с разными диагностическими утилитами. На сайте разработчиков Вы можете найти инструкции по <вживлению> вашего образа в Ultimate Boot CD. НБ

Домашнее разделение

Вопрос

Наслушавшись хороших отзывов о PCLinuxOS и о <придуркозащищенной> процедуре установки этого дистрибутива, я решил попробовать его. Достал версию 89a - мне понравилось, как она работает с CD, и я решил установить ее на компьютер. Установка прошла отлично: никаких зависаний, никаких сложных вопросов, на которые бы я не смог ответить. Тем не менее, после перезагрузки не работает KDE - появилось сообщение о невозможности запуска KDE и совет проверить мой DCOP_SERVER.

А что такое мой DCOP_SERVER и как его проверить? Раз уж версия обещала защиту от дурака, то пусть бы и позаботилась, чтоб все само работало.

Хотел вернуться к Mandriva, но мои настройки из-за PCLinuxOS как-то поменялись. С форума LXF

Ответ

Похоже, что Вы указали один и тот же раздел для домашнего каталога (/home) в обоих дистрибутивах. Разделение одного /home между несколькими дистрибутивами допускается, но сопряжено с некоторыми проблемами. Несмотря на то, что имена пользователей в разных дистрибутивах могут совпадать, их идентификаторы (UID) обычно неодинаковы. Так как система распознает пользователей не по именам, а по идентификаторам, то пользователь user в PCLinuxOS скорее всего не имеет прав записи в домашний каталог пользователя user в другом дистрибутиве. При запуске DCOP-сервер пытается создать файл сокета в ~/.kde, и в случае неудачи DCOP не сможет нормально запуститься.

DCOP - это протокол межпроцессорного взаимодействия, с его помощью программы могут обмениваться данными между собой. DCOP используется в KDE: например, если Вы щелкнете по ссылке на PDF-файл, DCOP передаст данные об этой ссылке либо в KMail, либо в Konqueror.

Правильнее всего будет использовать отдельный домашних каталог для каждого дистрибутива. Например, пользователь fred будет иметь два разных домашних каталога для различных дистрибутивов: /home/fred-mandriva и /home/fred-pclinuxos. Чтобы иметь нормальный доступ к обоим каталогам в любом дистрибутиве, Вам нужно, чтобы идентификаторы пользователя и группы (UID и GID) в этих системах совпадали. Mandriva начинает выдавать пользовательские UID, начиная с 500, в то время как PCLinuxOS - с 501, потому что идентификатор 500 закреплен за пользователем guest.

Вам нужно отредактировать файлы /etc/passwd и /etc/group. /etc/passwd имеет следующий вид:

username: x:UID;GID:Настоящее имя:/ home/username:/bin/bash

А вот /etc/group:

groupname:x:GID

Сделайте UID и GID в PCLinuxOS такими же, как в Mandriva, после чего перезагрузитесь. На всякий случай поменяйте права на домашнюю директорию:

chown -R username: /home/username*

НБ

Забота на проводе

Вопрос

Я недавно собрал новый компьютер для своей мамы и установил SUSE 9.3. Она живет в ста километрах от меня, могу ли я с помощью Krdc/Krfb подключиться к ее компьютеру и помочь ей, если у нее возникнут проблемы? У нас обоих двухмегабайтные ADSL-маршрутизаторы и статические IP-адреса. Можете ли вы кратко описать, как действовать? Я пробовал найти ответ в Google, но нашел лишь руководство по администрированию Windows через локальную сеть. Джон, с форума LXF

Ответ

Krdc/Krfb можно воспользоваться через Интернет, но по умолчанию маршрутизатор будет блокировать соединение. Для начала проверьте, соединяются ли ваши компьютеры напрямую, если это возможно (если у Вас ноутбук, привезите его к маме). Обязательно установите пароль на соединение. Можно, конечно, обойтись и без пароля, но только внутри сети, надежно упрятанной за брандмауэром, а для машины, имеющей выход в Интернет, это, мягко говоря, непрактично.

Протокол VNC использует порты, начиная с 5900 (5900 для экрана 0, 5901 для экрана 1 и т.д.). Вам нужен только экран 0, так что откройте порт 5900 на роутере Вашей мамы, направьте его на мамин IP-адрес и запретите подключения к порту с любых IP-адресов, кроме вашего. Этим Вы обезопасите компьютер от попыток взломать пароль.

Теперь Вы сможете соединиться с маминым компьютером при помощи Krfb, используя адрес в форме a.b.c.d:0, где a.b.c.d - ее внешний IP. Для получения дополнительной информации посетите http://pcsupport.x-host.uni.cc/ip.php. НБ

Хромают пробелы

Вопрос

У меня на Gentoo полно директорий с документами в формате Microsoft Word, которые мне нужно перевести в текстовые файлы с помощью Antiword. Я написал скрипт, который конвертирует файлы *.doc в отдельной директории:

for i in `ls *.doc` ; do antiword $i >${i/doc/txt}; done

В нем есть пара недоработок (например, нет перехода во вложенные директории). Но главная проблема - невозможно обработать файлы, имена которых содержат пробелы, например 'file 1.doc'. Начинаются сообщения вроде:

<файл file не существует, невозможно открыть файл 1.doc>.

Как можно обойти эту проблему? Еще было бы здорово, если бы скрипт удалял исходные DOC-файлы после успешной переделки. С форума LXF

Ответ

Чтобы скрипт воспринимал file 1.doc как один файл, Вам нужно заключить его имя в двойные кавычки: тогда bash распознает имя правильно. Кроме того, нет необходимости использовать 'ls', ведь '*.doc' и так вернет все документы в текущем каталоге. Еще хорошо бы добавить к Antiword опцию '-i 1', которая предотвратит вставку графики в выходные тестовые файлы. Ваша команда примет вид:

for i in *.doc ; do antiword -i 1 <${i}>>>${i/doc/txt}>; done

Для обхода вложенных директорий лучше всего подойдет find:

find . -name <*.doc> | while read i; do antiword -i 1 ${i}> >>${i/doc/txt}>; done

find может также удалить DOC-файлы после конвертирования:

find . -name <*.doc> -exec rm <{}> \;

Удалятся все DOC-файлы, независимо от того, преобразовались они или нет. Чтобы убрать только успешно конвертированные исходники, понадобится

find . -name <*.doc> | while read i; do antiword -i 1 <${i}> > <${i/doc/txt}> && rm <${i}>; done

Команда find выведет список файлов с подходящими именами, который будет прочитан с помощью read; затем Antiword конвертирует каждый файл. Операция && означает, что команда rm выполнится только в случае успешного завершения предыдущей команды (antiword). НБ

Процесс по top

Вопрос

У меня свой маленький бизнес, и на моем выделенном сервере под управлением Red Hat Enterprise Linux 3 находятся web-сайты нескольких моих клиентов. Журналы access_log разбросаны по всей файловой системе. Как проще всего узнать, что происходит с HTTPD в данный момент? Если я запускаю top, я вижу несколько процессов HTTPD, съедающих изрядную долю процессорного времени, но я не знаю, как связать эти процессы с конкретными web-сайтами. Jen B (Джен Б)

Ответ

В дистрибутиве RHEL 3, сервер HTTPD поставляется вместе с mod_status - модулем Apache, который служит для мониторинга его состояния. Чтобы включить его, откройте /etc/httpd/conf/httpd.conf и раскомментируйте следующие строки:

<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from ваш_ip_адрес
</Location>

Полный отчет о состоянии сервера Вы получите, раскомментировав еще одну строку:

ExtendedStatus On

После перезапуска HTTPD-сервера Вы сможете просмотреть http://server.ip/server_status?refresh=5. Страница обновляется каждые пять секунд, сообщая следующую информацию:

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

(взято с http://httpd.apache.org/docs/2.0/mod/mod_status.html)

Хорошо бы ограничить список хостов, которые смогут подглядеть эту информацию. Лучше всего оставить правило по умолчанию: запрет всех хостов, кроме вашего. БК

В розыске - Zip

Вопрос

Недавно я попробовал несколько дистрибутивов, Mandrake и других (и множество LiveCD). Ни один из них не распознал мой старый дисковод Zip Plus, а у меня есть от него 42 диска по 100 МБ, с моими архивными файлами. С горя решил установить его вручную, отыскал мини-HOWTO, со ссылкой на сайт Дэвида Кэмпбелла (David Campbell, http://www.torgue.net), но сайт не отвечает. Я порылся в сети, но ничего подходящего не нашел. Можете ли вы мне помочь?

Zip-дисковод подключен с параллельному порту вместе с принтером Epson. Принтер распознается нормально. lsmod не обнаруживает модуля imm. Я знаю, многие скажут <да запишите архив на один DVD-диск> - но это не для меня.

Большая часть архива - мои инженерные программы, и я их все время обновляю, а Zip-диски просты и надежны. Что интересно, в Windows XP с установкой дисковода нет проблем. Вот такие вещи и мешают распространению Linux. Брайан Ричардс (Brian Richards)

Ответ

Дисковод Zip Plus можно подключать к параллельному порту и к SCSI. Проще всего подключить его к SCSI-адаптеру. Даже на дешевеньком десятидолларовом SCSI PCI-адаптере дисковод будет работать быстрее, чем с параллельным портом, причем не понадобится никаких драйверов. Если же SCSI - не вариант, тогда нужно использовать модуль imm. Сайт, на который Вы сослались, действительно больше не работает, но imm теперь входит в стандартное ядро, так что Вам не придется устанавливать его отдельно. И в Mandriva (2005 и 2006), и в Knoppix 4.0 он уже включен. Просто введите (от имени суперпользователя):

modprobe -v imm

После этого должны появиться сообщения о загруженных модулях: imm и, возможно, еще нескольких, от которых он зависит. Если во время загрузки модуля в дисководе был вставлен диск, то ему присвоится имя /dev/sda (скорее всего), в противном случае диск будет распознан во время вставки. Zip-дисководы используют SCSI-подсистему. Если у Вас подключены еще какие-нибудь накопители, использующие SCSI-подсистему (например, USB-носители), то имя /dev/sda будет занято. Тогда, чтобы узнать имя, присвоенное Zip-дисководу, выполните команду

tail -f /var/log/messages

и вставьте диск. Вы увидите что-нибудь наподобие

scsi0 : Iomega ZIP Plus drive
scsi : 1 host.
Vendor: IOMEGA Model: ZIP 100 PLUS Rev: J.66
Type: Direct-Access ANSI SCSI revision: 02
Detected scsi removable disk sda at scsi0, channel 0, id 6, lun 0
SCSI device sda: hdwr sector= 512 bytes. Sectors= 196608 [96 MB] [0.1 GB]
sda: Write Protect is off
sda: sda1

В данном случае дисководу присвоено имя /dev/sda, а вставленному в него диску - /dev/sda1.

Имеем право

Вопрос

Я работаю Windows-администратором в маркетинговой фирме. Наша фирма наняла несколько разработчиков для написания специализированного программного обеспечения, работающего под Red Hat Enterprise Linux. Сервера обслуживал другой Windows-администратор, разбирающийся в Linux, а он уволился. Так что программисты взяли на себя администрирование всех Linux-серверов. Поговорив с отставным коллегой, я узнал, что разработчики наплевательски относятся к безопасности сервера и открыли полный доступ даже к приложениям суперпользователя и закрытым каталогам.

Теперь этот сервер придется поддерживать мне. Как можно отследить изменения, произведенные разработчиками? Гэри (Gary)

Ответ

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

Например, с помощью RPM можно определить, какие файлы были модифицированы с момента установки. Запуск rpm - Va покажет все измененные файлы всех установленных RPM-пакетов. Для некоторых конфигурационных файлов это не страшно. Обратите внимание прежде всего на следующие сообщения:

  • M права доступа были изменены
  • 5 файл был изменен
  • U/G владелец/группа были изменены

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

# rpm --setperms <package>
# rpm --setugids <package>

БК

Данная база FoxPro

Вопрос

Недавно я перешел на Linux и нашел свободную замену большинству Windows-программ. Но так и не понял, чем читать и обрабатывать DBF-файлы, созданные в FoxPro. У меня есть база данных, к которой я подключался через ODBC-соединение в Windows.

Возможна ли работа с ней в Linux? Я использую Ubuntu и предпочел бы работать с Python и PHP. Дэниэл Бовитт (Daniel Bowett)

Ответ

Есть несколько способов работы с базами данных Xbase, созданными в FoxPro. Самое полное решение, видимо, Rekall. Это оболочка для баз данных, доступная и в коммерческой, и в GPL-версии. Доступ к базам Xbase в Rekall осуществляется через библиотеку XBSQL. GPL-версия доступна на http://www.rekallrevealed.org. Rekall можно автоматизировать сценариями на Python.

Другой вариант - Knoda (http://www.knoda.org), оболочка, работающая со множеством различных серверов баз данных.

Кроме того, Вы можете использовать библиотеки Xbase и XBSQL для написания своей собственной программы на PHP или Python. Однако наилучшим вариантом будет перевод Вашей базы данных в формат MySQL или PostgreSQL с помощью Rekall или XBSQL. Эти две СУБД имеют хорошую поддержку и множество web и GUI-оболчек и к ним можно получить доступ через командную строку или скрипт.

XBSQL для Ubuntu есть в репозитарии Universe. Выберите этот репозитарий в Synaptic и установите пакет libxbsql-bin. Теперь Вы можете обращаться к вашей базе данных из командной строки. НБ

Не грузите меня

Вопрос

Пытался заставить работать Mandriva Linux с инсталляционного диска, прилагавшегося к специальному выпуску LinuxFormat: увы, все плохое, что я слышал о Linux, оказалось правдой. Он не работает, а что делать - непонятно.

Проблемы начались еще на этапе установки, когда при загрузке с первого диска появились сообщения об ошибках. Когда, наконец, загрузка завершилась, я честно прошел всю (чудовищно медленную) процедуру установки. С тех пор установленная система ни разу не загрузилась: процесс останавливается на <Инициализации криптографических API> и все зависает. Попробовал загрузиться с установочного CD с опцией <rescue>, но опять пришел к фатальным ошибкам.

Поиск в сети по данной проблеме ничего не дал. В результате на жестком диске моего ноутбука занимает место бесполезная система на 10Гб. Как мне теперь от нее избавиться? Брайан Форд (Brian Ford)

Ответ

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

Mandriva устанавливается не столь уж <чудовищно медленно>. На прошлой неделе я устанавливал на ноутбук Mandriva 2006 и Windows XP, и разница времен установки была в пределах пяти минут, хотя с Mandriva устанавливалось большее количество программ. Судя по тому, когда у Вас появлялись сообщения об ошибках, можно предположить, что проблема кроется в Вашем жестком диске. Может быть, Ваш контроллер не совместим со стандартными драйверами Mandriva. К счастью, с этим легко справиться.

Загрузитесь с установочного диска Mandriva и при появлении экрана загрузки нажмите F1. Теперь Вы сможете ввести параметры загрузки вручную. На некоторых ноутбуках помогает

linux noapic

Если бы Вы назвали свою модель, я бы дал Вам более конкретные рекомендации. Попробуйте поискать решение на нашем форуме http://www.linuxformat.co.uk. Если Вы хотите удалить Mandriva и использовать освободившееся пространство в Windows, удалите раздел Linux с помощью Partition Magic и распространите Windows-раздел на весь диск. Это можно сделать также и из инсталлятора Mandriva. В первую очередь удалите загрузчик Linux (в Mandriva 2006 используется Grub, в ранних версиях по умолчанию устанавливался Lilo). Загрузитесь с установочного диска Mandriva, ответьте rescue на запрос и выберите опцию восстановления загрузчика Windows. Перезагрузитесь и начните установку. Дойдя до этапа разметки диска, выберите ручную разметку (Custom partitioning), удалите все не-Windows-разделы, выберите Windows-раздел и измените его размер (Resize). После завершения кликните <Готово> (Done), сразу перезагрузитесь, извлеките CD, Scandisk отработает свое, и Windows стартует.

Доктор, вы тормоз

Вопрос

Я работаю в IT-отделе небольшой больницы. У нас становится все больше и больше компьютеров, и все они подключаются к Интернету через локальную сеть.

Некоторое время назад я установил Squid и DansGuardian, и они прекрасно справляются с работой. Однако сеть у нас не быстрая - десятимегабитные кабеля были проложены еще 15 лет назад. Иногда сеть сильно тормозит, я думаю, это из-за скачивания больших файлов - медицинские PDF бывают весьма объемными. Можете ли вы порекомендовать мне какую-нибудь программу для мониторинга сети, показывающую, какой компьютер использует всю пропускную способность соединения? Дэмиан (Damian)

Ответ

Первое, что приходит в голову - ntop (http://www.ntop.org), свободный инструмент для мониторинга сети, созданный как сетевой эквивалент стандартной утилите top. Попробуйте MRTG (http://people.ee.ethz.ch/~oetiker/webtools/mrtg) - демон для визуализации SNMP-переменных, который часто используют для мониторинга загрузки канала. Учтите, что MRTG довольно ресурсоемок, т.к. по умолчанию генерирует графики загруженности каждые пять минут. Но Вы можете использовать rrdtool для сохранения собранных данных и какой-нибудь CGI-скрипт (например 14all.cgi) для вывода отчетов исключительно по запросу.

Наконец, есть еще Ethereal (http://www.ethereal.com), бесплатная программу для перехвата, фильтрации и декодирования сетевого трафика - неоценимое средство в подобных случаях, правда, чересчур сложное для ежедневного мониторинга. БК

Чистый экран

Вопрос

У меня есть небольшой вопрос по поводу <Краткого введения в Screen>, опубликованному в 72-м номере LinuxFormat. В статье описывалось разделение экрана с помощью комбинации Ctrl+A s, и в man-странице я про это тоже читал. Однако комбинация не работает - каждый раз, когда я ее ввожу, все зависает, и приходится перезагружаться. Я использую Screen версии 4.00.02 в Fedora Core 4. Стивен Локли (Stephen Lockley)

Ответ

Горячие клавиши Screen регистрозависимы, для разделения экрана используется Ctrl+A S, а Ctrl+A s посылает терминалу Ctrl+s (Xoff), сигнал заморозить ввод-вывод. Надеюсь, что проблем у Вас теперь не возникнет; а если вдруг позабудете вовремя нажать Shift - текущую сессию разморозит комбинация Ctrl+A q (Xon; в обычном терминале без Screen это делается с помощью Ctrl+q).

Если Вы намерены регулярно пользоваться функцией разделения экрана, то, скорее всего, захотите использовать для нее более удобную комбинацию. Откройте файл .screenrc, находящийся в домашнем каталоге, и впишите в него следующие строки:

bind ^S xoff
bind s split

После этого для разделения экрана можно будет пользоваться комбинацией Ctrl+A s, а для заморозки ввода/вывода - Ctrl+A S.

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