пʼятниця, 19 вересня 2014 р.

А-а-а, всё сломалось!

Самое интересно начинается тогда, когда что-то пошло не так. Можете представить все чувства секретаря (секретутки :) ), которая умеет только документы печатать, а тут ОС не грузится или бумагу в принтер зажевало, а сдавать документы надо было вчера.
Естественно, всякого бывает, но основной источник проблем находится между монитором и спинкой стула.
С линуксами мне встречались лишь 2 основные проблемы:
1) грузится лишь консольный режим, то есть нету рабочего стола, ярлычков и всей другой атрибутики, есть лишь ваш любимый терминал во весь экран;
2) ОС не грузится вообще, даже в режиме восстановления.

1. Основная причина - сломался X-сервер (графическая оболочка, грубо говоря) после неакуратных действий пользователя (либо акуратных, но результат оказался непредсказуем). Например, вы решили поставить проприетарные драйвера на видеокарту вместо свободных, перезагрузились - и всё )
Тут хорошо иметь под рукой ещё один комп, когда можно быстро нагуглить как восстановить свободные драйвера именно на вашей системе. Если такового не имеется, вам придётся освоить консольные браузеры.
Вот так выглядит гугл в консольном браузере lynx (слабонервным и сильнонервным просьба отойти): 



Ещё, возможно, какое-то обновление решило удалить вам вообще xorg (даже такое бывает, когда вы подключаете сторонние непроверенные репозитории), в таком случае достаточно просто переустановить его. И обновляться только с консоли, чтобы увидеть что может быть удалено, почему и убрать гадкие репозитории.

2. Если ОС не грузится вообще - это проблема похуже, тут без ещё 1 компа не обойтись (ну или у вас ещё Винда установленная есть на том же компе, придётся грузится в неё).
Ну или у вас уже есть загрузочная флешка или диск (Live USB or LiveCD/DVD).
В данном случае, надо загрузиться в ту "живую" ОС и решить проблемы. Благо, если вы знаете, что имено вы сделали в последний раз и что надо исправить. В противном случае - возможен даже летальный исход с последующей переустановкой.
Реальный случай:
Я хотел добавить в автозагрузку старт своего веб-сервера на bottle. Для этого прописал в /etc/rc.d/rc.local строчку:

cd /home/data/work/web/budget && python budget.py

И, забыл, что процесс висит сразу же в терминале, дожидаясь пока его не прибьют. Получается, что при загрузке системы он и висит тем блокировщиком, которые не даёт загрузиться дальше, он ведь ждёт, пока его не прибьют. Я уже знал, что надо сделать и как (достаточно добавить & в конец команды и процесс уйдёт в фон). Осталось сделать загрузочную флешку.
После загрузки надо смонтировать тот раздел с правами на запись и изменить файл.
Ищем нужный раздел командой (часть вывода заменил на три точки):

$ sudo fdisk -l
...
/dev/sda        <разные параметры раздела вроде такого:>
/dev/sda1      <617693184   755113983    68710400   83  Linux>
...
/dev/mapper/fedora-root
...
/dev/mapper/fedora-home
...

Если не сразу знаете, что какой раздел монтировать, можно пробовать все поочереди. Мне нужен был "fedora-root":

$ mkdir /mnt/froot
$ sudo mount -o rw /dev/mapper/fedora-root /mnt/froot

После чего успешно редактируем наш файл (мне нравится редактор vim):

$ sudo vim /mnt/froot/etc/rc.d/rc.local

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

вівторок, 12 серпня 2014 р.

Учимся писать полезные скрипты на bash

Сегодня учим делать полезные скрипты своими руками на одном практическом примере. Понадобилось как-то мне конвертировать пачку файлов из rst формата в docx. В браузере  на сервере rst рендерилось и отображалось как обычный html, тобишь уже такая автоматическая конвертация. Стянув пачку файлов, я получил хоть и с rst-расширением, но всё же в html коде. И это значит, надобно перевести в docx.
Итак, задача ясна, ищем решения. Немного погуглив, находим утилиту pandoc - http://johnmacfarlane.net/pandoc/demos.html
Умеет конвертировать фактически с любого языка разметки на любой другой.
Естественно, по одному файлу тыкаться как-то не хочется, разбираться может ли сам pandoc сделать групповую конвертацию - тоже влом. Решено быстро написать баш скрипт.
Для начала, надо перебрать все файлы с заданным расширением. Проверяем идею:

