LXF159:Вопросы и ответы
|
|
|
Содержание |
Ответы
Есть вопрос по открытому ПО? Пишите нам по адресу answers@linuxformat.ru, и мы найдем ответ. Сегодня отвечаем на вопросы по темам:
- 1 Проблемы с назначением клавиш в KeePassX
- 2 Редактирование файлов в Sed
- 3 Thunderbird в Windows и Linux
- 4 Windows на компьютере Linux
- 5 Дистрибутивы на флэшках
- 6 Отсутствующие загрузочные записи
*1 Нелокальная локаль
В Я пользуюсь KeePassX 0.4.3 в Linux, Windows и Android. База данных хранится в зашифрованном виде на Dropbox, поэтому она доступна откуда угодно. Однако в версии для Linux при использовании AutoType знак @ не появляется в электронном адресе — вместо нее появляется двойная кавычка (“). В системных настройках KDE выбрана локаль «Ирландия» [Ireland], а в KeePassX настроено использование системного языка. Дистрибутив — Linux Mint 12, редакция KDE.
Шон Миллар [Sean Millar]
О Как Вы, похоже, уже догадались, это почти наверняка проблема с локалью или раскладкой клавиатуры. Нажатие клавиш Shift + 2 на клавиатурной раскладке «UK/Ireland» (Великобритания/Ирландия) даст Вам символ “ (двойная кавычка), а нажатие тех же клавиш на клавиатурной раскладке «US» (США) – собачку @. Вы проверили настройки KDE, но велели KeePassX использовать системный язык по умолчанию, а это, возможно, не одно и то же. В других программах это незаметно, потому что они пользуются настройками KDE – во всяком случае, программы KDE. Попробуйте открыть терминал и выполнить команду
locale
Она должна вывести значения переменных LANG и LC_CTYPE; в моей системе с локалью «UK» они таковы:
LANG=en_GB
LC_CTYPE=”en_GB”
Командой setxkbmap можно определить, какую локаль использует X-сервер:
setxkbmap -print
xkb_keymap {
xkb_keycodes { include “evdev+aliases(qwerty)” };
xkb_types { include “complete” };
xkb_compat { include “complete” };
xkb_symbols { include “pc+gb+inet(evdev)” };
xkb_geometry { include “microsoft(natural)” };
};
Нас интересует строка xkbsymbols, которая показывает, что используется раскладка «GB» – в Вашем случае это должна быть раскладка «IE». Если в любом из этих случаев Вы видите неправильную раскладку или неверный набор символов, нужно выполнить соответствующие изменения. Системная локаль задается в файле /etc/default/locale. Его можно редактировать напрямую, но безопаснее воспользоваться командой:
dpkg-reconfigure locales
Командой setxkbmap также можно установить клавиатурную раскладку, используемую X-сервером:
setxkbmap ie
2 Вы sed, а я...
В Я загрузил из интернет-архива один сайт, владелец которого перестал его поддерживать. Они добавляют на сайт некоторый код, который поддерживает целостность ссылок в архиве. Его можно было бы удалить вручную в HTML, но здесь больше ста страниц, и должно быть лучшее (и более быстрое!) решение. Думаю, здесь нужно воспользоваться sed или awk, но я с ними не знаком. Какая команда (или скрипт) поможет мне? Еще одна проблема — хотя скрипт архива помещает множество файлов в одно и то же место, он также жестко прописывает на странице абсолютные ссылки (с HTTP).
Dutch_Master, с форумов
О Программа, которая вам нужна – sed, сокращение от “stream editor” [потоковый редактор]. Он используется в основном для скриптового, или автоматизированного, редактирования файлов. Большинство команд sed работают с целыми строками; одна из них – d, что значит – не удивляйтесь – «удаление» [delete]. В самом простом виде команда
sed 5d index.html
удаляет пятую строку и отправляет остальное содержимое в стандартный вывод. Можно задать диапазон строк, через запятую; так, удаляя текст с восьмой по семнадцатую строку, скомандуйте
sed 8,17d index.html
Если указать параметр -i или --in-place, данные будут записаны обратно в исходный файл. Также можно указать суффикс, с которым сохранится первоначальная версия исходного файла. Скажем, команда
sed -i.bak 8,17d index.html
удаляет строки из файла index.html и сохраняет первоначальную версию исходного файла под именем index.html.bak. Что делать, если текст не всегда в одних и тех же строках? В этом случае нужно искать его по-другому. В примере, который Вы прислали, они любезно начинают свой код с BEGIN ARCHIVE TOOLBAR и заканчивают его аналогично. В sed строки можно задавать с помощью регулярных выражений, и вот Вам команда:
sed -i.bak /BEGIN\ ARCHIVE\ TOOLBAR/,/
END\ ARCHIVE\ TOOLBAR/d index.html
Текст между двумя слэшами интерпретируется как регулярное выражение, поэтому пара слэшей перед запятой содержит выражение, обозначающее начало диапазона, а вторая пара – выражение, обозначающее конец диапазона. Обратные слэши экранируют пробелы, иначе оболочка обработает их неправильно. В данном случае регулярное выражение представляет собой простую текстовую строку, но можно использовать любое корректное регулярное выражение. И здесь от sed начинает болеть головка, но причина не в сложности sed, а в свойстве регулярных выражений превращать мозги в кашу.
Как я отмечал ранее, большинство команд sed работают с целыми строками. Одно из исключений – оператор замены, который выглядит так:
sed s/старыйТекст/новыйТекст/ имяФайла
С ним можно заменить все жесткие ссылки на относительные примерно такой командой:
sed ‘s&http://имяСайта.org/
web/20041103050546/http://web.utanet.at/
smiderkr/asr&&g’
Вы видите, что здесь мы воспользовались & в качестве разделителя; sed использует первый подходящий символ – обычно это слэш. Если бы мы воспользовались слэшем, пришлось бы экранировать каждый слэш в URL-адресе обратным слэшем, что создает эффект «частокола зубочисток», делающий многие регулярные выражения нечитаемыми. g означает замену всех вхождений – по умолчанию s заменяет только первое вхождение в каждой строке. Строка замены пуста, и все ссылки будут ссылаться на текущий каталог. Наконец, можно объединить несколько выражений для sed в одной команде, указав перед каждой -e. Так можно обработать все файлы в каталоге:
for f in *.html; do
sed -i.bak -e /BEGIN\ ARCHIVE\TOOLBAR/,/
END\ ARCHIVE\ TOOLBAR/d -e ‘s&http://sitename.org/web/20041103050546/http://web.utanet.at/smiderkr/asr&&g’ $f
done
LocalWords: sed html bak
*3 Thunderbird повсюду
В Насчет миграции с Windows на Linux — во всяком случае, доступности приложений для Linux: многие люди рискнули бы это сделать, если бы можно было установить Thunderbird в Windows и в Linux, но пользоваться общими файлами данных (например, на отдельном разделе). Это позволило бы одинаково работать с почтой в любой операционной системе.
Йорн Педерсен [Jørn Pedersen]
О Думаю, это возможно, хотя у меня под рукой нет компьютера с Windows, чтобы это проверить. Здесь главное – пользоваться нужной файловой системой. Так как Linux отлично ладит с Windows, он может прочесть данные с раздела Windows. Впрочем, здесь могут возникнуть некоторые проблемы, если в разных версиях Thunderbird используются разные форматы файлов.
Простейший способ это проверить – взять USB-брелок и отформатировать его в Windows, затем скопировать на него данные из Windows-версии Thunderbird. Затем запустите Live-версию Linux (если он не установлен), одну из тех, которые мы размещаем на дисках каждый месяц, и попробуйте загрузить файлы с USB-брелка. Если это сработает, можно будет перейти к более постоянному решению. Пожалуй, лучшее решение – создать отформатированный в FAT раздел, доступный из Windows и Linux, и разместить файлы на нем. В принципе, можно воспользоваться и NTFS, но раньше в Linux были проблемы с записью в NTFS, а я склонен быть максимально осторожным, когда дело касается файловых систем.
Другой вариант – пользоваться IMAP для своей почты, если интернет- или почтовый провайдеры это позволяют. С IMAP почта хранится на сервере, а с POP3 ее нужно предварительно загружать.
Это позволяет не только пользоваться одним почтовым клиентом в разных операционных системах, но и даже разными клиентами на разных устройствах, что особенно удобно, если Вы работаете с почтой со смартфона.
*4 Windows в Linux
В Скоро я получу диплом, и, к счастью, у меня уже есть работа. Увы, на работе пользуются Windows и старыми серверами на Unix, и мне, чтобы при случае работать из дома, понадобится компьютер с Windows. Разумеется, по жизни я пользуюсь Linux и не хочу, чтобы еще один компьютер с Windows захламлял мой дом. Поэтому я сам хочу собрать хороший компьютер, установить туда Xen с Linux и Windows и загружать Windows только при необходимости. Однако я хотел бы установить туда PCI-карту ADSL2+, плату телефонной связи для запуска Asterisk и файлового сервера.
Можно ли зайти (загрузить) на мой «сервер» с помощью тонкого клиента независимо от операционной системы, и можно ли сделать это с помощью только открытого ПО?
Алекс Чемберлен [Alex Chamberlain]
О Можно, с помощью программы вроде сервера терминалов Linux (Linux Terminal Server Project, www.ltsp.org); но это, пожалуй, излишне, если вам нужен всего лишь компьютер с Linux, на котором время от времени нужно запускать Windows. Я бы посоветовал воспользоваться одной из программ виртуализации, такой как VirtualBox... или Qemu-kvm, которая мне нравится больше. Обе используют аппаратную виртуализацию современных процессоров (как и Xen) и позволяют не прерывать работу Linux, в том числе таких программ, как сервер Asterisk, и при необходимости запускать Windows в отдельном окне. Если Вашим программам в Windows не нужны DirectX или серьезное 3D-ускорение (для этого потребуется обычная загрузка в Windows), это простой и самый удобный вариант. Xen прекрасно подходит для виртуализации серверов, но для рабочего стола его возможности избыточны. VirtualBox прост в использовании, и для создания виртуальной машины с Windows потребуется пара минут плюс время, необходимое для установки операционной системы. VirtualBox и Qemu есть в репозиториях почти всех дистрибутивов, и ни одной из этих программ не нужно ничего особенного от ядра, если включена поддержка расширений KVM (Kernel-based Virtual Machine – виртуальная машина на основе ядра); поэтому возьмите свой любимый дистрибутив и установите ПО для эмуляции как обычно.
В каждом из этих вариантов Вам, конечно, понадобится установочный диск Windows. Какой бы вариант Вы ни выбрали, помните, что лицензии на некоторые дешевые варианты Windows запрещают установку системы на виртуальную машину; на всякий случай перечитайте то, что написано мелким шрифтом.
*5 Linux на брелке
В Почему с современными быстрыми USB-дисками и SD-картами мы все еще должны пользоваться unetbootin, который создает squashfs или другую сжатую файловую систему? Другими словами, зачем нам нужен live-дистрибутив, когда мы можем носить настоящий дистрибутив с собой на брелке? Я предпочел бы, чтобы «сердце и душа» Linux занимали бы больше места на моем USB-брелке размером 16 ГБ, и, надеюсь, работали бы быстрее.
Я установил Mint 11 на SD-карту размером 8 ГБ (с разделом подкачки 2 ГБ), но для этого мне пришлось отключать основной жесткий диск. На карте свободно 3,3 ГБ, это достаточно для файлов и всего такого, но карта здорово тормозит. Теперь у меня есть высокоскоростная карта SanDisk размером 16 ГБ, которая прекрасно подошла бы для переносного дистрибутива. Что бы посоветовали вы? Есть ли у полноценной установки недостатки по сравнению с live-версией, не считая очевидного ограничения на размер?
Роберт Джулиано [Robert Giuliano]
О Установить дистрибутив Linux на устройство с флэш-памятью Вам не помешает ничто, но по ряду причин так делают не всегда. С помощью Unetbootin, dvd2usb и подобных им программ на наших DVD можно преобразовать Live CD или DVD в формат USB, чтобы дистрибутив устанавливался на компьютер без привода оптических дисков. К тому же live-дистрибутив на USB-брелке – прекрасный инструмент для поиска неисправностей. Но если Вам нужно портативное рабочее окружение, систему можно установить и на USB-брелок. Тогда Вам не придется беспокоиться о сохранении своих файлов на отдельном устройстве, потому что /home всегда на месте. Вы также сможете добавлять и удалять устройства и изменять настройки в соответствии со своими нуждами.
У такого подхода есть несколько недостатков, но в основном по сравнению с установкой на жесткий диск. Очевидный недостаток – скорость: даже самые быстрые флэш-диски на порядок медленнее жестких дисков. Одно из преимуществ некоторых Live-дистрибутивов в том, что в них можно скопировать сжатую файловую систему в оперативную память, что увеличивает время загрузки, но сильно ускоряет дальнейшую работу системы.
Серьезный недостаток устройств флэш-памяти – недолговечность. Ресурс в миллион операций записи кажется большим, но при частой записи на диск, например, журналов файловой системы он израсходуется довольно быстро. USB-диски дешевы и их легко заменить, так что это вроде и не большая проблема, если есть запасной брелок. Но будьте уверены, что рухнет система в самый неподходящий момент. Этот риск можно уменьшить, обратившись к облачному хранилищу.
Для уменьшения износа флэш-памяти можно принять некоторые меры: например, воспользоваться файловыми системами ext2 (USB-диски небольшого размера, поэтому задержка из-за запуска fsck будет не фатальна). Также стоит смонтировать /tmp на tmpfs, разновидность динамического RAM-диска, в котором используется ровно столько памяти, сколько необходимо для хранения его содержимого. Так как каталог /tmp обычно невелик по размеру, но в него часто записываются данные, у этого подхода нет недостатков, если только с памятью не слишком туго. Добавьте в /etc/fstab строку
tmpfs /tmp tmpfs noatime,mode=1777 0 0
чтобы увеличить срок службы своего флэш-диска.
6 MBR: Нет загрузочной записи
В Я пользовался Ubuntu с 2008 года (в конфигурации с двойной загрузкой с Windows XP), и до сих пор проблем у меня не было. Но мне не понравился Unity, и я поставил Mint вместо Ubuntu. Затем я переустановил Ubuntu. Где-то в ходе этого процесса я перезаписал главную загрузочную запись (MBR) Windows, и теперь загружается только Ubuntu. Я нашел документацию по установке и выяснил, что я сделал не так, но теперь не знаю, как это исправить. В Интернете я находил некоторые рецепты, с отзывами от «мне это помогло» до «теперь не загружается ни одна ОС». Мне также встречался совет в следующий раз сделать резервную копию MBR — но я не знаю как.
Джойс Хаслам [Joyce Haslam]
О Резервную копию MBR (Master Boot Record – главная загрузочная запись) можно сделать такой командой, которая копирует первые 446 байт диска – это и есть MBR – в файл:
dd if=/dev/sda of=mbrbackup bs=446 count=1
Восстанавливать MBR нужно с правами root, поэтому воспользуйтесь следующей командой:
sudo dd if=mbrbackup of=/dev/sda
И в Ubuntu, и в Mint используется Grub 2; в нем при настройке загрузчика происходит поиск других операционных систем на компьютере. Возможны два варианта. Первый – в меню загрузки есть запись для Windows, но Вы не видите меню. При загрузке можно принудительно вывести меню, удерживая клавишу Shift. Это вызовет появление меню Grub; если в нем есть пункт с Windows, все отлично. Чтобы меню отображалось при каждой загрузке без удерживания Shift, откройте /etc/default/grub и закомментируйте параметр GRUB_HIDDEN_TIMEOUT, добавив в начале строки #. Затем запустите update-grub.
Если строка с Windows в меню отсутствует, выполните команду
sudo update-grub
для повторного создания меню. Убедитесь, что в каталоге /etc/grub.d есть скрипт os-prober и что в /etc/default/grub не задан параметр GRUB_DISABLE_OS_PROBER (если он задан, добавьте в начало строки #). Главная загрузочная запись Windows просто передает управление загрузчику ОС в разделе Windows; то же самое выполняет пункт с Windows в меню Grub. |