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 его домашней странички
? Мне нужна некая фича, но я не знаю, как называется соответствующий
софт, что делать?
<[22mhttp://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[22m, а также
в 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 [22mи лежащего на
<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[22m.
Стабильные ядра предназначены для широкого использования и проблемы
при их использовании или компиляции встречаются нечасто. Как правило в
стабильных сериях от версии к версии только исправляются ошибки и
добавляются драйвера, не требующие изменений в самом ядре и хорошо
себя зарекомендовавшие. Стабильные ядра можно безбоязненно обновлять,
не трогая прочий софт - если вы остаетесь в рамках одной серии,
проблем возникнуть не должно. (По крайней мере в теории, на практике,
возможно, придется вернуться к старому ядру и подождать выхода еще
одной версии.) Новые версии выходят нечасто - примерно раз в месяц, и
реже.
Нестабильные ядра, наоборот, не предназначены для использования
массами. Это полигон для тестирования множества разнообразных
возможностей, только появившихся и еще не готовых для использования
никем, кроме их собственных разработчиков и людей, чье хобби -
забавляться с нестабильными ядрами. Здесь от версии к версии может
меняться очень многое и правильную работу никто не обещает (впрочем,
то же относится и к стабильным ядрам, но в менее "жестком" смысле).
При их использовании нужно быть готовым ко всему. Прежде всего к
тому, что ядро просто не скомпилируется. Потом оно может не
загрузиться, зависать, портить файловую систему и вообще всячески
глючить. Кроме того, может начать глючить софт, взаимодействующий с
ядром напрямую. Нестабильные ядра выходят гораздо чаще стабильных -
иногда несколько новых ядер в неделю.
Как нестабильная серия становится стабильной и наоборот ? Очень
просто: в какой-то момент 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