$ for fn in `find . -name "*.rst"`; do echo $fn; done
document1.rst
document2.rst
........
document10.rst

Часть вывода здесь опущена и вообще придумана :)
`find . -name "*.rst"` - поиск файлов по шаблону; если взять в эти кавычки, где знак "~", то подставится заместо команды вывод этой команды, то есть список всех найденых файлов. Ну и чтобы получить доступ к значению переменной, ставится знак "$".
Команда echo, грубо говоря, выводит указанное сообщение на консоль. В данном случае, выводит значение переменной fn.
Теперь, нам надо каждый найденный файл конвертировать и дать новое название. Сначала надо получить новое название. Поэтому теперь цикл будет выглядеть вот так:

for fn in `find . -name "*.rst"`
do
   new_fn=`basename $fn rst`docx
   echo $new_fn
done

Запишем этот цикл в файл, например group_converter.sh и запустим такой командой:

$ sh group_converter.sh
document1.docx
document2.docx
........
document10.docx

Отлично, теперь можно конвертировать. Изменяем файл:

for fn in `find . -name "*.rst"`
do
   new_fn=`basename $fn rst`docx
   pandoc -s -S -f html $fn -o $new_fn
done

Запускаем и видим что работает! Было бы неплохо навести красоту и возможность конвертировать с любого формата в любой. Но, здесь надо будет ключи подбирать (-s -S, для других форматов - другие ключи и т.п.), поэтому, скрипт может разрастить до таких нормальных размеров. А наша первоначальная задача выполнена. Поскольку, конвертировать группу файлов не каждый день приходится, универсализация скрипта может подождать. Последнее, что сделаем, это допишем информацию о скрипте:
#!/bin/bash
# Group markup coverter
# Usage:
#             copy this script to directory with files and run from inside

for fn in `find . -name "*.rst"`
do
   echo "Processing file: $fn"
   new_fn=`basename $fn rst`docx
   pandoc -s -S -f html $fn -o $new_fn
done
Вот такой вот скриптик делается буквально за 2 минуты, а польза огромная - за пару секунд конвертирует пачку файлов.

понеділок, 4 серпня 2014 р.

Разные полезности для новичков продвинутого уровня )

Наверное, вы уже ближе познакомились с миром никсов, возможно, даже выбрали себе дистрибутив. Покликали разные кнопочки, посмотрели все менюшки, но пора двигаться дальше. Можно конкретно облегчить себе жизнь, работу, зная хотя бы пару простых секретов и команд. Конечно, вам следует поискать хорошие книги, чтобы ознакомиться со всем глубоко и полностью. Здесь же покажу лишь нужные всем основы.
Как вы, уже поняли, всё делается через терминал. И если вы вдруг что-то ему плохое сделали, попутали переменные окружения, то необязательно закрывать его и запускать снова, можно ввести команду переинициализации:

$ reset

Если вы ввели команду, а потом оказалось что её надо было вводить с правами администратора, то самый быстрый путь:

$ sudo !!

!! - подставляет последнюю введённую команду.


Запуск HTTP-сервера в текущей директории на 8000 порту:

$ python -m SimpleHTTPServer

Допустим, вы делаете резервные копии руками, пока что без знаний о таких утилитах как rsync и других. Можно сравнить два каталога на наличие отличающихся файлов:

$ diff -qr dir1/ dir2/

Эта же утилита diff может просто сравнивать два файла и показать отличия построчно в удобочитаемом виде.
Сделать загрузочную флешку из большинства iso-образов (не все подходят под этот фокус) можно просто и легко:

$ dd if=/path/to/iso of=/dev/usbdevice

Главное, не перепутайте if и of (input - входящий, тобишь образ, output - исходящий, тобишь флешка). Показывать прогресса при этом не будет. Есть разные пути решения, один из вариантов (не надо ничего доустанавливать), открыть другую вкладку терминала и ввести:

$ watch -n 10 'killall -USR1 dd'

