FAQ конференции FIDO.RU.Linux --------------------------------------------------------------- 25.10.2002. Оригинал этого документа расположен на http://www.sensi.org/~ak/linuxfaq/ ? http://www.sensi.org/~ak/linuxfaq/ --------------------------------------------------------------- RU.LINUX Frequently Asked Questions Alexander Kanavin, ak@sensi.org Версия от 25.10.2002. Сборник часто задаваемых вопросов (с ответами), связанных с ОС Linux. Последняя версия находится по адреcу <http://www.sensi.org/~ak/linux-faq/> 1. Преамбула Hовые вопросы и вопросы с обновленными ответами отмечены * 1.1. Как добиться занесения вопроса в FAQ? Дайте составителю вопрос и ответ, пригодные к включению в FAQ методом copy-and-paste. (Alex Kanavin) 1.2. Куда посылать дополнения? Дополнения к FAQ в виде пар вопрос-ответ принимаются на ak@sensi.org 1.3. Что составитель был бы рад получить в качестве дополнения к FAQ? Внимание: ищутся желающие написать следующие ответы для FAQ. · SSL (openssl). VPN. Kerberos. · обзор сред, методов и идеологий разработки программ Годятся и интернетовские ссылки на статьи, описывающие эти вещи - но они должны быть на русском языке и технически грамотными. Ищу человека, готового перевести и поддерживать раздел "Русификация" на английском языке. 1.4. Где в интернете находится последняя официальная версия FAQ? Этот FAQ list доступен по следующим URL: http://www.sensi.org/~ak/linuxfaq/ 1.5. С каких узлов в Fidonet можно получить FAQ через файловый запрос или через запрос к роботу? FAQ доступен для Fidonet FREQ здесь: 2:450/176.15 freq alias: LINUXFAQ (work time: 21:30-6:30). 2:5013/14 алиас linuxfaq (по нодлистовому времени) 2:5020/1255 по алиасу NEWFAQ (c 21:00 до ZMH, CM на выходных) 2:5030/902 по алиасу LINUXFAQ (по нодлистовому времени) 2:5045/71 freq alias: LINUXFAQ worktime: CM 2:5061/108 алиас LINUXFAQ (с 00:00 до 06:00) 2:5069/11 CM алиас LINUXFAQ 2:5077/7, Alias: LINUXFAQ (Work time: 23:30-06:00 [MSK+2]) FAQ можно получить от следующих роботов: to: faqrobot 2:5036/26 subj: rulinux.faq Для появления в этих списках необходимо регулярно выкладывать у себя свежую версию FAQ. Пишите мне, если вы получили старье с одного из этих узлов. 1.6. Предыдущие составители FAQ, его распространение и использование. Составлено по материалам RU.LINUX (и не только). (c)Составление - Станислав Корсуков, FidoNet 2:5030/532. (s)Поддержание - Михаил Браво, mbravo@kronverk.spb.su, до сентября 1999 (s)Поддержание - Aлександр Канавин, ak@sensi.org Приветствуется выкладывание данного FAQ на ftp/www/etc и прочее распространение. Пожалуйста, не забывайте давать ссылку на оригинал. Коммерческое использование возможно лишь с письменного разрешения. (Я рассчитываю на процент :-) 1.7. Что делать, если я не нашел здесь ответ на свой вопрос? Если вы не нашли ответ на свой вопрос - почитайте руководство к своему дистрибутиву (вообще говоря, к нему надо обращаться прежде всего), faq's из дистрибутива (обычно /usr/doc/faq), HOWTOs и т.п. Попробуйте сделать запрос на <http://groups.google.com/>. Весьма вероятно, что ваша проблема уже обсуждалась - если это так, то вы получите более быстрый и полный ответ, вовсе не написав письмо в конференцию. Если у вас возникает несколько разных вопросов, лучше напишите одно письмо подлиннее, чем десять однострочных. Если вы задаете вопрос, связанный с вашей конкретной системой, всегда включайте как можно больше деталей - какой дистрибутив, какая версия дистрибутива, какая версия ядра, с какими именно железками у вас проблемы (опять же версии, надписи на микросхемах), и так далее. Перед тем, как писать в эху ru.linux, подумайте, возможно ваш вопрос более уместен в ru.unix - эхе, посвященной Unix-подобным ОС в целом или ru.gnu - эхе, посвященной программному обеспечению проекта GNU. Еще существуют эхи ru.unix.prog - программирование под Unix, ru.unix.multimedia - название не требует пояснений и ru.unix.ftn - фидософт под Unix. Для начинающих еще есть эха ru.linux.chainik, но на мой взгляд в нее обращаться не стоит, так как вероятность получить квалифицированный ответ там ниже чем в ru.linux и особенно ru.unix. Что касается эхи ru.unix.linux, то в нее желательно вообще не писать, так как она является копией ru.linux, если не считать отсутствия модератора и по непонятным мне причинам до сих пор не удалена с бекбона. 1.8. * Как мне задать свой вопрос так, чтобы вероятность получить полезный ответ была максимальной? Прочтите: How To Ask Questions The Smart Way <http://www.tuxedo.org/~esr/faqs/smart-questions.html> Перевод: Как правильно задавать вопросы <http://ln.com.ua/~openxs/articles/smart-questions-ru.html> How to Report Bugs Effectively <http://www.chiark.greenend.org.uk/~sgtatham/bugs.html> 2. Установка и изучение Linux 2.1. Я решил поставить Linux... Прежде всего Вам нужно ответить на один вопрос: для чего Вы собираетесь его использовать ? Если Вы можете дать ответ на него, то нужно быть готовым к следующим вещам: · под Linux-ом пока не существует надежного и бесплатного способа запускать программы для Windows. В частности, это означает, что у вас могут возникнуть проблемы с "Документами Word" и "Документами Excel". · нужно будет вдумчиво читать большое количество англоязычной документации с экрана · основным устройством ввода станет клавиатура · первые несколько месяцев Вам придется нелегко · вам придется обзавестись соединением с сетью Интернет. Пусть платным или эпизодическим, но оно у вас быть должно. Вся документация, новости и программы ищутся и находятся там (а не на фреках или пиратских дисках). Более подробно эта тема разжевана чуть ниже. 2.2. Как поставить Linux, не покупая диски с дистрибутивом и не скачивая дистрибутив из Интернета? Найдите на <http://www.lug.ru> координаты группы пользователей Linux вашего города. Придите на их ближайшую встречу, можно сразу с жестким диском. Попросите на этой встрече кого-нибудь дать вам диск с дистрибутивом на пару дней. Некоторые LUG имеют общую дискотеку (собрание дисков), посмотрите, есть ли в ней что-нибудь подходящее. Подпишитесь на список рассылки LUG вашего города, спросите там "А не перепишет ли мне кто-нибудь на мой винчестер (CD-R) дистрибутив?" Можно задать тот же вопрос в городской эхоконференции Fido, посвященной обмену файлами или Unix/Linux (пример: SPB.LINUX, SPB.FILES). Однако осознайте сразу такую вещь: записать дистрибутив гораздо проще, чем помочь новичку c установкой и настройкой, поэтому не стоит расчитывать, что человек, давший вам дистрибутив в дальнейшем посвятит себя вашему обучению. 2.3. Подскажите, какой дистрибутив выбрать ? Любой, вышедший менее полугода назад, и купленный не на пиратском лотке, а у официальных дистрибьюторов: <http://linux.iplabs.ru>, <http://linux.vinchi.ru>, <http://www.linux-ink.ru>, <http://www.mistral.ru>, <http://www.bolero.ru>, <http://www.books.ru>, <http://www.linux-online.ru>. Жители Украины могут купить лицензионные дистрибутивы на <http://www.ebuy.dp.ua>. Жители Санкт-Петербурга - <http://www.shopsys.spb.ru>. Отличительными внешними признаками пиратского дистрибутива являются · низкая цена - того же порядка, что и цена обычных пиратских дисков · отсутствие адреса производителя дистрибутива · "шесть операционок/дистрибутивов на одном диске". Hормальный дистрибутив линукса крайне редко умещается на единственном диске. (пяти-шестидисковые наборы с двумя-тремя разными дистрибутивами в одной коробке от walnut creek, cheapbytes или infomagic пиратскими не являются. Это вполне нормальные дистрибутивы, но, может быть, без коммерческих и полукоммерческих программ. Стоит такой набор примерно столько же, сколько "коммерческий" дистрибутив.) · отсутствие исходников строго говоря не является основанием для причисления к пиратам, но должно вызвать у вас серьезные подозрения. Если те, у кого вы купили дистрибутив без исходников, отказываются выдать вам их по цене носителя и посылают на ftp (или просто посылают подальше) - они однозначно нарушают лицензию GPL. Однако, это не касается cd-r копий и прочих копий, полученных на некоммерческой основе (например, переписанных на винчестер за пиво). Если у вас есть знакомый гуру, на помощь которого вы на первых порах рассчитываете, то, в случае, если вы поставите у себя то, что он использует сам, у вас будет больше шансов получить ответы на вопросы о тонкостях настройки. 2.4. А где в Москве (Петербурге, где-либо еще) можно купить официальные диски с Линуксом? Петербург: у Михаила Браво mbravo@kronverk.spb.su, у Дмитрия Иванова (2:5030/902, idv@aanet.ru, возможна рассылка в другие города на территории России), в фирме Кронверк (Загородный 68, 110-1303), в фирме Аякс (312-5208, <http://linuxcenter.ru>). Москва: в Доме Книги на Hовом Аpбате. Hа пеpвом этаже от входа напpаво, фиpма - CompuLink, соответственно, и в дpугих ее филиалах. Реселлеры ALT Linux: <http://www.altlinux.ru/index.php?module=buy>) Офис Vinchi Group (адрес и телефон на <http://www.vinchi.ru>) Офис Bolero (ул. Кедрова, 14, вход со двора, этаж 3, комн.319. Телефон 124-6455). Ростов-на-Дону: диски с дистpибутивами можно купить в фиpме "Proga" - ул. Большая Садовая 188, офис 320. Тел.53-41-22. Алма-Ата: TOO e.com (480091, ул. Фурманова 103, 3 этаж, тел. многоканальный 505-777, факс 505-778) Киев: КОМИЗДАТ (553-5547, спроосить Сергея Антончука) Севастополь. (0692)553148 <http://www.sevcom.net> Харьков: продажа ASPLinux <http://www.spez.com.ua> Другие города: ? 2.5. Как узнать последнюю версию софта XXX/url его домашней странички ? Мне нужна некая фича, но я не знаю, как называется соответствующий софт, что делать? <http://www.freshmeat.net>. Там есть все. На <http://www.opennet.ru> есть целый комплекс средств для отслеживания версий софта ( <http://www.opennet.ru/lastsoft/> - автоматическая система, <http://www.opennet.ru/news/> - "ручная") 2.6. У меня стоит <название-дистрибутива> и в нем "`^:,:#`! Как с этим бороться? Первым делом надо сходить на веб или фтп cайт производителя вашего дистрибутива или его ближайший миррор и посмотреть, нет ли update'а к пакету, вызывающему проблему. Если нет, тогда уже надо искать другие пути решения проблемы. И очень желательно сообщить разработчикам дистрибутива о ней. Для Red Hat это можно сделать, зайдя на <http://bugzilla.redhat.com/bugzilla/> Когда проблемы возникают еще при установке, можно обратиться в службу поддержки производителя дистрибутива (если дистрибутив не пиратский, на нем как правило указываются координаты этой службы) или описать свою проблему в его списке рассылки, на который можно выйти через веб-сайт производителя. Учтите, что в случае, если у вас пиратский дистрибутив, причина проблем может быть в том, что он криво записан на компакт-диск. 2.7. Как научиться линуху, если pядом нет гуpу? (если он есть, то тоже прочтите обязательно) Прочесть ru.books.computing faq ( <http://alexm.here.ru/rbcfaq.txt>). Посмотреть на книгу "Linux. Руководство по операционной системе". BHV, 1997, ISBN 5-7315-0002-9 , но лучше ее (и в особенности прилагающийся к ней дистрибутив 96го года) не покупать. Для начинающих хорошими книгами являются "Путь к Linux" Владимира Водолазского (печатное издание 99го года, а не электронное 97го) и "UNIX: универсальная среда программирования" Б.Кернигана и Р.Пайка, а для более продвинутых (и желающих таковыми стать) - "UNIX: Руководство системного администратора" Эви Hемет. Кернигана-Пайка можно попробовать найти в библиотеке вашего вуза. Для _пользователей_ (не для чайников!) еще рекомендуется найти книжку Дж.Армстронга "Секреты UNIX", (первое издание - Киев, Диалектика, 1996, ISBN 966-506-043-0, второе - Вильямс, май 2000). Очень хорошая книжка, только везде, где там написано "unix", надо читать "linux". Автор хотя и гордо демонстрирует останки соляриса на своей машине и вспоминает как в молодости работал с какими-то древними монстрами, но очень хорошо видно, что его познания в настоящих юниксах малость заржавели. Следует серьезно подумать, прежде чем покупать недавно (осень 1999) переведенную "Unix Power Tools" от O'Reilly - единственным известным авторскому коллективу могучим тулзом является shell. Остальное - буквально в трех словах или вовсе проигнорировано. А для заменителя man bash она дороговата. Обратиться в существующую Linux Users Group, или создать свою. С.-Пб LUG (spblug) доступна через <http://www.spb.lug.ru/> Московская (mlug) -- через <http://www.moscow.lug.ru> Более подробная информация и полный список lug имеется на <http://www.lug.ru>. Подписаться на список рассылки, посвященный вашему дистрибутиву. Как правило, этот список ведется производителем дистрибутива, а информация о подписке доступна через веб-сайт производителя Пpочесть паpу книжек от Linux Documentation Project. <http://www.linuxdoc.org> Переводы на русский, возможно, устаревшие, есть на <http://www.linux.org.ru/books/>. Вот неполный список сайтов с документацией на русском языке: · <http://www.linux.org.ru> · <http://lib.ru> · <http://www.gnu.org.ru> · <http://www.opennet.ru> · <http://linux-ve.chat.ru> · <http://www.nevod.ru/linux/doc/> · <http://xtalk.price.ru> · <http://alexm.here.ru> 2.8. Я поставил Red Hat Linux (или Red Hat-подобный дистрибутив). Что следует прочесть в первую очередь, чтобы уяснить его специфику? Начните с Red Hat Reference Guide (/doc/ref-guide на компакт-диске). Особенно стоит обратить внимание на главы Package Management with RPM и System Administration. Также полезно прочесть cодержимое /usr/doc/initscripts-x.xx. Очень многие вопросы, которые сюда стоило бы включить, не включены именно потому, что на них есть ответы там. Два последних источника являются частичной компенсацией отсутствия Linux-специфичных вещей в книге Немет, издание 94го года. 2.9. А у меня нет интернету, что вы мне тут урлями тычете! Хочу фреков! Это фидошная конференция или где?! (вариант: пришлите мне нетмейлом русскую и подробную доку по ...! Очень надо!) Linux - система, целиком и полностью разрабатывающаяся в интернете. Поэтому, нравится вам такое положение вещей или нет, но если вы не хотите сидеть на версиях программ, с глюками которых все уже давно позабыли, как бороться, мучаться с поисками документации и платить пиратам и халтурщикам за CD с кучей устаревшего и глючного мусора, то для нормальной жизни в линуксе вам необходимо хоть какое-то интернет-подключение (вполне сгодится, на первое время, и вариант "попросить приятеля скачать что-нибудь нужное" - но чем сложнее этот процесс, тем меньше удовольствия и больше проблем вы получите от линукса). И никто, увы, не жаждет сперва за свои деньги что-то скачивать, а потом выкладывать вам для халявной раздачи. Да, это делалось где-то, когда-то, когда интернет был дорог и малодоступен, а качали все, в общем, одно и то же - но сейчас те, кто этим занимался, давно потеряли и интерес, и технические возможности. Поэтому об'единяйтесь с такими же страдальцами, покупайте интернет вскладчину, публикуйте свои адреса для freq, восстанавливайте файлэхи U*, но не ждите, что кто-то сделает это за вас. Тем не менее, некоторое количество ббс c юниховым софтом существует, они перечислены в следующем вопросе. 2.10. А у меня нет Интернета, где бы мне найти ... для Линукса? Желающие могут присылать свои координаты для включения в FAQ. Запись на CD-R: В Петербурге: У Дмитрия Иванова (2:5030/902, idv@aanet.ru). Hа freq FILES отдается полный список имеющегося. Возможна рассылка в другие города на территории России. BBS с софтом для юникса: В Москве: Quasi-BBS 702-52-49 23:00-08:00 Ultrix BBS, 00:00-07:00, 462-8291, Sysop - Arthur Komarov (5020/943.17) (TNSDrive 2.0b1) unitrecordHQ, 0:00-7:30, 162-9286, только фреки, sysop - tim kondratyev (2:5020/1989.1) В Петербурге: 2:5030/763 TMA BBS, по нодлистовому времени (файл-реквесты). И станции в Харькове - 2:461/220 Spezvuz BBS CM 057-7123313 Alexander Grinevich (2:461/1024) 2:463/57 в Киеве (только файл-реквесты) Алма-Ата: ISP BBS CM 3272-638796 Alexander Uskov (2:5083/21) (TNSDrive 2.0b4) 2.11. Программирование - документация info gcc,libc,gdb /usr/doc/LDP/lpg и другие книжки от LDP, лежащие на их сайте. ( <http://www.linuxdoc.org>) Ccылки на гайд по программированию при помощи curses и много другого полезного: <http://www.linuxprogramming.com/> Раздел "Юниксоидам всех стран" на <http://lib.ru> Обратите внимание на книжку Морриса Баха <http://lib.ru/BACH/> Она же выходила и в печатном виде. Еще на бумаге издавались: "Системное программирование на C++ для Unix" Теренс Чан, BHV "ОС UNIX" Андрея Робачевского - это почти общепризнанно сборник плохих переводов хороших оригиналов. К сожалению, альтернативы этой книге нет, пока не будут переведены и/или (пере)изданы сами оригиналы, перечисленные в конце книжки: Бах, Стивенс, Лефлер. Книгу можно получить бесплатно - взяв в библиотеке вашего вуза. Вопросы программирования под Unix обсуждаются в ru.unix.prog, а также в news:comp.unix.programmer. Там есть свой FAQ и документ "Properly tuned Unix Application". 2.12. Hе могу загрузить Линукс с {тpетьего винта / гигабайтного винта в normal моде / чего-то экзотического / раздела выше 8Gb } Что делать ? Если поместить ядpо Линукса на 1-й hd, в пpеделах доступности bios (1024 цилиндpа), то ядpо _гаpантиpованно загpузится_, а остальные части Линукса можно пpоизвольно pазбpосать по pазным дискам/pазделам. Ядpо можно записать в ДОСовский pаздел и загpужать его пpогpаммой loadlin.exe. Также полезно почитать man rdev. Последние версии lilo (>21.3) умеют загружать ядро и с цилиндров, больших, чем 1024. При этом BIOS должен быть не слишком старым и поддерживать lba32, эту опцию надо прописать в /etc/lilo.conf. В качестве альтернативы lilo очень рекомендуется поглядеть на GRUB <http://www.gnu.org/software/grub> Существует еще малоизвестный загрузчик NUNI, который вообще не пользуется BIOS и напрямую работает с IDE-контроллером. Причем понимает даже PCI IDE с нестандартными(большими) номерами портов. Диск должен быть с системой ext2fs. 2.13. Как мне поставить линукс, не выделяя ему раздел - только на познакомиться. (вариант: мегабайт на 150 - у меня больше нет, я бедный студент) А то у меня диск весь занят NT'ей/виндами/OS/8, etc. (Alex Korchmar) Для первого знакомства с женским полом - _не_надо_ использовать резиновую бабу. Для того, чтобы познакомиться с линуксом/посмотреть, на что он годится - _не надо_ ставить его под win4lin, vmware и прочими эмуляторами, не надо искать "урезанные", "упрощенные", "live-fs" и прочие недо-дистрибутивы, и не надо пытаться поставить их на FAT - начинающему и без этого хватит проблем. И аргумент "мне эти три-пять гигабайт еще могут понадобиться" - не аргумент вовсе. Если они тебе так нужны, что нельзя с пол-годика без них обойтись - значит, не надо ставить линукс. Ибо если ты его будешь раз в три дня переустанавливать - то вот только переставлять отдельно взятый (кривой) дистрибутив на отдельно взятой (кривой) конфигурации ты и научишься. А это знание, увы, работодателями не ценится. 2.14. Хочу поставить на один винт несколько операционок: Linux, Win- dows NT, Windows 9?. Как лучше сделать это ? Прежде всего: другую операционку, в особенности win'95/98 или dos, очень желательно ставить первой, а значит, начальное разбиение диска проводить ее средствами. Дело в том, что в некоторых случаях (в каких - выяснить пока не удалось) этим ОС или их инсталляторам не нравится MBR, созданный средствами Linux. Затем вам нужно решить: что вы будете использовать в качестве основного загрузчика ? Если NT Loader, то этот вариант подробно расписан в HOWTO/mini/Linux+NT-loader. Если LILO, то нужно учесть следующие вещи: 1. LILO может быть в MBR или в начале активного Primary linux раздела, тогда в MBR должно быть нечто, способное его загрузить, например стандартный загрузчик MS-DOS (записывается путем fdisk /mbr). 2. Как бы вы ни ставили Windows 9?, до или после линуха, помните что ее инсталлятор независимо от вашего желания записывает в MBR свой стандартный загрузчик, который умеет только передавать управление на первый сектор активного раздела. В таблице разделов инсталлятор ставит признак активности на свой раздел. Что делать после этого - смотрите в разделе "Прочее". Установщики Windows NT и 2000 загрузчик из MBR не трогают, но Windows NT трогает MBR при первом запуске Disk Administrator - он спрашивает, можно ли записать Disk signature (это нечто 32-битное вроде контрольной суммы), пишется оно в MBR и по слухам прибивает LILO. 3. NT Loader должен обязательно находиться на hda1 или hda2, причем, на fat16 разделе. 4. Если вы хотите грузить Win 9? непосредственно из lilo, а не из NT Loader, то добавьте в lilo.conf: other = /boot/bootsect.dos label = win bootsect.dos берется из корневого каталога того диска, на котором стоит NT Loader Методы решения проблем и варианты с другими операционками/загрузчиками подробно расписаны в /usr/doc/HOWTO/[mini/]Linux+{другая ОС} (Alexander Pevzner, 2:5020/59.9) IMHO, в сомнительных и сложных случаях лучше вообще сначала раздать каждой операционке по партиции, причем начиная не с линуха и доверяя откусывание места на диске собственному fdisk-у каждой ОС. А потом уже продолжать инсталляцию. 2.15. А давайте спортируем DN под Linux, FAR под Linux, допишем mc, чтобы он был не хуже DN, есть ли приличный файловый менеджер для Linux (mc не предлагать) etc etc (Andrey Terebecky <mailto:arey@penguinpowered.com>) Hужно начать с того, что задуматься каких функций из DN, FAR, etc - Вам не хватает в MC. После этого внимательно изучить все, что mc рассказывает по клавише F1 (документация идущая с ним довольно скудная), обычно это решает большинство вопросов. Hе нужно искать функции типа CD-проигрывателя, запуска нескольких копий редактора в разных окнах - таких возможностей в MC нет. В DN эти функции введены для преодоления недостатков операционной системы (однозадачность, однопользовательность, отсутствие нужных утилит). Линукс таких недостатков лишен и поэтому такими вещами занимаются внешние программы, а MC это просто файловый менеджер. Строго говоря, MC и ему подобные программы в Unix\Linux вообще не нужны. Все их функции обычно решаются гораздо быстрее с помощью shell (zsh, tcsh, bash, etc). Конечно для этого потребуется достаточно подробно изучить документацию к Вашему любимому shell и приобрести некоторые навыки работы с ним, но результат себя оправдает. В защиту MC часто говорят, что в shell не удобно работать с архивами - возможно это действительно так, а возможно говорящие это, никогда не видели AVFS ( <http://www.inf.bme.hu/~mszeredi/avfs/>) В Unix\Linux есть и аналоги MC - X Northern Captain ( <http://xnc.dubna.su>), deco ( <ftp://ftp.cronyx.ru/cronyx/>), а также его модификация от Nickolay N. Parfenov ( <http://usrsrc.chat.ru>), VFU ( <http://www.biscom.net/~cade/vfu>), ytree ( <http://www.han.de/~werner/>). Если же Вы и после этого убеждены в необходимости DN, FAR под Linux - портируйте если можете. Hо помощников в этом будет найти сложно, те кто могут - не захотят это делать по выше перечисленным причинам, а те кто захочет скорее всего не смогут. (Viktor Krapivin 2:450/102.1 и Dmitry Chernyak 2:503/983.998) В самом начале 90х был такой теpмин - "интегpатоp". Вот DN им и является (почти). А полуночный командиp - нет. Точно так же, как XEmacs пpетендует на это же "звание", а вот vim - нет 8-) Гpань тонка, но она есть. И дело не в набоpе всякого баpахла. "Интеграторы" имели смысл в однозадачном ДОСе, отсутствие необходимости выходить из редактора, чтобы потаскать файлы было их основным достоинством. В многозадачном юниксе "интегрирование" может быть с успехом заменено использованием нескольких консолей, телнетов, команд bg/fg, программы screen и, наконец, X-Window. Кроме того, мало кому нужен такой "интегрированный редактор", который не дотягивает до уровня vi. А он никогда до него не дотянет, просто потому, что vi - _редактор_, а "редактор" в DN - просто заплатка, которой времени уделено не больше, чем всем остальным компонентам. Такова цена интегрирования. 2.16. * Есть ли в Linux-е интегрированные среды разработки типа Bor- land C++ Builder, Borland Delphi, Microsoft Visual C++, и т.д.? Borland Kylix <http://www.borland.com/kylix/> Victor Wagner <mailto:vitus@communiware.ru> А как же. xwpe (очень похожа именно на Turbo C++), rhide, motor, KDevelop, Glade, Source Navigator Hо все они до жути неудобные. По той простой причине, что ни один квалифицированный программист с ними не связывается. Это софт, написанный чайниками и для чайников. Потому что те, кто более-менее разбирается в идеологии *nix прекрасно понимают, что практически любой проект надо разрабоатывать не на одном языке, а на нескольких разного уровня (критические по скорости части - на C, интерфейс - на perl/tcl/python/slang, работу с данными на SQL и так далее). Между прочим, большинство из выше упомянутых оболочек расчитаны на работу с несколькими языками. Hо все равно они хуже, чем обыкновенный мощный редактор. Благо, все мощные редакторы под эхотаг умеют вызывать внешние программы, и анализировать их выдачу. Поэтому рекомендуется освоить один из двух наиболее распространенных редакторов - vim или emacs, и пользоваться для разработки им. Благо такие вещи как подсветка синтаксиса, вызов make прямо из редактора, и позиционирование курсора на строку, про которую компилятор выругался, в них обоих есть. (от Alex Kanavin: намного более подробно все это объясняется в книжке The Art of Unix Programming, которую я рекомендую прочесть всем, кто начинает программировать под Unix - она очень хорошо помогает осознать идеологию Unix и избавиться от предрассудков, свойственных Windows-программистам. Книжка лежит здесь: <http://www.tuxedo.org/~esr/writings/taoup/> 2.17. * Ищу конфернцию, посвященную программированию под Linux... Программирования "под Linux" не бывает. Бывает программировние под *nix. И ему посвящена эха <news:fido7.ru.unix.prog>. 2.18. А вот ответьте мне нетмейлом на такой вопрос: ... ? Как заметил Victor Wagner, написание писем в эху есть самовыражение, написание писем нетмейлом есть техническая поддержка. Первое бесплатно, второе платно. Подумайте об этом. 2.19. У меня совсем чайниковый вопрос... Обратитесь в RU.LINUX.CHAINIK. Правда, при этом есть риск получить совсем чайниковый ответ. 3. Русификация Значительная часть этого раздела написана Alexander Voropay <mailto:alec@sensi.org>. 3.1. У меня проблемы с русским в... Проблему русификации можно разделить на несколько частей : · русификацию консоли · установку системной (libc) locale · русификацию системы X Window - шрифты и клавиатура · включение поддержки русского в конкретных программах · печать Все эти части настраиваются по-отдельности. Существует Cyrillc-HOWTO <http://www.ibiblio.org/pub/Linux/docs/HOWTO/unmaintained/Cyrillic- HOWTO>, однако он довольно долго не обновлялся и больше не поддерживается, поэтому отнеситесь к нему критически (Last version : v4.0, 23 January 1998), перевод: <http://www.inp.nsk.su/~baldin/Cyrillic-HOWTO-russian-old/Cyrillic- HOWTO.html>. Евгений Балдин создал новую версию Cyrillic-HOWTO на русском (версия не имеет английского перевода и не включена в официальную базу HOWTO). Доступна здесь : <http://www.inp.nsk.su/~baldin> Лучше всего сперва искать решение проблемы здесь и лишь потом - в Cyrillic-HOWTO (англоязычном). 3.2. Русификация консоли. В системе Linux существуют два конкурирующих пакета управления шрифтами и клавиатурой : kbd и consoletools. <ftp://ftp.win.tue.nl/pub/linux/utils/kbd/> или <ftp://ftp.kernel.org/pub/linux/utils/kbd/> <http://lct.sourceforge.net> В разных дистрибутивах применяются или один, или другой. Например, в Red Hat 4.х и 5.x для русификации консоли применялся пакет kbd. Однако в Red Hat 6.x и выше применяется уже другой пакет - consoletools. Существует Keyboard-and-Console-HOWTO, автор этого HOWTO является также автором пакета kbd, поэтому естественно, всех склоняет к использованию kbd. ;-) <http://linuxdoc.org/HOWTO/Keyboard-and- Console-HOWTO.html> На "низком уровне" для русификации консоли достаточно выполнить следующие команды (пакет kbd): $ setfont Cyr_a8x16 $ mapscrn koi2alt $ echo -ne "\033(K" $ loadkeys ru1 Если используется пакет console-tools: $ consolechars -f UniCyr_8x16 -m koi8-r $ echo -ne "\033(K" $ loadkeys ru1 См. man на соответствующие команды и 'man console_codes'. Описание, что есть что, у console-tools в /usr/doc/console-tools*, довольно внятное. NB! К сожалению, в пакете console-tools некоторые русские фонты не содержат UNICODE screen-font map (SFM) и в таком виде попадают во многие дистрибутивы. Исправленные фонты живут в пакете console-tools- cyrillic: <ftp://ftp.ice.ru/pub/fonts/linux/> Как правило, настройка шрифтов и клавиатуры скрыта среди стартовых скриптов, а ключевые управляющие параметры вынесены в отдельные файлики. Иногда существуют даже специальные программы настройки. "Идеологически правильно" не нарушать системную архитектуру дистрибутива, а всего лишь поменять настройки в этих файликах. К сожалению, в Linux только один загружаемый фонт на все виртуальные консоли. Если вы хотите видеть русские буквы и рамки (например в mc) на консоли одновременно, используйте только TERM=linux . У вас будут проблемы при работе консоли в CP-866 из-за того, что некоторые русские буквы в этой кодировке совпадают со "старшими" управляющими кодами C1, например буква "Ы" 0x9B совпадает со старшим ESC (CSI). Работайте в KOI8-R. 3.3. Мне говорят "Настрой локаль!" Что это значит ? Речь идет о настройке системной locale. Проверить установки можно, просто сказав locale: $ locale LANG=ru_RU.KOI8-R LC_CTYPE="ru_RU.KOI8-R" LC_NUMERIC="ru_RU.KOI8-R" LC_TIME="ru_RU.KOI8-R" LC_COLLATE="ru_RU.KOI8-R" LC_MONETARY="ru_RU.KOI8-R" LC_MESSAGES="ru_RU.KOI8-R" LC_ALL= $ Если результат именно такой, значит настроена русская locale (ru_RU) в кодировке KOI8-R. Проверить можно командами 'cal' или 'date' - даты должны быть на русском. На самом деле, для настройки locale достаточно всего лишь установить переменную окружения LANG= из стартовых скриптов (например /etc/profile) или руками. $ export LANG=ru_RU.KOI8-R В Red Hat-based дистрибутивах это делается путем редактирования файла /etc/sysconfig/i18n где, кроме прочего, должна быть строчка LANG=ru_RU.KOI8-R 3.4. * Как настроить locale ? Я установил LANG, но русских дат нет. Прежде всего - подробная дока о locale имеется на <http://www.sensi.org/~alec/locale>. Обращайтесь туда, если вам нужны нестандартные варианты (например, отключение русскоязычного интерфейса с сохранением правильной сортировки и т.д.) Система X-Window и библиотеки Xlib и Xt имеют собственные механизмы локализации (XLC_LOCALE) которые являются "надстройкой" над системной locale. Подробности: {X11Root}/doc/i18n (в RedHat: /usr/share/Xfree86-doc/i18n). Документация в .PS <http://www.tsu.ru/~pascal/x_locale/>. Хотя в принципе допустимо задавать короткое именование, вроде LANG=ru_RU или даже LANG=ru, лучше использовать _полное_ имя : LANG=ru_RU.KOI8-R . Совершенно недопустимо задавать LANG=ru_SU, такой страны больше нет :-) К сожалению, не все дистрибутивы "от рождения" позволяют использовать ru_RU.KOI8-R . Воспользуйтесь 'locale -a' для получения списка допустимых значений. Если в списке нет значения ru_RU.KOI8-R, его нужно добавить, а то LANG= будет указывать "в пустоту" : $ localedef -c -i ru_RU -f KOI8-R ru_RU.KOI8-R Computing table size for character classes might take a while... done Computing table size for collation information might take a while... done $ $ cd /usr/lib/locale $ mv ru_RU.koi8r ru_RU.KOI8-R (в старых версиях - /usr/share/locale) NB! Утилита localedef фомирует "сжатое" (mangled) имя кодировки, так что имя превращается в "ru_RU.koi8r". Это приводит в замешательство некоторые программы. Но к счастью, все же можно установить полное имя LANG="ru_RU.KOI8-R" и благодаря mangling-у все будет работать и программы будут счастливы. Еще один вариант -- переименовать каталог. Некоторые дистрибутивы неправильно включают LANG=ru LC_ALL=ru_RU.KOI8-R Это НЕПРАВИЛЬНО. Лучше не устанавливать переменную окружения LC_ALL вообще (достаточно полного LANG=, а все переменные LC_xxxx "унаследуются" от него). Подробнее смотрите на <http://www.sensi.org/~alec/locale/> в главе "Как включить..." 3.5. Как отключить вывод сообщений на русском, сохранив при этом остальные свойства русской локали ? Нужно определить переменные окружения : LANGUAGE=en_US LC_MESSAGES=en_US В RedHat эти строки можно вписать прямо в /etc/sysconfig/i18n . 3.6. Я настроил locale и русский в консоли, но bash все равно не вводит русские буквы, пищит. Хотя для большинства программ вполне достаточно установки LANG=ru_RU.KOI8-R чтобы начать распознавать русские буквы, многие программы, основанные на библиотеке readline (например bash), все равно считают символы с кодами больше 128 особыми META-символами (пищит при вводе). Чтобы отучить библиотеку readline от этого, необходимо определить переменную INPUTRC=/etc/inputrc Кроме того, создать файл /etc/inputrc set meta-flag on set convert-meta off set output-meta on После этого библиотека readline (и bash) начнет воспринимать русские буквы. Еще один вариант : Не задавать INPUTRC=, а прописать те же значения в файл ~/.inputrc (в home-каталоге). Но тогда придется заводить такой файл в домашнем каталоге каждого пользователя. См. man readline. 3.7. Red Hat и русификация Cоздаем файлик /etc/sysconfig/i18n. Внутри должно быть что-то вроде: SYSFONT=UniCyr_8x16 SYSFONTACM=koi8-r LANG=ru_RU.KOI8-R Раскладка клавиатуры выбирается утилитой kbdconfig и прописывается в файл /etc/sysconfig/keyboard, в виде: KEYTABLE=ru1 Эти файлы используются в скриптах /etc/rc.d/rc.sysinit, /sbin/setsys- font. Ознакомьтесь с ними, а также с /usr/doc/initscripts-x.xx/, если возникли вопросы или проблемы. 3.8. Debian и русификация Debian 2.2: Насторойка фонтов запускается из /etc/init.d/console- screen.sh /etc/console-tools/config: # SCREEN_FONT=Cyr_a8x16 APP_CHARSET_MAP=koi8-r # APP_CHARSET_MAP_vc2=koi8-r APP_CHARSET_MAP_vc3=koi8-r APP_CHARSET_MAP_vc4=koi8-r APP_CHARSET_MAP_vc5=koi8-r APP_CHARSET_MAP_vc6=koi8-r Фонты нужно заменить, взяв правильные из console-tools-cyrillic. Клавиатура настраивается из /etc/init.d/keymaps-lct.sh и загружает раскладку /etc/console-tools/default.kmap.gz Именно под этим именем нужно разместить требуемую раскладку или создать symlink. Для интерактивного выбора клавиатуры есть полезная утилита: kbdconfig. /etc/environment: LANG=ru_RU.KOI8-R 3.9. Как установить русские фонты KOI8-R на XFree86 ? В современных дистрибутивах они скорее всего уже стоят. Первым делом (на работающем X сервере) запустите : $ xlsfonts -fn "*-koi8-r" Если список не пустой - примите наши поздравления :-) Начиная с версии XFree86 3.3.2 русские фонты cronyx-* входят прямо в дистрибутив XFree. Если фонтов нет -- их нужно установить. Для Red Hat просто поставьте пакет XFree86-cyrillic-fonts-XXXX.rpm . Фонты установятся в /usr/X11R6/lib/X11/fonts/cyrillic . Далее нужно подключить шрифты к X Window. Убедитесь, что в файле /etc/X11/XF86Config прописан путь : Section "Files" ... FontPath "/usr/X11R6/lib/X11/fonts/cyrillic" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" ... EndSection Путь с cyrillic лучше всего поставить первым. Перезапустите X сервер и проверьте командой : xlsfonts -fn "*-koi8-r" . Еще см. вопрос "Где найти хорошие русские шрифты для иксов?" Про подключение шрифтов TrueType также имеется отдельный ответ, в разделе про X Window. Хорошим решением также будет использование фонт-сервера. Во-первых, он может быть один на всю организацию, а во-вторых в современные фонт-серверах можно использовать шрифты TrueType. Для Red Hat фонт-сервер xfsft входит в пакет XFree86-xfs. <http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/> 3.10. Как сделать так, чтобы в X Window русские буквы вводились везде ? Существует два основных способа русификации клавиатуры X : · XKB, применяющийся в современном X11R6 · xmodmap, применявшийся в X11R5 При русификации X 3.3.x через XKB в /etc/X11/XF86Config должно быть прописано: Section "Keyboard" ... XkbRules "xfree86" XkbModel "pc101" XkbLayout "ru" XkbOptions "grp:shift_toggle" EndSection Для X 4.0.x Section "InputDevice" ... Driver "keyboard" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "ru" Option "XkbOptions" "grp:shift_toggle" EndSection В зависимости от клавиатуры опция Model может быть "pc101", "pc104" или "pc105", а комбинации переключения: grp:toggle правый Alt (с "фиксацией") grp:caps_toggle Caps_Lock grp:shift_toggle два Shift grp:ctrl_shift_toggle Control+Shift grp:ctrl_alt_toggle Control+Alt Для 4.0.x добавились новые : grp:alt_shift_toggle Alt+Shift grp:menu_toggle Menu (модель должна быть pc104, pc105) Если есть проблемы с XKB, прочтите <http://www.tsu.ru/~pas- cal/other/xkb/> Там же есть ссылки на "переключатели клавиатуры", например xxkb, описание, как использовать несколько раскладок одновременно, назначать клавиши переключения раскладок и много других интересных вещей. Наиболее развитая программа для переключения клавиатуры через способ xmodmap : xruskb от Alexander V. Lukaynov <mailto:lav@yars.free.net> <ftp://ftp.yars.free.net/pub/software/unix/X11/> (primary site) <ftp://ftp.relcom.ru/pub/x11/cyrillic/> Она может понадобиться для русификации X11R5 терминалов, например железных, или эмуляторов под MS Windows. Для ее применения с XFree86 лучше отключить модуль XKB в /etc/X11/XF86Config директивой XkbDisable. Правильная раскладка для xruskb: jcukeng-cyr.xmm Проверить русификацию X можно программой xev: клавиатура должна генерировать правильные XkeySym для кириллицы (0x6xx), а xev должна показывать Cyrillic_IE и пр. при нажатии русских букв, а не OCyrcumflex e.t.c. 3.11. Как cмонтировать диск, чтобы русские имена файлов были видны ? Для vfat примерно так (cтрочка из /etc/fstab/): /dev/hda5 /mnt/d vfat noexec,rw,umask=002,codepage=866,iocharset=koi8-r,gid=100 0 0 Потом mount /mnt/d. Еще в ядро (>=2.0.36) должны быть включены соответствующие кодовые страницы (возможно, в виде модулей /lib/modules/`uname -r`/fs/nls_*) - CP866 и KOI8-R, так что возможно (хотя скорее всего нет) ядро придется перекомпилировать. Для CD, содержащего файлы с русскими именами: $ mount -t iso9660 -o iocharset=koi8-r /dev/cdrom /mnt/cdrom Параметр codepage для isofs не нужен, в файловой системе JOLIET имена файлов хранятся в UNICODE. Смысл этих опций можно узнать в 'man mount' или в документации исходников ядра /usr/src/linux/Documentation/filesystems/ или /usr/doc/kernel/filesystems/ 3.12. * Как увидеть русские буквы в именах файлов на диске Samba? Для сервера добавить в /etc/smb.conf [global] character set = koi8-r client code page = 866 preserve case = yes short preserve case = yes default case = lower mangle case = no Чтобы правильно монтировались smb разделы надо при компиляции ядра указать (ядро должно быть >=2.2.20 ) CONFIG_NLS_DEFAULT="koi8-r" CONFIG_SMB_NLS_DEFAULT=y CONFIG_SMB_NLS_REMOTE="cp866" CONFIG_SMB_NLS=y CONFIG_NLS=y 3.13. Как перекодировать из DOS/Win кодировки в KOI8-R ? Перекодировщиков CP1251 и CP866 --> KOI8-R просто огромное количество. Не надо писать новых ;-) Наиболее широко распространены iconv (входит в поставку glibc) и GNU recode ( <ftp://prep.ai.mit.edu/pub/gnu/recode/>) $ iconv -f866 -tKOI8-R -o<outfile> infile $ recode CP1251..KOI8-R winfile.txt Еще один URL для recode - <http://www.iro.umon- treal.ca/~pinard/recode/>. Перекодировщик русского текста с автоматическим определением исходной кодировки: <ftp://oskin.macomnet.ru/pub/linux/misc/xcode.c> В конце концов сгодится обычный lynx : $ lynx -assume_local_charset cp866 file.txt 3.14. * Как с помощью Vim редактировать файлы в различных кодировках? :e ++enc=cp1251 winfile.txt Загрузить файл, считая, что он в указанной кодировке, и перекодировать его в кодировку, в которой работает редактор. 3.15. * Как создавать и редактировать файлы в UTF-8 в редакторе VIM ? VIM должен быть версии 6.x и собран с поддержкой Multibyte: configure --with-features=huge --enable-multibyte Предположим, консоль русифицирована в KOI8-R, тогда в VIM надо дать команды : :set encoding=utf-8 :set fileencoding=utf-8 :set termencoding=koi8-r В RedHat VIM разнесен на несколько пакетов. vim-common-6.1-2 vim-minimal-6.1-2 vim-enhanced-6.1-2 Редактор vi, входящий в vim-minimal собран без Multibyte, vim из vim- enhanced -- с поддержкой. Надо пользоваться редактором vim. 3.16. Можно ли научить Vim понимать хоткеи, когда включена русская раскладка клавиатуры? В /.vimrc: set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo и т.д. 3.17. Как прикрутить к Golded/LNX почтовую базу в 866 кодировке ? Во-первых, нужно взять GoldEd+ c <http://golded- plus.sourceforge.net>. Кроме того, нужно взять таблицы перекодировки (например из пакета русификации, проходившего по файлэхе aftnged и лежащего на <http://collage.etel.ru/fileechos/ftn/> и прописать их в golded.cfg, примерно так: AREAPATH /mnt/c/fido/fecho/ AREAFILE FastEcho XLATPATH /home/ak/.golded/chars XLATLOCALSET KOI8 XLATIMPORT IBMPC XLATEXPORT IBMPC XLATCHARSET KOI8 IBMPC koi_866.chs XLATCHARSET IBMPC KOI8 866_koi.chs IGNORECHARSET 3.18. Можно ли в mc увидеть pусские буквы? Можно. F9 - options - display bits - Full 8 bit В последних версиях 'mc' появилась поддержка различных Charset-ов . Эта опция должна быть включена при компиляции 'mc' . $ ./configure --enable-charset .... 3.19. less Yuriy.Kaminskiy@p21.f517.n5020.z2.fidonet.org пишет: при настроенной локали указывать LESSCHARSET _HЕ HАДО_. Более того, в ~/.lesskey надо добавить #env LESSCHARSET= чтобы он игнорировал установку LESSCHARSET= глупыми программами (к примеру, man :) [после этого надо запустить lesskey для получения бинарного файла ~/.less] В противном случае он не будет вызывать set- locale(LC_CTYPE,"") и, как следствие, не будет icase search для русских букв. 3.20. telnet Если возникают проблемы с вводом русских символов, надо написать файлик ~/.telnetrc со следующей строкой: DEFAULT set outbinary Вы можете встретить проблемы при работе в кодировке Win-1251 -- не передается маленькая русская буква "я" 0xff. У протокола TELNET 0xff -- это первый символ управляющей последовательности. Дабы передать собственно "я", нужно его удваивать : 0xff, 0xff. В KOI8-R такой проблемы нет. 3.21. Что делать, если "слетела" консоль ? Скорее всего на консоль был скопирован какой-то двоичный файл, где случайно встретилась переключающая ESC-последовательность. Тогда : Сброс терминала : $ echo -ne "\033c" набрать вслепую, или с работающей консоли : # echo -ne "\033c" >/dev/ttyX Переключение на downloaded font $ echo -ne "\033(K" (возможно, еще придется перегрузить фонты, но это смотря как консоль сорвало...) Если вывалилась какая-то программа, которая использует curses, то проще $ stty sane В Red Hat все это делают reset; setsysfont <ctrl-j> reset - из ncurses См. 'man console_codes' и 'man stty' 3.22. Как русифицировать TeX под koi8-r? Все вопросы по TeX рекомендуется задавать в ru.tex. FAQ из этой конференции и прочая информация по TeX в России находятся по адресу <http://myke.webjump.com/tex/>. TeX и LaTeX во всех современных дистрибутивах говорят по-русски с раздачи. В этом случае имеется документ cyrguide.*, который и содержит развернутый ответ на вопрос о русификации TeX. Переносы не всегда работают "из коробки", иногда надо поправить language.dat, и пересобрать форматы. Вот что пишет Alex Nikiforov: Если уж о последних версиях, то в RH-6.0 с tetex 0.9 у меня получилось так: $ texconfig выбрать hyphenation -> latex раскомментировать russian Добавить в LaTeX файлах \usepackage[T2A]{fontenc} \usepackage[koi8-r]{inputenc} \usepackage[english,russian]{babel} и в файле можно переключаться между русским и английским командами \Russian и \Engish Что бы добавить форматы из cyrplain набора в texconfig выбрать FORMATS и добавить cyrtxinf tex language.dat cyrtxinf.ini для русского texinfo. Аналогично для cyrblue и cyramstx. Что бы добавить формат cyrtex ( русский TeX ) проще в каталоге web2c выполнить: initex '\input cyrtex.ini \dump' и бросить символическую ссылку с именем cyrtex на tex ( например в /usr/bin ) Что бы переключится на русский в этих plain форматах использовать команду \language N где N - номер, под которым числится русский язык в получившейся раскладке. В принципе можно заменить в конфигурации ruhypen на ruenhyp и оставить только совместные русско-английские правила переноса, но детально это не проверял и подробно описать не могу. 3.23. * Где взять русские Type1 ps фонты в KOI8-R? Современные Type1 фонты в общем не обязаны иметь информацию о "кодировке", а должны просто содержать русские символы с именами глифов типа "afii10049" (Association for Font Information Interchange). О "векторе кодировки" должно заботиться приложение, порождающее ps. См. документы Adobe: · <http://partners.adobe.com/asn/developer/technotes.html> (Fonts section) · <http://partners.adobe.com/asn/developer/PDFS/TN/5013.Cyrillic_Font_Spec.pdf> Free фонты Type1 c русскими символами: · Шарашкинские: <ftp://ftp.ice.ru/pub/fonts/type1/> · PsCyr, автор коллекции Konstantin Chumachenko, мантейнер - Александр Лебедев: <ftp://con155.phys.msu.su/pub/russian/psfonts/>, зеркало <ftp://ftp.vsu.ru/pub/tex/font-packs/pscyr/> · "TopTeams": <http://www.topteam.bg/linux/fonts.html>, копия <ftp://ftp.ice.ru/pub/fonrs/type1/> Также см. Cyrillic-HOWTO п."Кириллические шрифты" <http://www.inp.nsk.su/~baldin/Cyrillic-HOWTO-russian/Cyrillic- HOWTO-russian.html> К сожалению, некоторые приложения видят только первые 256 символов Type1 шрифта (Latin1 или ISO_8859-1). Именно для таких приложений нужны "отхаканные" шрифты, где вместо "circumflex" и "cedilla" расположены символы KOI8-R. Взять можно например с: <ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/> Прочитайте README. 3.24. Где найти хорошие русские шрифты для X Window System? Кроме распространенных шрифтов Cronyx существуют гораздо более эргономичные шрифты из проекта Cyr-RFX Дмитрия Болховитянова: <http://www.inp.nsk.su/~bolkhov/files/fonts/cyr-rfx/> Фонт -cronyx-fixed-* с полным соответствием koi8-r , в том числе с рамками: <ftp://ftp.ice.ru/pub/fonts/X11> Русские фонты из KSI-Linux: <ftp://ftp.ksi-linux.com/pub/patches/> Русские фонты из Black Cat Linux: <ftp://ftp.blackcatlinux.com/pub/blackcat-linux/6.2/SRPMS/SRPMS/urw- fonts-2.0-4bc.src.rpm> 3.25. Emacs/XEmacs Берем iso8859-5 шрифты с <http://www.inp.nsk.su/~bolkhov/files/fonts/cyr_rfx/>. Подключаем их к иксам, и выбираем в меню Mule нужную кодировку. Очень благородные изовые шрифты можно взять на любом зеркале GNU в каталоге intlfonts. конкретно, например, <ftp://ftp.chg.ru/pub/gnu/intlfonts/intlfonts-1.2-split/European.tar.gz> (131Кб). В Debian они уже есть. Подробная инструкция по русификации XEmacs имеется по адресу <http://www.linux.zp.ua/xemacs/>. 3.26. Как pусифициpовать dosemu ? Клавиатуpа - любым досовым pусификатоpом. Кроме того, есть патчик в <http://www.ice.ru/~vitus/misc/>, который позволяет обойтись без русификатора клавиатуры. В X-ах - рекомендуется, так как позволяет избежать двух клавиш переключения - одной в DOS другой - на остальном десктопе. При работе с удаленным dosemu (по telnet/ssh/rsh) - необходим. Фонты - в консольном dosemu тем же pусификатоpом, в X-овом - поставить фонт с 866-ой кодиpовкой. Взять можно по адpесам <http://www.ice.ru/~vitus/works/x11.html>, <ftp://ftp.dosemu.org/dosemu/Development/>vga_cyr8x16.pcf.gz или <http://www.inp.nsk.su/~bolkhov/files/fonts/vga4dosemu/>. 3.27. А как русифицировать StarOffice (там же - а почему он у меня не ставится и т.п. Почитайте замечательную страничку Леона Кантера по адресу - <http://www.blackcatlinux.com/StarOffice/> Составаитель FAQ был бы рад узнать, в какой мере сведения на этой странице применимы к Open Office и Star Office 6. 3.28. Как русифицировать AbiWord? Обратитесь по адресу <http://www.hippo.ru/~hvv/abiword/> 3.29. Как сделать русскоязычный интерфейс в Mozilla? <http://www.mozilla.ru/download/> Вот более общая и более удобная в плане установки из самой мозиллы ссылка: <http://www.mozilla.org/projects/l10n/mlp_status.html> 3.30. Как русифицировать Netscape {4|3}/научить его понимать win-кодировку ? · Возьмите Netscape 4.06 и выше, собранный под glibc2, его русифицировать не надо. Брать его желательно у производителя вашего дистрибутива. (при настроенной локали, xkb и шрифтах, установленных согласно ответу на вопрос 0.13) Еще, netscape имеет мерзкую привычку запоминать шрифты в ~/.netscape/preferences.js (и, кажется, еще где-то). И если он вовремя не увидел какой-то шрифт, то он может его вообще никогда не увидеть. Иногда помогает только полное изничтожение директории ~/.netscape · для тех, кто не испытывает любви к падучему тормозному монстру: netscape 3.xx особой русификации тоже не требуют - достаточно просто шрифтов в кодировке koi8-r, но с win-кодировкой будут, естественно, проблемы. Единственная пакость - управляющие элементы форм (кнопки/селекторы и т.д.) выводятся в latin1. Лечится echo 'Netscape*documentFonts.charset*koi8-r: iso-8859-1' | xrdb -merge после чего koi8-шрифты появляются в списке шрифтов для "Western". (отныне ваша кодировка по умолчанию именно она, а про koi забудьте.) Netscape 3.x берется с <ftp://archive.netscape.com> Login:archive Password:oldies dir там не работает, качайте /archive/index.html · Принципиально не русифицируемые вещи: у обоих нетскейпов (3 и 4) будут трудности со страницами в кодировке, не соответствующей 'meta content-type' в заголовке (традиционная проблема серверов с выбором кодировок и авторов, пользующихся тулзами от MS). Hе лечится ничем, кроме хака бинарников. Что еще хуже - если в документе явно указан шрифт, и такой шрифт, не дай бог, у вас имеется (естественно, не русифицированный), то им все и будет нарисовано. Решений два: или не иметь в системе не-русифицированных шрифтов вовсе, или отключить в нетскейпе автоматическую загрузку изображений. (при этом "заодно", как ни странно, отключится и показ шрифтов, указанных в документе. Hажав Alt-I, вы получите возможность посмотреть картинки. Hадеюсь, текст к этому моменту вы уже запомнили ;) 3.31. Как мне заставить приложение для иксов использовать шрифты с koi8-r, а не iso8859-1 ? a) Постарайтесь выяснить, откуда приложение берет имя фонта. Чаще всего приложение хранит имена используемых фонтов в "базе ресурсов": в персональной /.Xdefaults или системной /usr/X11R6/lib/X11/app- defaults/ базе. Имена используемых фонтов хранится в форме XLFD, т.е. там можно применять "*". Например: Netscape*fontList: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-koi8-r Посмотреть "ресурсы" приложения можно утилитой appres : $ appres XTerm В man практически на любую X программу имеется секция RESOURCES. Если программа написана с применением какого-либо "Toolkit"-а : GTK, Qt, Motif, e.t.c., чаще всего достаточно русифицировать Toolkit. Русификация GNOME/Gtk и Qt таким способом описана чуть ниже. b) С помощью ключа -fn font или -font font. Этот ключ обрабатывается в XLIB и он скорее всего будет работать в любой X программе. c) Метод грубого хака. Нужно взять русские шрифты с <ftp://ftp.relcom.ru/pub/x11/cyrillic/fonts/>, там есть шрифты adobe-*-koi8-1 (c fonts.alias, делающим из них -iso8859-1), но реально содержащие кириллицу в koi8-r в старшей половине. При этом шрифты с теми же именами и "настоящими" символами iso8859-1 становятся недоступны. Стандартных шрифтов из XFree86-cyrillic-fonts недостаточно. Кроме того, пути к русским шрифтам в конфиге иксов или фонт-сервера должны быть впереди всех прочих. Однако лучше не использовать этот метод, а написать автору программы (или прислать ему patch ;) для вынесения имени фонта в "ресурс". 3.32. Почему в Gnome или программах, использующих GTK+, кое-где русский текст выводится латиницей? Где прописываются используемые ими шрифты? Если gtk не находит нужных шрифтов (в частности, нужного размера), он режет 8-й бит. Шрифты задаются в /etc/gtk/gtkrc.$LANG. Поэтому нужно создать файл gtkrc.ru или поправить существующий. Внутри должно быть примерно следующее (названия шрифтов, размеры и прочие атрибуты можно исправить по вкусу, но эти шрифты должны содержать кириллицу в koi8-r): style "gtk-default-ru" { fontset = "-cronyx-helvetica-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-courier-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-fixed-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-times-medium-r-normal--*-*-*-*-*-*-koi8-r" } class "GtkWidget" style "gtk-default-ru" И скопировать этот файл в 'gtkrc.ru_RU.KOI8-R' или сделать symlink: $ cd /etc/gtk/ $ ln -s gtkrc.ru gtkrc.ru_RU.KOI8-R Подробности см. <http://www.gtk.org/tutorial/gtk_tut-21.html>, а также <http://www.linux.org.ru/gnome/> 3.33. Qt и русскоязычные программы <http://kde.ru/docs.php?action=index> 3.34. Как русифицировать KDE? <http://www.kde.org/international/russia/localization.html> 3.35. Что сделать, чтобы было можно работать в юникодной локали (ru_RU.UTF-8) в консоли и в иксах? К сожалению, "железо" консоли IBM-PC (VGA/SVGA) может отображать только 256 символов одновременно. Еще 32 символа отъедают рамки. Если пожертвовать атрибутами, количество символов можно довести до 512. Для UNICODE явно маловато. См. Console programming HOWTO <http://devel.linvision.com/doc/fbh/current/index.html> Если устраивают эти ограничения, то переход (пакет console-tools) в/из однобайтового режима консоли в режим UTF-8 осуществляется командами unicode_start(1) и unicode_stop(1) . Узнать текущий режим можно командой vt-is-UTF8(1) . Документация - в console-tools/lct.txt Эмулятор терминала XTerm в X Window не имеет аппаратных ограничений. Запуск : xterm -u8 с фонтами *-iso10646-1 . Наиболее современные программы не используют "терминальный ввод-вывод" вообще, а написаны с использованием ToolKit-ов, поддерживающих UNICODE (Qt, GTK, Java .e.t.c.) или напрямую пользуются возможностями GUI X Window. Для правильной работы приложений в UTF-8 необходимо, чтобы системная локаль также была UTF-8, например LANG="ru_RU.UTF-8" . Дополнительная информация: UTF-8 and UNICODE FAQ: <http://www.cl.cam.ac.uk/~mgk25/unicode.html> The Unicode HOWTO: <http://www.tldp.org/HOWTO/Unicode-HOWTO.html> How do Unix terminals work?: <http://czyborra.com/unicode/terminals.html> Unicode Howto for KDE developers: <http://developer.kde.org/documentation/library/kdeqt/kde3arch/KDE- Unicode-Howto.html> Есть микро-HOWTO вот здесь: <http://lists.debian.org/debian- russian/2001/debian-russian-200111/msg00203.html> 3.36. Кто занимается переводом документации и пользовательских интерфейсов на русский язык? Russian Linux Documentation Project: <http://rldp.linux.ru.net>. Ведет Alexsandr Mikhailov, <mailto:alexmikh@mail.ru> Информация: <http://www.tldp.org/vlist.html#te> Русская команда перевода GNU: <http://www.gnu.org.ru>, <http://www- ru.gnu.org.ru/>, <http://www2.iro.umontreal.ca/~pinard/po/registry.cgi?team=ru> Проект Алексея Махоткина "Manpages-Ru" посвящен переводу пакета manpages на русский язык. <http://www.alexm.here.ru/manpages-ru> KDE: <http://www.kde.org/international/russia/> GNOME: <http://www.linux.org.ru/gnome/> 4. Системное администрирование 4.1. А какие бывают версии ядра Линукса ? А почему при апгрейде/компиляции ядра у меня #$@#$#@%@#$%@#$? А что такое девелопмент-ядра и вообще, почему говорят, что новая версия ядра - 2.2.x вышла вчера, когда я месяц назад скачал 2.3.какую-то ? Каким ядром лучше пользоваться ? (Alex Kanavin, адрес выше, Alexey Mahotkin <mailto:alexm@hsys.msk.ru>) Начнем с официальной серии ядер, выпускаемых непосредственно Линусом Торвальдсом. Прежде всего, надо разобраться, что такое стабильные и нестабильные ядра (stable и development) и как они нумеруются. Пусть имеется ядро версии a.b.c · a - это основной номер версии. Меняется он раз в несколько лет, как правило, когда нестабильная серия с очень существенными изменениями становится стабильной. · b - это patchlevel. Именно он определяет, является ли данное ядро стабильным или нет. Если он четный - ядро стабильное, если нечетный - нестабильное. Числа a и b в виде a.b называется серией ядер. · с - это sublevel. Он определяет номер ядра в серии. Официальные ядра в виде исходных текстов можно скачать с <ftp://ftp.kernel.org> и его многочисленных мирроров (российский: <ftp://ftp.ru.kernel.org>, но им лучше не пользоваться, так как он не миррорит .bz2, если вам нужен именно российский миррор, то попробуйте <ftp://ftp.rmt.ru/>, <ftp://ftp.chg.ru/Mirrors/ftp.kernel.org/> или <http://ftp.chg.ru/Mirrors/ftp.kernel.org/>). [пользуясь случаем, хочу передать сообщение для <ftp://ftp.chg.ru> , <ftp://ftp.ru.kernel.olg> и других официальных россйских мирроров: если уж вы миррорите, например, redhat, то делайте это целиком и каждый день, а не раз в месяц кусочками. А то апдейты у вас появляются через месяц после того, как они были выложены на ftp.redhat.com, да и то - только к последней версии. Ну и кому нужен такой "официальный" mirror? Взялись быть зеркалом - делайте это как следует, не можете - откажитесь.] Кроме полных исходных текстов ядра там же можно найти патчи - значительно меньшие по размеру файлы, позволяющие превратить исходники версии a.b.c в исходники версии a.b.c+1 c помощью команды patch. Эти же патчи ходят по файлэхе usyslnx. Стабильные ядра предназначены для широкого использования и проблемы при их использовании или компиляции встречаются нечасто. Как правило в стабильных сериях от версии к версии только исправляются ошибки и добавляются драйвера, не требующие изменений в самом ядре и хорошо себя зарекомендовавшие. Стабильные ядра можно безбоязненно обновлять, не трогая прочий софт - если вы остаетесь в рамках одной серии, проблем возникнуть не должно. (По крайней мере в теории, на практике, возможно, придется вернуться к старому ядру и подождать выхода еще одной версии.) Новые версии выходят нечасто - примерно раз в месяц, и реже. Нестабильные ядра, наоборот, не предназначены для использования массами. Это полигон для тестирования множества разнообразных возможностей, только появившихся и еще не готовых для использования никем, кроме их собственных разработчиков и людей, чье хобби - забавляться с нестабильными ядрами. Здесь от версии к версии может меняться очень многое и правильную работу никто не обещает (впрочем, то же относится и к стабильным ядрам, но в менее "жестком" смысле). При их использовании нужно быть готовым ко всему. Прежде всего к тому, что ядро просто не скомпилируется. Потом оно может не загрузиться, зависать, портить файловую систему и вообще всячески глючить. Кроме того, может начать глючить софт, взаимодействующий с ядром напрямую. Нестабильные ядра выходят гораздо чаще стабильных - иногда несколько новых ядер в неделю. Как нестабильная серия становится стабильной и наоборот ? Очень просто: в какой-то момент Linus Torvalds объявляет т.н. feature freeze, после чего к включению в нестабильное ядро принимаются только исправления ошибок (bugfix). Через некоторое время очередной версии присваивается номер не a.b.c+1, а a.b+1.0 или a+1.0.0 - так появляется новая стабильная серия, вокруг чего масс-медиа устраивают большую шумиху :) Еще через некоторое время выпуск версий в предыдущей стабильной серии прекращается и происходит т.н. fork или разветвление - одновременно с очередным стабильным ядром появляется нестабильное, отличающееся от первого только номером версии. Заметьте, что термины "стабильный" и "нестабильный" в чем-то условны. Понятно, что "нестабильное" ядро 2.3.128 за несколько минут до его превращения в стабильное ядро 2.4.0 по определению стабильно, а стабильное ядро 2.2.xxx, в котором обнаружена фатальная ошибка распределения памяти -- опять же по определению нестабильно. В общем, сами понимать должны, не маленькие. В силу открытости процесса разработки ядра Linux существует несколько побочных ветвей развития. Одной из основных таких ветвей являются ядра серии -ac, которые выпускает Алан Кокс -- один из основных разработчиков Линукса. Во-первых, серия -ac служит своеобразным буфером, в котором тестируются некоторые новые драйвера, возможности, etc. перед тем, как этот, уже оттестированный, драйвер будет отправлен Линусу. Во-вторых, в ядрах -ac имеется определенный набор вещей, которые не устраивают Линуса, но устраивают Алана и к тому же достаточно популярны. Существуют также еще несколько менее важных (хотя ваше мнение по этому вопросу может отличаться) побочных веток: например, International Kernel Patch с поддержкой сильной криптографии, devfs-patch с поддержкой файловой системы /dev, раньше была отдельная поддержка ISDN, ну и так далее и тому подобное). Кроме того, многие производители дистрибутивов распространяют ядро с определенными патчами, которые они считают необходимыми и которые лучше вписываются в инфраструктуру дистрибутива). Каким же ядром все-таки пользоваться? Простейший ответ: тем, которое входит в используемый вами дистрибутив. Этот ответ приемлем для большинства пользователей Линукса. Если же вы оказались в ситуации, когда, например, нужное вам железо поддерживается только в каком-то патче, который не вошел ни в одну из основных ветвей, значит, вам придется брать исходники оригинального ядра, патчи, которые использовали создатели дистрибутива, патчи, которые необходимы лично вам, прикладывать все эти патчи друг к другу, компилировать и устанавливать ядро вручную (ну, или создать свой собственный пакет на основе дистрибутивного). Вам также придется отслеживать выход новых версий патча, контактировать с его автором, сражаться с его глюками и прилагать всяческие усилия к тому, чтобы оный патч, наконец, приобрел официальный статус. Возможны и другие варианты, при которых может потребоваться пересборка, наиболее очевидный - вы столкнулись с ошибкой в ядре, которая исправлена в более свежей версии. В этом случае стоит сперва выяснить, не выложил ли производитель вашего дистрибутива исправленное ядро на свой ftp сервер, в то же место, где лежат прочие обновления. Такое ядро доступно в форме пакета (rpm или deb), пригодного к непосредственной установке пакетным менеджером, либо в дистрибутиве имеется система автоматического обновления пакетов. Если же вам просто хочется поставить более свежую версию ядра или пересобрать ядро без всякой причины ("убрать лишние драйвера", "изучить процесс сборки" и т.п. причинами не считаются ;-), рекомендуется серьезно подумать, прежде чем приступать к действиям. Не стоит чинить то, что не сломано. Объем трафика ru.linux, посвященный проблемам при пересборке ядра весьма велик и не надо еще больше его увеличивать :-). Однако обновления ядра от производителя все-таки устанавливать рекомендуется в любом случае :-) Итак, вы решили самостоятельно скомпилировать/установить ядро. Если оно development - очень рекомендуется подписаться на список рассылки linux-kernel. В любом случае желательно просматривать глазами патчи перед установкой (особенно на предмет добавления новых опций и изменений в каталоге Documentation). Еще крайне рекомендуется оставлять старое ядро и делать в lilo отдельный target типа oldlinux, на него показывающий. При смене стабильной серии на более новую стабильную надо прочесть Documentation/Changes - как минимум. А лучше - все из этого каталога, что относится к вашему железу и софту. 4.2. Как произвести компиляцию ядра? Это заложено в установках линукса или здесь есть какие хитрости? cd /usr/src/linux Опции, с которыми компилируется ядро (тип процессора, драйверы которые нужно включить (возможно в виде модулей) и еще сотни других вещей), задаются в файле /usr/src/linux/.config. Так вот, желательно не создавать его самому с нуля (особенно, если вы собираете ядро первый/второй/третий раз в жизни или наложили патч на исходники из которых уже что-то компилировали), а взять за основу .config с которым было собрано старое, работающее ядро. При этом вам прежде всего надо выдать команду make oldconfig - она используется, когда есть .config от _другой_ (обычно, более старой) версии ядра, и нужно просто получить точно такой же для текущей (возможно, ответив на пару вопросов о тех фичах, которых в старом не было), не отвечая заново на все три сотни вопросов. Затем выдайте make menuconfig и исправьте те опции, ради которых вы собственно и решили пересобрать ядро. Если вы используете Red Hat и хотите воспользоваться теми .config, c помощью которых были собраны ядра в этом дистрибутиве, то возьмите их из kernel-sources-*.i386.rpm/usr/src/linux/configs/ Затем: make dep make clean make zImage (make bzImage для ядер версий > 2.2) make modules Если у вас раньше стояла эта же версия ядра, то удалите старые модули от этого ядра (/lib/modules/версия). make modules_install /usr/src/linux/arch/i386/boot/(b)zImage - и есть свежесобранное ядро. Его теперь можно поинсталировать на место старого. Хотя лучше сначала попробовать, работает ли оно. Нужно добавить в lilo.conf еще один выбор - например, linux.test, - который берет ядро прямо из /usr/src/linux/arch/i386/boot/zImage. (Valentin Nechayev <mailto:nnlx@nn.kiev.ua>) Я пpедлагаю дpугой метод - пpовеpен только для Red Hat'а. cd /usr/src/linux-нужная_веpсия vi Makefile и заменить extraversion на свой - напpимеp, EXTRAVERSION = -vasya1 после этого все то же самое, но 1. make modules_install поставится в свой отдельный каталог 2. установка (пpавильная!) ядpа в /boot сделается сама чеpез make install 3. это работает только с ядрами 2.2.x (у 2.0 просто нет параметра EXTRAVERSION) и, по крайней мере теоретически, может "сломать" чей-нибудь автоконфигуратор, рассчитывающий на n.n.nn по uname -r. (Alexander Pevzner, 2:5020/59.9) Тем, кто отважился на сборку ядра лично под себя, советуем обратить внимание на следующие факты: · В начале ядерного Makefile (/usr/src/linux/Makefile) есть переменная EXTRAVERSION. Используя ее можно получать ядра одной и той же версии, но с названиями, отличающимися суффиксом (напр, 2.2.12-20 и 2.2.12-vasya). Это хорошо, поскольку позволяет сохранить экземпляр ядра, который заведомо умеет грузиться. Родное ядро, с которым ставилась система, лучше сохранить на случай всяких неприятностей. Hадо только не забыть добавить дополнительную запись в /etc/lilo.conf (достаточно иметь всего 2 записи: на родное ядро и на свежесобранное). · В редхате в /usr/src/linux правильно работает make install и make modules_install. Ядро и модули копируются в нужное место и правильно настраиваются символические линки. Причем, что приятно, это относится не только к ядрам, полученным в виде .src.rpm, но и если просто взять ядро с ftp.kernel.org, все заработает. (эту правильную установку осуществляет редхатовский скрипт /sbin/installkernel, входящий в пакет с фирменным ядром редхата, поэтому перед make install желательно убедиться в наличии этого скрипта (Alex Kanavin).) EXTRAVERSION в этих ядрах по дефолту не выставлено, поэтому ядро будет получаться под именем навроде 2.2.13 (конечно, EXTRAVERSION при желании можно выставить) · Когда ядро собирается в дереве, в котором уже собиралось ядро, очень рекомендуется после make *config сказать make clean. Во всяком случае, если какие-то части ядра были переселены в модули или обратно, надо делать это _обязательно_, иначе есть шанс собрать неправильное (не работающее) ядро. 4.3. Как изменить максимальное количество открытых файлов? В ядрах 2.2.10 и более новых: echo 30000 > /proc/sys/fs/file-max echo 30000 > /proc/sys/fs/inode-max и сделать ulimit -n 2000 перед запуском нужного демона. Цифры подбираются под задачу. (Yuriy Kaminsky 2:5020/517.21) И не забыть, что если программа использует select, то будет большой-большой облом. Вплоть до затирания стека и падения (at least glibc-2.0 - см. /usr/include/gnu/types.h - и иже с ним; исправления #define __FD_SETSIZE 1024 на нужное число и пересборки всех приложений и библиотек , которые могут заюзать select для дескрипторов выше 1024 будет достаточно [т.е., скажем, если X'овому приложению нужно открывать более 1024 файлов, то необходимо пересобирать Xlib и Xt как минимум]; ах, да, саму libc пересобирать, вроде, не нужно). 4.4. Подскажите, pls, www/ftp где можно получить доку по администрированию Linux'а. <http://www.linuxdoc.org> Hа русском языке - посмотрите на <http://linux-ve.chat.ru> 4.5. Q/A: development site для libc, binutils, ld.so <ftp://ftp.yggdrasil.com/private/hjl> - если кому-то понадобилась тухлятина. В частности, именно там надо искать libc5 последних версий) Сейчас все это лежит на <ftp://ftp.kernel.org/pub/linux/software/> и его локальных миррорах. ( <ftp://ftp.ru.kernel.org> не миррорит .bz2 (на 20% меньше gz, многое из каталога linux/kernel/people в .gz не выкладывается), поэтому вместо <ftp://ftp.ru.kernel.org> лучше пользоваться <ftp://ftp.rmt.ru> или <http://ftp.filesearch.ru>) 4.6. Как загружается система? Очень коротко, подробнее можно прочесть в вышеназванных источниках: ядро монтирует корневую файловую систему, и запускает первый процесс init, разыскав его исполняемый файл в нескольких стандартных местах. Этот процесс читает свой конфигурационный файл /etc/inittab (man inittab) и запускает все остальные процессы согласно инструкциям из этого файла. Обычно в inittab прописывается запуск процессов *getty, управляющих терминалами, виртуальными консолями и последовательными линиями (то есть именно *getty ответственны за запуск login (сравнивающий имя и пароль, указанные пользователем, с тем, что прописано в /etc/passwd и в случае успеха запускающий соотв. shell), pppd, ifcico и т.д., что именно запускается и в каком случае - зависит от конкретного getty). Для виртуальных консолей обычно используется mingetty, для модемов - mgetty. Кроме того, здесь же прописываются скрипты, запускающиеся на различных т.н. "уровнях выполнения", из которых в свою очередь запускаются все остальные системные сервисы, осуществляется настройка сети, проверка файловой системы и т.д. Существует два подхода к организации этих уровней и скриптов: BSD и SysV. Оба они описаны в книжке Э. Немет (см. выше), а про SysV можно еще прочесть на <http://www.sensi.org/~alec/unix/redhat/sysv-init.html>. 4.7. После удаления /var/log/syslog и /var/log/messages и пеpезагpузки эти файлы не пополняются и некотоpые сообщения идут на консоль. Как пpавильно чистить log-и? Логи могут быть от syslog'а и от отдельных демонов. syslog'овые логи чистятся так: mv $log ${log}.old (или rm если не нужен, но лучше сохpанить) touch $log kill -1 `cat /var/run/syslogd.pid` Процесс автоматизируется с помощью logrotate. Как чистить не-syslog'овые логи - только RTFM на конкpетную тулзу и никак иначе. 4.8. Где взять документацию на pam? <http://www.kernel.org/pub/linux/libs/pam/> 4.9. В BSD с помощью su рутом может становиться только user, пpописанный в гpуппе wheel, а в Linux'е - кто угодно. Hехоpошо это как-то. Может быть, есть путь это испpавить? Надо ставить su не из gnu sh_util, которая в принципе этого не умеет (RTFmanpage на предмет, по чьей милости), а какую-нибудь другую. Но ежели su пользует pam (в Red Hat, напpимеp и основанных на нем дистрибутивах, а также в Debian 2.2), подобное поведение достигается добавлением стpочки: su auth required pam_wheel.so в /etc/pam.conf, если pam дpевний, или: auth required pam_wheel.so в /etc/pam.d/su, если поновее. Такой механизм получше будет, поскольку поведение можно ваpьиpовать на ходу. Hапpимеp, манипулиpуя паpаметpами 'group' и 'deny', pазpешить это делать всем, кpоме одной гpуппы: pam_wheel.so group=guest deny Пpавда, модуль этот стpанный, забывает смотpеть на gid, а смотpит только на groups... А может так и надо... В Debian 2.1 надо поставить пакетик secure-su и посмотреть на файл suauth. В Slackware от 3.3 (гаpантиpовано) это pешается путем pедактиpования /etc/login.defs Hужно, что бы было SU_WHEEL_ONLY yes тогда su смогут использовать только входящие в гpуппу root. В слаквари от 3.4 (до 4.0, где su опять из другой банки) лучше прочесть сперва man 5 suauth - там возможна гораздо более гибкая настройка su, чем тупая "группа ноль". Если память не вpет, то это же спpаведливо в SuSe 6.x. В SuSE 5.3 su из sh_util, со всеми вытекающими. К сожалению, su, понимающая login.defs и suauth, страдает другими болезнями - в частности, не имеет удобных ключиков -m и -s. Если секьюрити важнее удобства... 4.10. Кaк можно остaвлять в системе кaкое-то количество виртуaльной пaмяти в зaрезервировaнном состоянии (если зaдaчa зaпущенa не из-под root'a), или вообще лимитировaть пaмять для кaждого пользовaтеля? man setrlimit 4.11. Как сделать так, чтобы программы XXXX и YYYY могли одновременно использовать модем или еще что-то на терминальном порту? Во-первых, они должны использовать одно и то же имя файла для доступа к порту, скажем, /dev/modem. Если одна программа использует /dev/ttyS0, а другая /dev/cua0 (а третья -- /dev/modem, который линк на один из этих двух :), - то они точно передерутся. Во-вторых, они должны использовать механизм lock-файлов. Hаверное, все известные программы его используют, но все же. В-третьих, они должны видеть локи друг друга. То есть, в их конфигурации должен быть указан один и тот же каталог для создания локов, они должны использовать один и тот же формат имен файлов (обычно LCK..<имя файла порта>), один и тот же формат самих файлов (обычно десять символов -- PID программы в ASCII), и иметь привилегии, достаточные для создания и удаления своих лок-файлов. 4.12. В чем pазница между /dev/cua* и /dev/ttyS*? Hе надо пользовать cua*. То есть вообще. Они в ядре - только для обратной совместимости со схемой, принятой в BSD. В BSD /dev/cuXX -- это "Call Up" порты, т.е. для исходящих звонков -- на них всегда есть CD. В Linux /dev/cuaXX не применяется и новые ядра даже выдают предупреждение. 4.13. Как правильно настроить время на машине с Linux? Как синхронизировать его с Интернетом? Как синхронизировать клиентов с сервером? Для установки времени в CMOS используется утилита hwclock из свежего комплекта util-linux. Если на вашей машине стоит только Linux, то очень удобно записать в CMOS время по Гринвичу, а в одном из стартовых скриптов сказать /sbin/hwclock --hctosys --utc Если на машине стоит, кроме Linux, какая-то другая операционная система, то в CMOS пишется местное время, а в стартовом скрипте пишется просто /sbin/hwclock --hctosys Для того, чтобы программы правильно определяли местное время (с учетом летнего времени и тому подобных обстоятельств), надо: · убрать из стартовых скриптов всякие упоминания переменной окружения TZ, если таковые имеются; · сделать так, чтобы файл /etc/localtime был правильной символической ссылкой на соответствующий файл из /usr/share/zoneinfo, например, rm -f /etc/localtime ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime В Red Hat-based системах параметр utc задается в файле /etc/syscon- fig/clock. Непосредственно редактировать стартовые скрипты не нужно. Кроме того, этот параметр и timezone можно задать с помощью утилиты timeconfig. Проверить правильность задания времени можно, запустив сначала ``date'' (должна показать правильное местное время), а затем ``date --utc'' (должна показать правильное время по Гринвичу). Для того, чтобы синхронизировать время с часовыми серверами в Internet, сходите на <http://www.ntp.org>. Там раздается пакет xntpd и приведен список публично доступных часовых серверов в Интернете. Из всего комплекта xntpd вам потребуется лишь программа ntpdate. Периодически, например, при каждом звонке провайдеру, выполняйте, например, такую команду: /usr/local/bin/ntpdate ntp1.gamma.ru Если на вашей машине под Linux установлена Samba, то клиенты под MS Windows могут синхронизировать время с этой машиной с помощью команды C:\> NET TIME \\LINUXBOX /SET /YES (Alexey Mahotkin <mailto:alexm@hsys.msk.ru>) 4.14. Hадо заставить uucico ходить на телнетовский порт, а в логах наблюдается откровенный мусор: \177}\030\177} \177}#\177} port type pipe port command /bin/telnet -8E hostname 4.15. А как смонтировать дискету если я не root? Попробуйте fdmount /dev/fd[0-9] mountpoint, ну и не забыть почитать man fdmount, или root мог написать 'user' в /etc/fstab, и обычный пользователь может говорить "mount <mountpoint>". man 8 mount. Еще лучше вовсе не монтировать дискеты, а пользоваться mtools. 4.16. Отчего кое-кто (INN, SENDMAIL) так долго думает при старте? Hадо заглянyть в директорию /var/log и посмотреть, нет ли в логах сообщений от этой программы. Для sendmail - 99% воплей пpо долгое думанье объясняется попыткой pезолвинга адpесов локальных интеpфейсов. Hадо эти адpеса занести в /etc/hosts. Альтеpнативный ваpиант - O DontProbeInterfaces=True в /etc/sendmail.cf. 4.17. А чего бы такого крутого предпринять по части безопасности системы? Для начала прочтите /usr/doc/HOWTO/Security-HOWTO. Hа <http://www.openwall.com> можно найти патч Solar Designer-а, который помогает от исполняемого стека и еще восьмидесяти восьми болезней. Кроме того, рекомендуется придирчиво изучать <http://rootshell.com> <http://packetstorm.securify.com>, <http://www.linuxsecurity.com> , и подписаться на списки рассылки bugtraq, linux-security, и список по безопасности того дистрибутива, которым вы пользуетесь. Еще одна, хотя и несколько радикальная ссылка: <http://www.infowar.co.uk/thc/files/thc/anonymous-unix.html> 4.18. Хочу скопировать один диск на другой. Как? · Если имеется ввиду перенос содержимого одной файловой системы в другую, то одним из корректных способов сделать это будет ( cd /old_fs && tar cf - . ) | ( cd /new_fs && tar xvpf - ) · dump 0f - /old_fs | ( cd /new_fs && restore xf - ) и набирать побыстрее, и понять легче, и кое-что, что у tar не получится или получится с трудом, таким образом можно скопировать (атрибуты, файлы с "дырками"). Для tar можно и попроще: tar -C /old_fs -cf - . | tar -xpf - -C /new_fs - GNU tar более интеллектуальная штука, чем dump. · Подробное руководство есть в /usr/doc/HOWTO/mini/Hard-Disk-Upgrade 4.19. Зачем нужны странные права доступа на каталогах, например, sticky или setgid bit? Sticky bit (chmod +t) на каталоге означает, что файлы в этом каталоге могут стирать только их владельцы или суперпользователь. Обычно на /tmp и /var/tmp этот бит включен. Setgid бит (chmod +g) на каталоге означает, что файлы, созданные в этом каталоге, будут иметь ту же группу-владельца, что и сам этот каталог. Также, если в setgid-каталоге создаются другие каталоги, то они также будут иметь setgid-бит. По словам ДиДжея Бернстайна, "есть три метода задания групп-владельцев файлов: BSD-шный, бесполезный и SVR4-й. При BSD-шном методе файлы всегда получают ту же группу-владельца, что и каталог, в котором они были созданы. Это очень удобно с точки зрения администратора.(*) При бесполезном методе новые файлы принадлежат основной группе, на правах которой выполняется текущий процесс. Этот случай моментально приводит к настоящему кошмару. SVR4-й метод почти совпадает с бесполезным, но если на каталоге есть setgid-бит, то включается BSD-шный метод." Заметьте, что с помощью флага монтирования bsdgroups можно включить BSD-шный метод работы с группами-владельцами. Подробности -- mount(8). (*) Объяснение, почему удобно, можно найти в руководстве Red Hat - rhref/s1-sysadmin-usr-grps.htm, Users, Groups and User-Private Groups) 4.20. Сообщения на экране или в логах: modprobe: Can't locate module <имя-модуля> Такое сообщение может появляться по нескольким причинам: · Такого модуля действительно нет. В этом случае нужно выяснить его назначение и причину, по которой система пытается его загрузить. Затем, в зависимости от результатов выяснения, либо прописать в modules.conf (про формат которого есть man-страница) такую строку: alias <имя-модуля> off либо собрать этот модуль из его исходных текстов или исходных текстов ядра Linux. · Такой модуль существует, но программа modprobe, вызываемая ядром, не может установить соответствие между именем модуля, которое передает ядро и реальным именем файла, содержащего этот модуль. В этом случае нужно либо обновить пакет modutils, либо прописать в /etc/modules.conf: alias <что-не-может-найти> <имя-файла-без-.o> (я буду признателен тому, кто укажет способ установить это соответствие, если оно не прописано внутри modprobe) 4.21. Sendmail ругается: sh: <что-то> not available for sendmail pro- grams Прочтите man smrsh или /usr/share/doc/sendmail/README.smrsh 5. Сетевое администрирование 5.1. Почему telnet не пускает пользователя root? Как зайти удаленно с правами root? telnet (а точнее, login) не пускает root потому, что root может заходить в систему только со специальных защищенных терминалов, перечисленных в /etc/securetty. Обычно там перечислены только виртуальные консоли tty1-ttyN. Другие места считаются небезопасными, потому что пароль, вводимый оттуда, может передаваться по сети открытым текстом (что и происходит в случае использования telnet), а значит его может узнать злоумышленник, "прослушивая" сеть и анализируя "чужие" пакеты. Ответов на второй вопрос несколько: · быстрый и неправильный способ - удалить файл /etc/securetty или прописать в нем псевдотерминалы /dev/ttyP*. Это опасно потому, что дает злоумышленнику возможность не только узнать пароль, но и воспользоваться им для удаленного захода на машину. · менее быстрый, но все равно неправильный способ - заходить на машину обычным пользователем, а затем использовать команду su или sudo. И в этом случае оба пароля передаются открытым текстом, со всеми возможными последствиями. · самый правильный способ - полностью отключить сервисы telnet, не-анонимный ftp, rsh, rlogin и заменить их на ssh, шифрующий все, что передается через сеть и поддерживающий аутенификацию не только через пароль, но и с использованием криптографии с открытым ключом. Клиент и сервер ssh для Unix можно взять на <http://www.openssh.com>, про клиенты для Windows написано в разделе "Прочее". 5.2. Hадоело запускать ppp (slip) руками. Хочу чтобы сам звонил, когда надо. Медленно и печально идем на <http://diald.sourceforge.net>, сливаем diald, разворачиваем, читаем README, совершаем _минимальные_ телодвижения на предмет конфигурации и инсталляции, и получаем эмулятор выделенной линии. Как только требуется выйти во внешний мир, diald дозванивается до провайдера, устанавливает роутинг и можно работать. Внимание: учтите, что с ядрами 2.2.x нормально работает diald-1.99 и выше. 0.16, лежащий везде, в том числе и в некоторых дистрибутивах, предназначен только для 2.0. (почему-то эта информация пропущена в Changes) Да, еще... Рекомендации лучших линуксоводов: в файле /etc/resolv.conf надо размножить строчки nameserver xxx.xxx.xxx.xxx раза по три, чтобы он по таймауту не отваливался раньше, чем diald дозвонится. Полезно также удалить default route на eth0. А еще можно так: в diald.rc пишем ip-up "cp /etc/resolv.conf.connected /etc/resolv.conf" ip-down "cp /etc/resolv.conf.local /etc/resolv.conf", где в resolv.conf.connected написано: search yourdomain nameserver xxx.xxx.xxx.xxx (я предпочитаю 127.0.0.1) а в resolv.conf.local написано: domain yourdomain Хорошо настроить и использовать локальный DNS-cервер в режиме caching- only. Его можно поднимать и опускать через ip-up и ip-down как сказано чуть выше, или через /etc/ppp/ip-up.local и ip-down.local. Как его настроить: раньше вариант был только один - почитать книжку и настроить таки bind. Теперь есть более простой вариант: к редхату прилагаются готовые настройки для cache-only bind'а (в пакете caching-nameserver) или можно установить демон nscd, который умеет только кешировать DNS-запросы (а также запросы к базе пользователей и групп). А еще можно сходить посмотреть на <http://alexm.here.ru> 5.3. Есть ли такая пpогpама для Linux, чтобы в сети Netware обойтись без tcpip - чтобы был только ipx? Есть mars -- netware server для линукса (эмуляция нетваpевского сеpвеpа) ipx*, ncp*, nw* (из дистpибутива mars) - клиент. Посмотрите Caldera Open Linux ( <http://www.caldera.com>) - компания Caldera владеет исходными текстами Novell и переносит их на Linux. Netware for Linux - <http://www.calderasystems.com/support/docs/netware/>. Не забудьте про IPX-HOWTO: <http://linuxdoc.org/HOWTO/IPX-HOWTO.html> 5.4. Пpинтеpы расшаpены чеpез самбу, но после отпечатывания стpаницы (или задания) пpобpасывается N листов впустую. HP пpокpучивает один лист, а Epson два. Как лечить? PRINTCAP / Begin my_favourite_printer:\ lp=/dev/lp1:\ sd=/var/spool/lpd/my_favourite_printer:\ sh:lf=/dev/tty10:ff=: PRINTCAP / End 5.5. Как подружить Самбу и 1С ? (Zahar Kiselev, 2:5030/382) Вот что достаточно сделать чтобы работало: Взять с ftp.kernel.org ядро, которое умеет "на ходу" менять лимиты на количество открытых файлов. Hасколько я знаю, начиная с 2.2.10 это работает, как делается - сказано в том числе и в этом faq. 1С отличается совершенно неприличными аппетитами по части количества открываемых файлов - надо ставить из расчета где-то 800 на каждого виндового пользователя, потому что есть особо "продвинутые", которые две-три копии 1С у себя на компе запускают. Взять Самбу например 2.0.5a - это последняя, которая работала у меня. Важно, чтобы она понимала параметр в smb.conf "ole locking compatibility"(надеюсь теперь не наврал в написании), установить его в "no". Внимание! До меня доходили сведения, что в какой-то даже более новой чем 2.0.5а Самбе этого параметра нет. Остальное настроить в соответствии с любой из многочисленных рекомендаций по установке Самбы, главное - не запрещать ей работать с блокировками(я знаю одного человека, который до этого додумался). Запускать надо не через inetd, а как отдельный демон, вернее у Самбы их два - smbd и nmbd. Чтобы несколько пользователей могли лезть в одну базу - поместить их в одну юниксовую группу и поставить права на файлы так, чтобы был доступ на запись для группы. Есть еще одна мелкая особенность - Самба при работе хочет создать файлики browse.dat, wins.dat - так вот надо поставить права так, чтобы она могла их читать в том числе и тогда, когда работает от имени виндового пользователя - иначе могут быть большие таймауты при выполнении команды net use в виндах, и может не работать столь любимое многими чайниками "сетевое окружение". Если после очередного падения 1С винды говорят что база заблокирована - то можно подкрутить в конфиге Самбы параметр, отвечающий за принудительное снятие "зависших" блокировок(см man). Поставить например три минуты, меньше не стоит, тогда через три минуты в базу можно будет войти. Рекомендуется также поставить keepalive-таймаут, чтобы соединения не висели бесконечно. Желательно при помощи файрволла закрыть для доступа "снаружи" те два порта, через которые Самба работает. Причем не только на Линукс, а на всю сеть. А теперь - совет тем, кто хочет избавиться от проблем, вызванных наличием 1С у него в сети. Hадо запускать 1С на NT-сервере, причем желательно sql-версию, она менее критична к сбоям (не повреждаются данные), а доступ осуществлять с линуксовых машин через Citrix Meta Frame. При этом ситуация меняется "до наоборот" - вместо одного линукса и кучи виндов вокруг - получаются _одни_ винды(и те NT), а вокруг куча Линукс-терминалов, причем можно их бездисковыми сделать, загружая с линукс-сервера. Если не хотите линуксы (а напрасно) - citrix-клиент есть и под винды. Для сомневающихся - работа 1С в терминальном режиме проверена в боевой обстановке. Результат положительный. Доступ я пробовал осуществлять и с Линукса и с win95. 5.6. PPP сервер/клиент с поддержкой callback, соединение с NT/2000 сервером и прочие проблемы при настройке ppp Про клиент pppd + callback можно прочесть файл README.cbcp в дистрибутиве pppd. Про все остальное - читайте <http://www.nitek.ru/~igor/pppd/> или <http://nitek.east.ru/~igor/pppd/>. 5.7. Имеется сеть из PC + Linux, телефонная линия на Linux-e. Хотелось бы: с любого рабочего места отправить факс. Какой софт под Linux для этого существует в природе ? hylafax - есть все, что в подобных случаях может понадобиться и сказано, где взять "клиентов" под DOS, Windows, etc. HО! принимать по одной линии (тел) и факсы и фидо не получится. :( Можно использовать mgetty, но факс-сервер придется делать самому, как делать можно подглядеть в hylafax. :) 5.8. Как настроить PPTP на Linux ? <http://www.moretonbay.com/vpn/pptp.html> 5.9. Как настроить SSL на smtp, pop3? Нужно найти (например, на freshmeat) программу stunnel. Она прописывается в конфиге inetd примерно так: spop3 stream tcp nowait root /usr/sbin/stunnel /usr/sbin/popa3d ssmtp stream tcp nowait root /usr/sbin/stunnel /usr/sbin/sendmail Victor Wagner предупреждает о подводном камне: Желательно в качестве argv[0] запускаемому демону указать что-то отличное от его имени файла. А то, если программа собрана с поддержкой tcpwrappers и используется hosts.allow/hosts.deny для разрешения доступа без ssl только из локалки, то при совпадении argv[0] не-ssl-ного и ssl-ного демона, и с SSL будут не пускать откуда нельзя. 5.10. Имеется сетка из машин под NT, Win95, и DOS, в ней же есть Linux с диалапным PPP к провайдеру. Как сделать так, чтобы все пользователи из локалки могли ходить по интернету? Нужно настроить маскарадинг. Предположим, что внутренняя локалка имеет адреса 192.168.0.0 (как и положено по RFC-1918). Тогда : #!/bin/sh /sbin/insmod ip_masq_autofw /sbin/insmod ip_masq_user /sbin/insmod ip_masq_cuseeme /sbin/insmod ip_masq_ftp /sbin/insmod ip_masq_irc /sbin/insmod ip_masq_mfw /sbin/insmod ip_masq_portfw /sbin/insmod ip_masq_quake /sbin/insmod ip_masq_raudio /sbin/insmod ip_masq_vdolive /sbin/ipchains -F /sbin/ipchains -P forward DENY /sbin/ipchains -A forward -j MASQ -s 192.168.0.0/16 -d 0.0.0.0/0 Если Linux имеет адрес 192.168.0.1, то этот ip должен быть определен на хостах внутренней сети как default gateway. Также полезно прочитать HOWTOs: Firewall <http://linuxdoc.org/HOWTO/Firewall-HOWTO.html> IPCHAINS <http://linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html> IP-Masquerade <http://linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html> Русская дока есть на <http://www.fima.net/masquerade.html> В 2.0 ядрах вместо ipchains используется ipfwadm, в 2.4 - netfilter, про который также есть HOWTO на <http://netfilter.kernlenotes.org> Если ничего не работает - проверьте, что находится в /proc/sys/net/ipv4/ip_forward : $ echo "1" > /proc/sys/net/ipv4/ip_forward (в Red Hat 6.2 и выше - не забудьте поправить /etc/sysctl.conf) Утилиты для графического управления firewall-ом : fBuilder <http://www.innertek.com/> Mason <http://users.dhp.com/~whisper/mason/> 5.11. Как настроить socks5 ? Cофт лежит на <http://www.socks.nec.com> Предположим, что у вас есть машина с двумя интерфейсами (PPP/Ethernet или Ethernet/Ethernet). На внутреннем Ethernet-e адрес : 192.168.0.1. Самый простой вариант - аутентификация клиентов локалки только по адресу. /etc/socks5.conf permit - - 192.168.0. - - - set SOCKS5_BINDINTFC 192.168.0.1:1080 set SOCKS5_NOIDENT ICQ 99/2000 работает. Подробнее 'man socks5', 'man socks5.conf', <http://www.socks.nec.com>. [там есть FAQ] 5.12. Как вырезать баннеры из веб-страниц? Простейший способ - занесение соответствующих хостов - поставщиков рекламы в /etc/hosts с фиктивными ip адресами. Более сложный, но и более гибкий - при помощи прокси-сервера Squid. Чаще всего для фильтрации используют ACL (Access Control List) типа "url_regex" (squid.conf, раздел ACCESS CONTROLS) типа: acl Reclama_Banners url_regex ^http://www1\.reklama\.ru/cgi-bin/banner/* http_access deny Reclama_Banners Или из файла : acl Banners url_regex "/etc/squid/banners" http_access deny Banners В /etc/squid/banners вписываешь своих врагов (в виде регулярных выражений), например: ^http://banners\.rambler\.ru/advert/.*\.gif ^http://kulichki.rambler.ru/reklama/banners/.*\.gif ^http://www.*\.yandex\.ru/cgi-bin/banner/* ^http://www1\.reklama\.ru/cgi-bin/banner/* ^http://www\.reklama\.ru/cgi-bin/banner/* ^http://www\.reklama\.ru/cgi-bin/href/* ^http://www\.100mb\.net/images/ban