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

LXF117:Ответы

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Викификация, оформление, иллюстрация)
(Краткая справка про... Автодополнение)
 
Строка 318: Строка 318:
 
==Краткая справка про... Автодополнение==
 
==Краткая справка про... Автодополнение==
  
Проще всего показать на примере. Пусть вам надо прочитать этакий файл '''/usr/share/sane/xsane/doc/sane-
+
Проще всего показать на примере. Пусть вам надо прочитать этакий файл '''/usr/share/sane/xsane/doc/sane-xsane-fax-doc.html'''. Можно запустить обозреватель и попытаться без ошибок набрать путь к нему. Или воспользоваться командной строкой и ввести
xsane-fax-doc.html'''. Можно запустить обозреватель и попытаться без ошибок набрать путь к нему. Или воспользоваться командной строкой и ввести
+
  
 
  fire[TAB]/us[TAB]sha[TAB]sa[TAB]x[TAB]d[TAB]sa[TAB]x[TAB]f[TAB]
 
  fire[TAB]/us[TAB]sha[TAB]sa[TAB]x[TAB]d[TAB]sa[TAB]x[TAB]f[TAB]

Текущая версия на 22:43, 20 февраля 2010

Содержание

[править] Ответы

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

[править] Пакеты — в кэш

В Мы используем Ubuntu 8.04 для обучения компьютерам в сообществе. Я хочу установить сервер обновлений Ubuntu для 30 клиентских машин. Пусть он скачивает свежие пакеты, а остальные ПК в сети берут их у него, а не из интернета, и не забивают мой ограниченный внешний канал. Пусть клиент ищет нужный пакет на локальном сервере, а если не найдет, сервер скачает его из интернета и передаст клиенту, сохранив копию на случай такого же запроса с другого компьютера. Тогда я обеспечу загрузку каждого пакета только один раз, и сэкономлю время и трафик.

Райн Тристан Делмо [Ryan Tristan Delmo]