Это будет через каждых 10 секунд (watch -n 10) обновлять статус.
Копирование по ssh большой пачки файлов, как один файл, намного быстрее будет:

$ tar -czf - /some/dir | ssh host.name tar -xzf - -C /destination

Пока что хватит. Вам и так придётся много погуглить, чтобы до конца разобраться и освоить. И не забывайте про man pages.

понеділок, 30 червня 2014 р.

Виртуальный мир в виртуальном мире

Вот вы уже решились "потрогать руками" этого пингвина, но дистрибутивов с ядром линукса существует тьма тьмущая. Какой же себе поставить? Хорошенько погуглив, можно отсеять большую часть, и останется несколько штук (по-моему гуглению - Debian, Ubuntu, CentOS, Fedora, OpenSUSE Slackware, ArchLinux; последние 2 требуют немного секса для установки и настройки, но, говорят, оно и к лучшему).
Опять-таки, читая разные форумы и отзывы, можно сделать разные выводы и, зачастую противоречивые, но где же правда? В идеале - это попробовать самому. И, если у вас достаточно оперативной памяти (желательно больше 2 гб), то попробовать всё самому можно очень просто и легко (и, главное, безопасно). А это всё благодаря программам виртуализации. Тоесть, программа берёт указанное свободное место на жестком диске и использует его как симуляцию отдельного раздела, где вы можете проводить любые опыты без вреда для ваших файлов, главной ОС и всего прочего. Конечно, виртуальная ОС будет отбирать ресурсы процессора и оперативки, потому вам и нужен компьютер помощнее, чтобы опробовать все прелести. Можно также без опаски устанавливать разные программы в виртуальную ОС, удалять, экспериментировать с разными настройками и т.п., оно никоим образом не тронет вашу главную систему. Звучит заманчиво? Предлагаю на ваш выбор две программы виртуализации - VirtualBox, VMware Player. Они обе бесплатные, обе имеют много разных возможностей. Иногда, случается, что какая-то ОС не работает в одной виртуалке, но работает в другой. Поэтому, ставьте себе обе программы :)
Теперь вы сможете всё потрогать своими руками и решить самостоятельно, нужен вам какой-то линукс или нет, и какой именно. И, главное, что не надо перезагружаться из вашей любимой ОС, всегда можно просто свернуть окно. Кстати, эти две программы-виртуалки работают также и под линуксами. То есть, можно из-под вашего дистрибутива линукса попробовать какой-то другой дистрибутив (или даже виндовс! но это уже немного извращение, хотя случаи всякие бывают, например, виртуальный виндовс может пригодиться для неких процедур, когда нет лицензии на него :)).
Что ж, удачи, пробуйте, решайте, вскоре будет копать глубже.

пʼятниця, 20 червня 2014 р.

Старый друг - лучше новых двух

Любая ОС сначала вся такая разпрекрасная, летает, ничего не глючит, а со временем что-то идёт не так. И чтобы сломать своими же руками, никакой вирус не нужен, у меня это успешно получалось неоднократно. Восстановить же без переустановки не всегда получается, но с линуксами в этом всё же попроще. А как можно сломать *nix систему не преднамеренно?
В основном - это неосторожность и самонадеянность. Особая печаль, когда систему ломают обновления. Как же так? - спросите вы... ну, спросите меня...
Многие дистрибутивы, которые "хотят" быть популярными, позволяют подключать разные репозитории, даже не проверенные или какие-то репозитории партнёров. И фокус в том, что некоторые пакеты с одного репозитория могут конфликтовать с пакетами из другого, иметь общие зависимости или ещё чего-то. А со временем вы всё равно себе что-то поподключаете, даже заядлый "работник" захочет иногда расслабиться и поиграть во что-то, или вдруг, надо будет скачать себе новые фреймворки со сторонних репозиториев. Всякое может случиться, надо лишь быть внимательным, всегда думать о действиях и последствиях, и брать на себя ответственность. "Я ничего не ломала, я лишь хотела помыть ноутбук с мылом!"
У меня был интересный случай, когда одни обновления удалили мне Х сервер (графическое окружение, не знаю как объяснить для виндузятников), и при следующей загрузке - Я радовался голой консоли. Немного поковыряв и даже слазив разок в интернет, благо есть консольные браузеры (для виндузятников - это вообще страшный сон, наверное), Я всё в$осстановил. Потом убрал "нехорошие" репозитории из своего списка. Ну и вправду, если всё работает, то зачем обновлять? Это ж не критические обновления безопасности, это сторонние хранилища приложений. Если ваш любимый плеер может проигрывать вашу музыку, создавать плейлисты и всё такое, зачем вам его обновлять? Ради обложки??? Нет, всякого бывает, но лучше иметь дело лишь с проверенными источниками (это как в винде вы качаете ехе-файл с сомнительного сайта).
В общем, обновления, как по мне, лучше тоже проводить из консоли и высматривать что там хочет поудалять и пообновлять. И, возможно, лучше руками пообновлять нужные пакеты и не трогать всё остальное.
В деб-дистрах это делается так (в других, по аналогии):

$ sudo apt-get update
$ sudo apt-get upgrade

Первая команда - по сути, проверяет возможность обновления, апдейтит репозитории. Вторая - уже само обновление (апгрейд).
После чего, вам покажет список действий и пакетов для каждого действия и спросит вашего подтверждения:

sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
  icedove iceowl-extension iceweasel
The following packages will be upgraded:
  apt apt-utils calendar-google-provider dpkg dpkg-dev google-chrome-stable libapt-inst1.5 libapt-pkg4.12 libdpkg-perl libnspr4 libssl-dev libssl-doc libssl1.0.0 openssl tzdata tzdata$-java
16 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 61.8 MB of archives.$
After this operation, 1,110 kB of additional disk space will be used.
Do you want to continue [Y/n]? 

Вот здесь вы и должны всё внимательно посмотреть, иногда оно захочет удалить что-то якобы устаревшее, ненужное, но может быть и х-сервером, как в моем случае ))
В данном случае показывает, что ничего удалять не будет, можем смело обновляться.
Как всегда, вывод один - голова нужна не только для того, чтобы в неё есть.

понеділок, 16 червня 2014 р.

Главный вопрос: ЗАЧЕМ?

Линуксоиды - это как баптисты. нужно еще хотя бы одного кого-нибудь в жизни переманить в свою религию. (цитата из Баша, оставил Virpool)

В 3/9 царстве, в 3/10 государстве у всех был установлен Windows, и, к счастью, лишь с недоумением относились к еретикам с другими ОС, не сжигая их на кострах. Со временем, еретиков становилось всё больше и вот в некоторый момент, они уже перестали таковыми быть. Но всё же, вопросы остаются открытыми - что же их так подманило туда? почему же так захотелось пройти тяжелые испытания, отказаться от всех благ Windows, следовать строгим заповедям? Ведь можно просто беззаботно играться и почти ни о чём не париться...

Самое главное (имхо) - стоимость. Конечно, если вы себе ставите пиратку на дом, то вопрос о стоимости фактически отпадает, но каковы гарантии, что в пиратке не сломали ещё чего-то? Каковы гарантии, что пиратка ничем не уступает лицензионной ОС? А ещё надо другие пиратские программы, всё тот же офис, например. Дома вас никто проверять не будет, если нравится - ставьте, экспериментируйте, а вот на предприятиях разных должно быть всё лицензионное, сертифицированное и т.д. и т.п. И вот там уже остро встаёт вопрос, что дешевле - закупить лицензионное ПО или пользоваться свободным, но тратиться на специалиста по обслуживанию, или, даже, платить за обучение сотрудников. В последнее время начинают отдавать преимущество свободному ПО.
Вывод: дома - вы хозяин и делаете всё, что вам заблагорассудится; но, вследствие всё растущей популярности свободного ПО, вам может быть понадобится хотя бы ознакомится с  этим "сектантским" ПО.