О Вам нужен так называемый кэширующий прокси-сервер. Такие широко используются в интранете и у провайдеров, чтобы снизить требования к пропускной способности каналов. Отдельные web-браузеры или другие приложения запрашивают файлы с прокси-сервера, который загружает их, направляет запросившей программе и сохраняет копию на случай нового запроса. Популярнейший прокси-сервер с открытым исходным кодом – Squid (http://www.squid-cache.org), но для Вас это чрезмерная роскошь. Есть ряд легких проксисерверов, разработанных специально для кэширования пакетов дистрибутивов на базе Debian, включая Ubuntu. В стандартных репозиториях Ubuntu их как минимум четыре; один из них – apt-cacher. Вам только надо установить его на сервер (компьютер, который будет работать как кэш).

После установки apt-cacher следует изменить несколько параметров в конфигурационном файле /etc/aptcacher/apt-cacher.conf. Во-первых, это cache_dir, указывающий, где apt-cacher сохраняет скачанные файлы. Убедитесь, что там достаточно дискового пространства; желательно разместить этот каталог на своем разделе, чтобы Ваша система не пострадала при переполнении кэша. Изменению подлежат также настройки allowed_hosts и denied_hosts: они управляют разрешениями подключения компьютеров. В большинстве случаев доступ нужен для всех компьютеров локальной сети, но никаких других, так что оставьте пустым denied_hosts и установите allowed_hosts на диапазон адресов Вашей локальной сети. Это может быть сетевой адрес и маска или пара адресов, задающих диапазон – например,

allowed_hosts=192.168.0.0/24
allowed_hosts=192.168.1.1-192.168.1.50

Почитайте комментарии в файле, но для начала можно оставить прочие настройки по умолчанию. Теперь отредактируйте /etc/default/apt-cacher, установив AUTOSTART в 1, чтобы сервер стартовал при каждой загрузке системы. Настроив сервер, перезапустите его:

sudo /etc/init.d/apt-cacher restart

Потом придется настроить все Ваши компьютеры, чтобы они получали пакеты через apt-cacher, начиная с сервера, где тот установлен. Создайте файл /etc/apt/conf.d, скажем, /etc/apt/apt-conf.d/10apt-cacher, содержащий такую строку:

Acquire::http::Proxy ”http://127.0.0.1:3142/aptcacher/”;

Повторите этот процесс на других машинах, но подставьте вместо 127.0.0.1 IP-адрес сервера. Попробуйте установить пару пакетов одном из компьютеров, а затем заглянуть в директорию packages в cache_dir – Вы должны увидеть там Deb-файлы. Запросите установку тех же пакетов на другом компьютере, и загрузка будет почти мгновенной. НБ

[править] 2 Не шибко умный

В Я обдумываю проект Linux-на-USB: у меня есть 4-ГБ USB-брелок Toshiba, но на нем имеется премерзкий раздел на 0,3 ГБ — якобы «умное» дополнительное ПО (под Windows, естественно), которое пытается само установиться при подключении к Windows-машине. Под Linux оно сидит себе в своем разделе и не мешает.

Проблема в том, что при попытке воспользоваться PartitionMagic для его удаления и объединения с другим разделом возникло сообщение, что раздел отформатирован как CD-ROM, и избавиться от него нельзя. Нет ли другой методики ликвидации этой язвы, кроме как шарахнуть молотком?

GregS, с форумов

О Обычное удаление всех разделов с помощью инструмента разбиения диска для Linux должно сработать (я проверял на моем устройстве SanDisk). Linux-программы, в отличие от многих приложений Windows, как правило, предполагают, что Вам виднее, что делать, и если Вы хотите отформатировать нечто, выглядящее как CD, значит, так надо. Они не пытаются защитить Вас от Вашей вероятной глупости.

Если графические утилиты дают сбой, есть и другие варианты. Запуск в терминале команды

cfdisk /dev/sdb

от имени суперпользователя-root – либо в терминале root, либо через sudo – позволит удалить разделы и создать новые (убедитесь, что подставлено правильное имя устройства). Если это не сработает, попробуйте

cfdisk -z /dev/sdb

Опция -z велит cfdisk игнорировать существующую таблицу разделов и начать с чистого листа. Так или иначе, cfdisk полностью контролируется с клавиатуры: D удаляет раздел, N создает новый, Shift+W (заглавная) записывает таблицу разделов на устройство, и H выдает справку, на случай, если Вы застряли.

Если и это не поможет, попробуйте

dd if=/dev/zero of=/dev/sdb bs=512 count=1

чтобы забить нулями таблицу разделов устройства, обеспечив чистый старт. Запустите это (от имени root), чтобы «обнулить» таблицу разделов и MBR, или пропустите опции bs и count для перезаписи всего устройства; но к подобному экстриму вообще-то лучше не прибегать. НБ

[править] 3 Ключи мои не видали?

В Я использую Ubuntu Hardy на Acer 5920 и запускаю Windows XP в VirtualBox. Хочу сделать общие папки для хоста и гостевой машины, но возникают проблемы с сетевыми настройками. Я могу выходить в интернет из хостсистемы через зашифрованное WPA-соединение с беспроводным маршрутизатором, но... я забыл свой пароль WPA. Network Manager хранит его, но он настроен на роуминг и не позволяет выбирать между статической и DHCP-адресацией. Если я отключаю роуминг, запрашивается ввод ключа WPA. При возврате в роуминг все снова работает — значит, ключ где-то есть.

Сбрасывать маршрутизатор мне неохота, уж очень я ленюсь перенастраивать все компьютеры семьи на новый ключ. Я сохранял конфигурацию маршрутизатора в файле на моем настольном ПК, но тот закинут на чердак, поскольку больше никуда не лезет. Так где мне найти свой WPA-ключ? Он хранится зашифрованным, как мои пароли пользователей? или в виде обычного текста?

Tuxmando, с форумов

О Если у Вас стандартный рабочий стол Gnome, Network Manager сохраняет свои парольные фразы и ключи в Gnome Keyring. Перейдите в Applications > Accessories > Passwords and Encryption Keys [Приложения > Дополнительные > Пароли и ключи] для открытия хранилища. Сетевые ключи перечислены во вкладке Passwords [Пароли]; выберите тот, что Вам нужен, и нажмите Properties [Свойства] (или просто дважды щелкните на ключе). Нажмите стрелочку рядом с ‘Password’, а затем отметьте Show Password [Показать пароль], чтобы увидеть пароль или ключ. Придется-таки пощелкать мышью, но это научит Вас быть аккуратнее с паролями в будущем.

Альтернатива – изменение парольной фразы WPA на маршрутизаторе (если Вы не потеряли заодно и пароль администратора маршрутизатора), а затем обновление каждого компьютера или ОС для использования нового ключа. ГМ

[править] 4 Проблемы прав

В Я прошелся по советам безопасности из LXF115, и в основном у меня все в порядке. Осталось внедрить только один, насчет резервного копирования. Поэтому я последовал вашему предложению и установил TimeVault. В тот же день я еще и установил Thunderbird как почтовую программу. Все вроде было нормально, но при старте сегодня утром выдалось сообщение об ошибке:

”User’s $Home/.dmrc file is being ignored. This
prevents the default session and language from
being saved. File should be owned by user and have
644 permissions. User’s $Home directory must be
owned by user and not writable by others.”

а затем

”Could not update ICE authority file /Home / Dave/.
ICEauthority.”

Не подскажете ли вы мне выход из этой ситуации, учитывая, что я новичок, но с достаточным опытом в Windows.

Дэйв Эйджер [Dave Ager]

О Похоже, что права доступа или владелец Вашей домашней директории и по крайней мере части файлов были изменены. Это можно исправить с помощью графического интерфейса, хотя детали варьируются в зависимости от дистрибутива и рабочего стола, которые Вы используете. Откройте Ваш домашний каталог (/home/Dave) в файловом менеджере и перейдите на один уровень вверх, в /home. Правым щелчком мыши на директории Dave выберите Свойства (это работает и в KDE, и в Gnome). Убедитесь, что владелец Вы и что у Вас есть права на чтение и запись. Права можно изменить через окно свойств, но только при доступе от имени root, который в некоторых дистрибутивах умышленно затруднен, и самый быстрый и простой способ – это открыть терминал и, в зависимости от Вашего дистрибутива, либо выполнить команду su и получить доступ root, либо, особенно если Вы используете Ubuntu, предварить первую команду словом sudo:

chown -R Dave: ~Dave
chmod -R u+rw,go-w ~Dave

Первая команда рекурсивно (-R) изменяет владельца всех файлов в Вашем домашнем каталоге (~Dave) на Dave. Двоеточие после имени пользователя означает, что группа для каждого файла также изменяется на группу пользователя по умолчанию. Вторая команда рекурсивно изменяет права на все файлы и директории в Вашей домашней директории на чтение и запись для пользователя (u+rw) и отключает запись для группы и остальных (go-w).

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

[править] 5 Mandriva оффлайн

В У меня возникла проблема с установкой последнего драйвера Nvidia на Mandriva One. Я инсталлировал ее как основную систему, при мультизагрузке с двумя XP Pro на отдельных разделах. Трудность заключается в установке Nvidia-Linux-x86-177.80.pkg1.run с одного из LXFDVD. Мне удалось запустить инсталлятор без X, как и предлагалось, но вместо установки после распаковки возникает ошибка. Сообщение об ошибке говорит об отсутствующих командах, и при моем скудном знании командной строки мне не сдвинуться с этого места! К интернету я пока не подключен, и не могу использовать менеджер пакетов.

Эндрю Эмери [Andrew Emery]

О Было бы гораздо лучше процитировать Ваше сообщение об ошибке, а так мы теперь должны гадать, какие именно команды пропали без вести. Однако я подозреваю, что у Вас не установлен компилятор. Пакет драйверов Nvidia содержит прекомпилированные модули для различных ядер, но если они не полностью подходят Вашей системе, она должна скомпилировать их сама. По этому поводу переживать нечего – инсталлятор берет весь процесс на себя, но нужно иметь установленным полный набор инструментов разработчика. Требуется также исходный код ядра, чтобы собрать соответствующий модуль. Как минимум, нужно установить GCC 4.2 и Automake, для разрешения всех требуемых зависимостей. В Mandriva One CD это невозможно: нужные пакеты включены только в полный DVD Mandriva.

Некоторые менеджеры пакетов, например, Synaptic в Debian-системах, имеют опцию генерации скрипта закачки нужных Вам пакетов. Его можно скопировать на USB-брелок и загрузить требуемые файлы на другой, подключенной к Интернету, машине. Затем брелок вставляется в автономный компьютер, и Вы устанавливаете все загруженные пакеты. Однако в менеджере управления пакетами Mandriva такой возможности нет, и он менее полезен для автономного компьютера. Если Ваш компьютер нельзя подключить к Интернету, чтобы установить нужные программы, я бы посоветовал взять либо Mandriva 2009, доступную как полноценный DVD, либо другой дистрибутив, Debian или вариант Ubuntu. MC

[править] 6 Образ или инкремент?

В Я искал решение для создания резервных копий, и пришел к выводу, что мне подойдет отдельный, новый жесткий диск во внешнем корпусе. Мне также нужен инкрементный инструмент, типа TimeVault или rsync, но хотелось бы создавать образы, чтобы в случае отказа жесткого диска я мог получить загрузочный сектор, разделы и все остальные обратно. Я не нашел никакого ПО для Linux, способного это сделать, и было бы чудесно, если бы вы мне помогли. Моя идея в том, чтобы раз в неделю подключать диск, с помощью правил udev или чего-то наподобие монтировать его и запускать сценарий, который вызывал бы приложение с соответствующими опциями.

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

Шон С [Shaun S]

О Инкрементное резервное копирование и снятие образов несовместимы. Образ является копией диска, как Вы и говорите, так что по самой своей природе он содержит все. Популярнейшая программа снятия образов для Linux – Partition Image (http://www.partimage.org), которая, скорее всего, есть в репозиториях Вашего дистрибутива, а также на многих Live CD. Пункт про использование Live CD весьма важен, поскольку снятие образа всего диска (или целого раздела) небезопасно, если файловые системы на нем смонтированы для чтения/записи и данные на диске могут меняться посреди резервного копирования: Ваша копия получится несогласованной.

Если места у Вас достаточно, лучшим выбором будет Partition Image – для копирования диска целиком, а затем используйте что-то типа rdiffbackup для инкрементного резервного копирования важных данных. Rdiff-backup сохраняет старые версии файлов, и он вписывается в Ваши требования насчет восстановления старых или удаленных файлов, тогда как восстановление отдельных файлов из образа всего диска – гораздо более трудная задача.

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

dd if=/dev/sda of=mbr.img bs=446 count=1

Она скопирует первые 446 байт диска – область, где содержится MBR – в файл, который нужно хранить в надежном месте. Вы можете восстановить ее, поменяв местами параметры if и of (входной файл и выходной файл). Если Вы хотите также создать резервную копию основной таблицы разделов, надо изменить bs на 512. Если Вы собрались восстановиться на диск другого размера, то и размеры разделов, вероятно, будут другими, и зачастую наилучший подход – копировать только MBR и создавать новые разделы с нуля. Теперь Вы можете создать резервную копию содержимого каждого раздела с помощью

tar czlf /path/to/backup.tar.gz /mountpoint

Опции tar: с для создания архива, z – сжимать его с помощью gzip (j для сжатия bzip2), l – ограничить резервную копию одной файловой системой (так, при использовании с / она не даст добавить /home и виртуальные файловые системы, такие как /proc), и f – создать архив в файле с определенным именем. Запустите

fdisk -l /dev/sda >partitions.txt

чтобы записать сведения о разметке диска, а затем храните его вместе с Вашей резервной копией и копией MBR в безопасном месте. НБ

[править] 7 Управы нет на файлы

В Я обнаружил вопиющее, по-моему, упущение в ваших учебниках: графическое управление файлами. В Fedora/Gnome на рабочем столе есть иконка компьютера: через нее я могу открывать окна, создавать папки, перемещать файлы, и так далее, в стиле старых версий Mac OS. Но как мне запустить файловый менеджер Dolphin в KDE? Мне уже приходилось управлять файлами из командной строки. Ни в одном из ваших FAQ или виденных мною статьях «Новичку в Linux» не обсуждается управление файлами в Gnome и KDE.

Джон Стокс [John Stokes]

О KDE 4 изменил все вокруг, и многие люди вынуждены изучать новые пути для выполнения старых задач. Простейший способ добавить прямое управление файлами в KDE 4 – щелкнуть правой кнопкой мыши на рабочем столе и выбрать пункт Add Widget [Добавить виджеты]. Откроется перечень различных виджетов для рабочего стола. Выберите Folder View [Просмотр папки], чтобы добавить новое окно, содержащее Ваш домашний каталог. Щелчок по любой из представленных здесь директорий запустит Dolphin. Если Вы хотите просмотреть содержимое съемного накопителя, USB-диска, DVD и т.п., нажмите на значок оповещения недавно подключенных устройств рядом с кнопкой главного меню, чтобы получить их список. Вы можете запустить Dolphin, выбрав любое из них.

Dolphin также доступен в стандартном меню Утилиты > Системные [Tools > System Tools]. Вы можете перетащить его из меню на рабочий стол, если Вам это более по душе, или использовать редактор меню (доступный по щелчку правой кнопкой мыши на кнопке Меню) для перемещения Dolphin на более подходящие (или менее скрытое) местоположение.

Версия Gnome, поставляемая с Mandriva, похожа на то, к чему Вы привыкли – Gnome не подвержен таким катаклизмам, как KDE, требующим мучительной адаптации – и Вы сможете использовать его точно так же, как уже делаете в Fedora. Значок Компьютер – это дополнение Fedora, но Вы получите такое же окно, выбрав Computer [Компьютер] из меню Places [Переход] в верхней панели. Если Вам нужен значок Компьютер на рабочем столе, перетащите его из меню и поместите на рабочий стол. Это относится к почти любой программе, будь то в Gnome или в KDE: просто перетащите ее из меню, чтобы создать иконку на рабочем столе. НБ

[править] 8 Удаление дистрибутива

В Я всерьез подумываю попробовать Ubuntu в двойной загрузке с XP. Есть ли способ удалить все части Linux, в том числе отменить разбиение диска, если я решу вернуться в Windows?

Дэвид Грин [David Green]

О Если Вы хотите убрать все следы Linux, то есть два основных этапа: удаление разделов Linux и удаление загрузчика. Загрузчик следует удалить первым, и для этого проще всего будет загрузиться с Вашего диска Windows в режиме восстановления и запустить fixmbr. Тогда загрузчик Windows восстановится. Если у Вас нет диска с Windows, примените другие инструменты для сброса загрузчика. Ultimate Boot CD (http://www.ultimatebootcd.com) содержит пару из них. Скачайте образ CD, запишите его на диск и загрузитесь с него. Выберите Filesystem Tools [Файловые системы], затем Partition Tools [Разбиение], затем MBRtool. Нажмите 4, затем 9 для сброса загрузочного кода. Также можете использовать MBRwork из того же меню – тут Вам нужна опция «Install Standard MBR Code», а еще, пока Вы здесь, надо отметить первый раздел как активный.

Перезаписав загрузчик, воспользуйтесь любым инструментом разметки диска для удаления разделов Linux и расширения раздела Windows на весь диск. Если у Вас есть нечто вроде Partition Magic для Windows, используйте его, или возьмите GParted с установочного диска Ubuntu. Загрузитесь с Live CD (первый вариант в загрузочном меню компакт-диска) и выберите пункт Administration > Partition Editor [Администрирование > Редактор разделов] из меню System [Система]. Здесь Вы можете удалить все, кроме Вашего раздела Windows, а затем изменить его размер для заполнения всего диска. Нажмите кнопку Apply [Применить], дождитесь завершения работы и перезагрузите систему. MC

[править] 9 Desktop против Server

В Не могли бы вы объяснить основные различия между настольным и серверным дистрибутивами? Кроме того – я знаю, что такие вещи не делаются на рабочем сервере, но как бы вы установили базовый графический интерфейс на Ubuntu 8.10? Моих знаний командной строки пока маловато для изучения Ubuntu Server.

Энди Бейкер [Andy Baker]

О Основное различие заключается в ПО и, возможно, в параметрах безопасности по умолчанию. Сервер использует иные типы программ, чем настольный ПК, поэтому, как правило, не имеет X или рабочего стола в любой форме, хотя и такое бывает. Безопасность для серверов важнее, так как они намеренно выставлены на всеобщее обозрение. Поэтому их пакеты содержат, как правило, более испытанные и проверенные варианты ПО, тогда как Ubuntu и другие дистрибутивы зачастую используют для своих настольных релизов самые свежие программы. [Ядро серверной системы обычно тоже собирается по-другому: здесь важна не мгновенная реакция на нажатие кнопки, а общая производительность, – прим. ред.]

Так как Ubuntu Server остается Ubuntu, только с другим набором основных пакетов, можно установить все что угодно. Простой рабочий стол Xfce добавляется всего-навсего командой

sudo apt-get install xfce4

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

Существует еще вариант c использованием инструментов web-администрирования, типа Webmin (http://www.webmin.com). Это особенно полезно, если Вы хотите запустить сервер без клавиатуры и монитора. Установив ПО, Вы можете использовать браузер на другой машине (работающей под любой операционной системой) в Вашей сети для подключения к https://имя_хоста:10000 и выполнения большинства необходимых Вам административных задач. НБ

[править] 10 Крупная партия

В У меня такая проблема: есть сетевые карты DGE-530T и коммутатор Trendnet 240WS; все это поддерживает jumbo-кадры [сверхдлинные Ethernet-кадры, содержащие более 1500 (но обычно менее 9000) байт полезных данных; используются в высокопроизводительных сетях, – прим. ред.] на 1 Гбит/сек. Пытаюсь установить MTU=9000 командой ifconfig mtu 9000 (драйвер SKGE) – вывод утилиты сообщает, что именно такое значение MTU и используется. Однако обмен данными или прекращается совсем, или замедляется на порядки (по крайней мере, дождаться окончания теста мне не удалось). Вопрос: надо ли настраивать коммутатор (через Net Manager) или он должен сам «понять», что сетевые карты передают ему jumbo-кадры? Возможно, необходимо настроить на mtu 9000 все подключенные к коммутатору узлы? Для эксперимента мы взяли только три из двадцати четырех. Операционная система – Slackware 11.

Валерий Баканов

О Согласно описанию Trendnet 240WS, по умолчанию для него установлено значение Jumbo Frames disabled [Jumbo-кадры выключены]; попробуйте сменить его на Enabled. Для того, чтобы два хоста могли обмениваться пакетами такого размера, необходимо, чтобы MTU было соответствующим образом настроено и на их сетевых картах, и на активном сетевом оборудовании, через которое они соединены. Таким образом, на вопрос о необходимости настройки коммутатора следует дать положительный ответ: да, она необходима. СН

[править] 11 Вектор невезения

В Мне необходимо написать программу для работы с векторной графикой, и я решил попробовать сделать это с помощью библиотеки Cairo. Прочитал учебник, доступный на сайте http://cairographics.org, и взял файл paint.c в качестве примера. Пытаюсь собрать его командой

gcc -o out paint.c

и получаю следующие ошибки:

paint.c:1:19: error: cairo.h: Нет такого файла или каталога
paint.c: In function ‘main’:
paint.c:6: error: ‘cairo_surface_t’ undeclared (first use in this function)
paint.c:6: error: (Each undeclared identifier is reported only once
paint.c:6: error: for each function it appears in.)
paint.c:6: error: ‘surface’ undeclared (first use in this function)
paint.c:7: error: ‘cairo_t’ undeclared (first use in this function)
paint.c:7: error: ‘cr’ undeclared (first use in this function)
paint.c:9: error: ‘CAIRO_FORMAT_ARGB32’ undeclared (first use in this function).

При этом cairo.h находится в директории /usr/include/cairo/cairo.h. Подскажите, как компилировать программы, использующие Cairo?

Николай

О Такое поведение компилятора вполне естественно – Вы же не сообщили ему, где искать заголовочный файл cairo.h, а он находится не в стандартном каталоге /usr/include, а еще одним уровнем ниже. И даже если бы Вы сделали это, проблемы бы не кончились: во-первых, Cairo могут потребоваться другие заголовочные файлы; во-вторых, чтобы скомпоновать Вашу программу, необходима библиотека Cairo. Решить эти проблемы централизованно призван pkg-config: эта утилита выводит различные ключи компилятора, которые необходимы для сборки Ваших программ с некоторым пакетом. Например,

pkg-config --cflags cairo

выведет все флаги C-компилятора, необходимые для сборки приложения Cairo. На моей системе это -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 – как видите, одного указания пути к cairo.h было бы недостаточно. Аналогично,

pkg-config --libs cairo

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

gcc `pkg-config --cflags cairo` `pkg-config --libs cairo` -o paint paint.c

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

[править] 12 Настройка клавиш

В Моя клавиатура Microsoft Comfort Curve Keyboard 2000 V1 не перечислена в файле клавиатур X.org, поэтому я взял за основу базовую клавиатуру PC-104. Она работает, но остается много клавиш, которыми хотелось бы попользоваться.

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

Msnthrp, с форумов

О Ваше описание похоже на XBindKeys, но так как Вы используете KDE, легче выполнить большинство установок из Центра управления KDE. Раздел Input Actions [Действия ввода] Центра управления позволяет назначить практически любое действие любой распознаваемой клавише. Первый шаг – подбор подходящей раскладки клавиатуры. Для MS Natural Keyboard я применяю в xorg.conf pc105, а Вы найдите более похожую на свою в разделе Раскладки клавиатуры [Keyboard Layout]. При создании действия ввода попробуйте нажать клавишу в разделе сочетаний клавиш; большинство будет работать. Если Вы нашли неработающую клавишу, определите ее скан-код, а затем назначьте его неиспользуемой кнопке.

Первая часть выполняется с помощью Xev. Запустить эту программу из терминала и нажмите клавишу. Вы увидите в окне два сообщения (для нажатия и отпускания), которые выглядят примерно так:

KeyRelease event, serial 35, synthetic NO, window 0x3600001,
root 0x1a6, subw 0x0, time 26687513, (201,878),
root:(3029,929), state 0x10, keycode 93 (keysym 0xff7e, Mode_switch), same_screen YES,
XLookupString gives 0 bytes:  XFilterEvent returns: False
Нужная Вам информация находится в третьей

строке, где Вы увидите, что код клавиши – 93. Теперь можно сопоставить его с неиспользуемым символом клавиатуры с помощью Xmodmap.

xmodmap -e ‘keycode 93=F21’

Это сопоставит клавишу с F21. При возврате в Центр управления селектор клавиатурных сокращений должен ее распознать. Команды Xmodmap нужно запускать каждый раз при старте X-сессии, так что создайте скрипт в ~/.kde/Autostart/setkeys, содержащий

#!/bin/sh
xmodmap -e ‘keycode 93=F21’
xmodmap …

Сделайте его исполняемым, и Ваши клавиши будут всегда доступны.

Альтернатива, XBindkeys, далеко не так дружелюбна, как установка действий в KDE. С другой стороны, она не зависит от Вашего выбора рабочего стола. Была еще GTK-программа настройки, но она исчезла несколько лет назад, так что Вы остались с чтением кодов клавиш с помощью Xev и записью их в конфигурационный файл. В целом, использование собственной системы горячих клавиш рабочего стола проще и в установке, и в обслуживании.

[править] Шаг за шагом: Настраиваем клавиши

Шаг 1

  • 1 Находим скан-код
    Сделайте окно Xev активным, но следите за терминалом, откуда оно запущено, при нажатии клавиши.

Шаг 2

  • 2 Конвертируем его в символ
    Раздобыв скан-коды, используйте команды Xmodmap для назначения им распознаваемых, но неиспользованных клавиш.

Шаг 3

  • 3 Назначаем клавишам действия
    Используйте модуль Действия ввода из Центра управления KDE для настройки действий, команд или скриптов, которые будут выполняться при нажатии клавиши.

Шаг 4

  • 4 Версия KDE 4
    В KDE 4.1 Действия ввода скрыты во вкладке Дополнительно программы конфигурации рабочего стола, но работают так же, как и в предыдущей версии.

Шаг 5

  • 5 Для пользователей Gnome
    Gnome имеет аналогичную программу для назначения горячих клавиш конкретным действиям, но она не позволит вам определить ваши собственные действия.

Шаг 6

  • 6 XBindKeys
    Если вы готовы к работе с синтаксисом конфигурационного файла, по сравнению с которым Perl – семечки, можете взглянуть на XBindKeys: он не зависит от рабочего стола. LXF

[править] * Меняя дистрибутивы

В Я работаю c Ubuntu 8.10 и Windows XP на одном жестком 80-ГБ диске (50 ГБ для Linux, остальное для Windows), и хочу убрать Ubuntu и установить другой дистрибутив (пока я не решил, какой). Проблема в том, что при использовании Windows Hardware Management для удаления Linux-разделов он заодно удаляет Grub, и я не могу загрузить XP. Если я не делаю этого, то остаюсь со старым неиспользуемым разделом подкачки, так как не разбираюсь в разбиении диска и не могу его убрать.

Не найдется ли для меня простого метода, который не будет тратить swap-пространство?

Heiowge, с форумов

О Есть несколько решений этой проблемы. Одно заключается в загрузке с Вашего Windows Rescue CD (или раздела) и запуске fixmbr из консоли восстановления. Это восстановит загрузчик по умолчанию Windows, сделав Grub ненужным. Кроме того, Вы можете просто запустить установщик Вашего нового дистрибутива, ничего не меняя. Когда он дойдет до разметки диска, велите инсталлятору использовать существующие корневой раздел и разделы подкачки и /home, если он у Вас есть. Пусть он переформатирует корневой раздел, но не /home. Затем установщик переустановит Grub, настроив двойную загрузку Вашего дистрибутива и Windows.

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

[править] Часто задаваемые вопросы: Вирусы

  • Эй, ведь правда, вирусов для Linux не бывает?
    Они есть, но являются лишь доказательством возможности их написания. В настоящий момент неконтролируемых вирусов для этой ОС нет.
  • Ура, беспокоиться не о чем!
    Вы защищены, но не в безопасности. Нет таких вирусов на момент написания статьи. Это не значит, что они не появятся в будущем или в момент чтения вами этих строк.
  • Но ведь система прав доступа Linux не даст вирусу причинить реальный вред?
    Распространенное заблуждение! Конеч но, без прав администратора вирус не сможет удалить или переписать системные файлы, но подумайте: что вам ценнее – ОС, которую можно переустановить за какой-нибудь час, или ваши личные данные? Чего бы вы охотнее лишились – пары библиотек или годовой финансовой отчетности перед подачей налоговой декларации?
    Вирус или троян может использоваться как генератор спама и без прав администратора, а за это ваш интернетпровайдер может перекрыть вам доступ к Сети.
  • ОК, вы меня застращали. Как же защитить мою систему?
    Существует несколько антивирусных программ для Linux. Самые популярные из них – ClamAV (http://www.clamav.net) и FProt (http://www.f-prot.com). Все они находят вирусы и для Windows, и для Linux. Если вы предпочитаете графический интерфейс – KlamAV (http://klamav.sourceforge.net) предоставляет интерфейс KDE для ClamAV.
  • Какое мне на Linuxмашине дело до вирусов Windows?
    Если вы запускаете почтовый сервер, к которому подключаются клиенты Windows, имеет смысл избавиться от любых вирусов, прежде чем заняться чем бы то ни было, имеющим отношение к Windows. Большинство почтовых серверов можно настроить на фильтрацию почты через ClamAV для удаления или помещения в карантин подозреваемых на вирусы сообщений.
  • В чем причина меньшей угрозы от вирусов на Linux?
    Численность. Пользователей Windows гораздо больше, чем пользователей Linux. Кроме того [в Linux], более неоднородный состав программ. Подавляющее большинство пользователей Windows применяют для работы с почтой Outlook; натравите на него вирус, и жертвами падут большинство пользователей Интернета. Linux-пользователи могут выбирать из KMail, Evolution, Thunderbird, Sylpheed, Mutt и десятков других почтовых программ, доступных для Linux.

[править] Краткая справка про... Автодополнение

Проще всего показать на примере. Пусть вам надо прочитать этакий файл /usr/share/sane/xsane/doc/sane-xsane-fax-doc.html. Можно запустить обозреватель и попытаться без ошибок набрать путь к нему. Или воспользоваться командной строкой и ввести

fire[TAB]/us[TAB]sha[TAB]sa[TAB]x[TAB]d[TAB]sa[TAB]x[TAB]f[TAB]

Первый Tab будет искать в путях соответствующую команду (firefox). Следующие будут пытаться дополнить вводимый путь. Это не только быстрее, чем полностью набирать его, но к тому же и безошибочно, поскольку выбираться будут только существующие пути.

Обнаружив несколько совпадений, оболочка дополнит столько символов, сколько сможет, и если вы еще раз нажмете Tab, выдаст список возможных вариантов. Можно добавить пару символов и снова нажать Tab. Таким же образом легко узнать, какие команды доступны. При правильном использовании автодополнение значительно ускорит работу в командной строке. Некоторые оболочки, вроде Bash и Zsh, допускают расширение до автодополнения других вещей, например, имен хостов или аргументов программ, но для этого нужен совершенно иной набор man-страниц.

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