А кофе на клавиатуру тоже вирус разлил?
Многие думают, что если поставить хороший антивирус (при этом опять-таки хотят нахаляву, опять крякнутый), то вирусов можно не бояться, и можно спокойно запускать разные exe-файлы от имени администратора. "Ну, ругается на этот файл антивирус, ну и что? Это же кряк к другой программе, потому и ругается! А мне эта программа очень нужна, у Маши же она установлена!" И вот таким образом, пользователи Windows (не все, а то сейчас полетят оскорбления), не привыкшие думать своей головой, словят порнобаннер а потом зовут "тыжпрограммистов" это исправить (или сына-старшеклассника подруги троюродной сестры, который "разбирается в процессорах"). Так вот, главная опасность для любого компьютера, для любой ОС - это пользователь. Угробить можно всё, Я бы не давал особого преимущества свободным ОС в этом плане, хоть и вирусов для них почти нет (но есть ещё фишинговые сайты и другие интересные ловушки). Единственное преимущество - линуксы учат думать. Но, конечно, есть и серьёзные бойцы сопротивления, которые всё равно не хотят думать. Будем считать, что если вы вообще это читаете, то вы не из "этих".
Вывод: если подойти с умом, то любая система будет защищена, но линуксы и фрибсди ещё лучше.

Удобство и настраиваемость
С одной стороны - это дело вкуса, но когда система полностью открыта, можно смотреть любые исходники и конфигурационные файлы, то и настроить много намного больше. Другое дело, что это не так легко, как клацать мышкой по знакомых надписях. Но, кто привык работать больше с клавиатурой, особенно, те, что прошли через DOS и Norton Commander, любят ковырять конфиги - они то точно должны признать, что unix-подобные ОС удобнее. Большинство нужных программ ставятся из коробки, другие можно поставить легко из безопасных репозиториев, а не лазить часами по интернету в поисках программ, а потом ещё часами в поисках рабочих кряков. Итого, титул "удобства" лично Я отдаю линуксам, в частности, дебиану и убунте (возможно, оттого, что Я к ним привык).

Игры и работа
Ну, в играх, линуксы пока что отстают. Ведь бесконечное множество игр было сделано для наиболее популярной оси на те времена, а это были довольно долгие времена. К счастью, есть нативный досбокс, который позволяет легко запускать старые игры (например, такая крутая игра, как X-COM), есть wine, который позволяет запускать уже продвинутые игры (у меня завелся WarCraft III, но притормаживает слегка), есть хорошие репозитории с родными играми (например, playdeb для убунты), и, даже, в Steam уже есть большая пачка игр для линуксов. Но, всё равно пока что это всё проигрывает винде.

Какой из всего этого можно сделать вывод? Хотите играться - ставьте винду, хотите безопасно работать в дороге, кафе с общественным вай-фаем - лучше ставить на лептоп какой-нибудь дистрибутив линукса. А вообще, это дело ваше; возможно, Я где-то тоже ошибаюсь, возможно, через лет 5 всё в мире ИТ кардинально изменится, а может быть вместо изучения всех премудростей операционных систем лучше научиться строить дома, лечить людей, ремонтировать автомобили...
Поэтому помните, всё в ваших руках, всё для себя решать тоже лишь вам. Но, не покупайте в супермаркетах "настройки" для ноута вместе с ноутом :)

пʼятниця, 13 червня 2014 р.

Параллельные миры

И снова здравствуйте! На Убунте мир *nix не заканчивается, да и вообще, многие матерят этот дистр как за недостатки, так и даже за "достатки", мол, это не тру линь, это уже как винда. Но, тем не менее, если вы будете ежедневно пользоваться терминалом для решения самых разных задач, вы вскоре будете себя комфортно чувствовать и в любой другой unix-подобной оси. Ведь основные команды те же, а наибольшая ощутимая разница, на первый взгляд, это управление пакетами (установка, удаление, поиск), о которой сегодня и напишу здесь.
Мир линуксов очень богат, каждый хотел запилить систему под себя, кто-то хотел просто сделать достойную ОС доступную для всех людей, которая смогла бы конкурировать с Виндой от жадного Майкрософта (не то, чтобы Я ненавижу Майкрософт, но уже можно было бы выпускать новые дистрибутивы Windows подешевле, карманы и так полные).
Вот, нашел в сети такую карту развития линуксов (клик по изображению и сможете рассмотреть получше):


Наиболее распространенные дистры (если сеть не наврала), это ветки Debiana (для них подходят deb-пакеты, но могут быть различия) и ветки Red Hat (rpm-пакеты).

Deb-дистры

Чтоб работать с пакетами вам нужно будет немного научиться пользоваться низкоуровневой утилитой dpkg (в основном используется для установки уже скачанных deb-пакетов и удаления) и высокоуровневой apt-get (позволяет легко скачать с репозитория, скачивая также дополнительные пакеты, которые нужны для работы того главного).
Все незнакомые слова - немедленно гуглите! Таким образом вы будете понимать, что происходит и быстрее научитесь.
Допустим, вы скачали скайп с официального сайта скайпа (в официальных репозитариях (репах) линуксов его быть не должно). Пусть он у вас лежит в папке Downloads, установка выглядит так:

$ sudo dpkg -i ~/Downloads/skype.deb

Примечания:
1) sudo - позволяет выполнить команду от имени администратора, если же вы и так зашли как админ (рут, root), то sudo вам не нужно, но и сидеть под рутом вам тоже не нужно. Sudo вас спросит о вашем пароле, и если вы состоите в "группе админов", то вы имеете право пользоваться командой sudo, соответственно, скайп установится, а иначе получите соответсвующее сообщение.
2) имя пакета в примере skype.deb, когда же вы скачаете, он может иметь имя наподобие этого:
skype-debian_4.2.0.13-1_i386.deb
Посему, команда будет выглядеть так:

$ sudo dpkg -i ~/Downloads/skype-debian_4.2.0.13-1_i386.deb

Но не надо печалиться, что вам придётся набирать такое руками, ведь есть автодополнения с помощью кнопки "Tab", вам достаточно набрать в данном случае начало имени, тобишь хотя бы skype и нажать кнопку Tab (можно и первую букву набрать, но на букву "s" у вас может быть уже много загрузок, в общем, экспериментируйте, не бойтесь).

Теперь пробуем поставить какую-то программу из репозиториев, например чудо-блокнот (нет, даже супер записная книжка) Zim:

$ sudo apt-get install zim

Вот так просто и легко! И даже не надо искать в интернете и скачивать пакет руками.
При этом, сами установочные пакеты остаются сохранены на вашем компьютере в так называемом кеше. Вскоре может оказаться, что они занимают несколько гигов места! Но это тоже очень легко решается, достаточно раз в полгода выполнить:

$ sudo apt-get clean
$ sudo apt-get autoclean

Разницу между этими двумя командами попробуйте нагуглить сами. Удаление ненужных программ, как вы возможно догадались, делается так (здесь удалем записничек Zim, но Я бы его никогда не удалял):

$ sudo apt-get remove zim

Есть ещё опция "purge", о которой тоже попробуйте сами погуглить.

Rpm-дистры

Поскольку Я большой лентяй, то тут будет покороче и, возможно, погрубее. Здесь, аналог dpkg - утилита rpm, а apt-get - yum:

$ sudo rpm -i ~/Downloads/skype.rpm

Как видим, почти то же самое, только пакет скайпа у нас уже сформирован для rpm-дистрибутивов! Тобишь, нельзя деб-пакеты ставить на рпм и наоборот.
Ну и ставим Zim (на Fedora линуксе ставится, дальше вроде не):

$ sudo yum install zim

Далее, думаю, несложно будет догадаться, как то всё удалять и подчищать.

FreeBSD

Здесь немного другая схема. Много программ портированы и многие пакеты часто сохраняются в специальном месте при установке фряхи (FreeBSD), но не устанавливаются сразу. Ну и конечно же, остальное всё можно также установить из репозитариев.
Установка из портов:

$ cd /usr/ports/path_to_port
$ make install clean

Для наглядности, давайте найдём и установим прелестный скриптовый язык програмирования python:

$ whereis python
python: /usr/ports/lang/python
$ cd /usr/ports/lang/python
$ make install clean

Возможно, вам понадобится sudo для последней команды.
Установка из репозитариев (обычно, просто ftp):

$ sudo pkg_add -r package_name

Где package_name - это нужная вам программа.

Для всего этого, вам надо знать как пишется та или иная программа. Поэтому, погуглите, как искать в своём дистрибутиве доступные для инсталлирования программы.
Пока что всё, до встречи!