<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Кибер-Фанк v2.0 &#187; linux</title>
	<atom:link href="http://www.shatlovsky.ru/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shatlovsky.ru</link>
	<description>Information must be free</description>
	<lastBuildDate>Thu, 29 Apr 2010 16:23:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>nvidia в ubuntu: реанимация</title>
		<link>http://www.shatlovsky.ru/2009/11/20/nvidia-v-ubuntu-reanimaciya/</link>
		<comments>http://www.shatlovsky.ru/2009/11/20/nvidia-v-ubuntu-reanimaciya/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 22:40:58 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[9.10]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nvidia]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[ежики]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=149</guid>
		<description><![CDATA[Внезапно умерли иксы. Как в анекдоте: шел ежик ubuntu по лесу, забыл как дышать грузить драйвер nvidia и умер. Симптомы такие: при загрузке в том месте, где система обычно переходит в графический режим, экран начинает бешено мигать, при этом видно, что загружаются демоны. В конце концов видим обычное приглашение текстовой консоли, однако войти в систему [...]]]></description>
			<content:encoded><![CDATA[<p>Внезапно умерли иксы. Как в анекдоте: шел <s>ежик</s> ubuntu по лесу, забыл как <s>дышать</s> грузить драйвер nvidia и умер.</p>
<div id="attachment_161" class="wp-caption alignnone" style="width: 310px"><a href="http://www.shatlovsky.ru/wp-content/bluelunarrose_a.jpg"><img src="http://www.shatlovsky.ru/wp-content/bluelunarrose_a-300x225.jpg" alt="Шел ежик по лесу, и вдруг забыл как дышать" title="Шел ежик по лесу, и вдруг забыл как дышать" width="300" height="225" class="size-medium wp-image-161" /></a><p class="wp-caption-text">Шел ежик по лесу, и вдруг забыл как дышать</p></div>
<p>Симптомы такие: при загрузке в том месте, где система обычно переходит в графический режим, экран начинает бешено мигать, при этом видно, что загружаются демоны. В конце концов видим обычное приглашение текстовой консоли, однако войти в систему невозможно, потому что клавиатура практически не слушается. Потому что в это время <code>Xorg</code>, словно в Колесе Сансары, непрерывно перерождается и умирает, не находя модуля <code>nvidia</code>:</p>
<p>/var/log/Xorg.0.log:</p>
<pre>(II) LoadModule: &quot;nvidia&quot;
(WW) Warning, couldn't open module nvidia
(II) UnloadModule: &quot;nvidia&quot;
(EE) Failed to load module &quot;nvidia&quot; (module does not exist, 0)</pre>
<p>Примерно такие сообщения я увидел в логах, войдя с ноута по ssh на терпящую бедствие рабочую станцию.</p>
<p>Гугление показало, что многие в такой ситуации тупо ставят <a href="http://www.nvidia.com/object/unix.html">бинарные драйверы от производителя</a>. Интересно, что примерно год <a href="http://www.shatlovsky.ru/2008/10/31/nvidia-binary-drivers/">я тоже прельстился</a> этим как бы очевидным и простым решением. Проблемы появляются не сразу, а в тот момент когда система обновит ядро. Драйверы, собранные для другой версии, с новой работать откажутся. И придется, матерясь, вручную переустанавливать бинарные драйверы.</p>
<p>Тут позволю себе немного лирики.</p>
<p>Линукс дома стоит у меня уже давно, и проблем с ним никогда особо не было.Смешные случаи были. Вот например жена, человек максимально далекий от компов, по радио как-то услышала, что есть такой Линукс, и под ним нет ни вирусов, ни троянов, и вообще чудо-система! И так ей эта идея понравилась, что говорит мне: &laquo;Слушай, а давай нам тоже этот Линукс поставим! Я в нем может тоже разберусь&raquo;. Я ей говорю, &laquo;Мать, а ты не заметила что последние полгода ты на моем компе сидишь на этом самом Линуксе?&raquo; Это при том, что она не только по интернетам ходила, но и проги под Wine запускала, в Open Office чего-то та ваяла, GIMP-ом фотки редактировала ("странный у тебя фотошоп"). Посмеялись, удивлению её не было предела..</p>
<p>В общем, Линукс в целом был надежной домашней системой. А тут, после обновления Ubuntu до 9.10, начался сплошной гемор: то тут отвалится, то там. Ни кино посмотреть, ни в инет выйти. И вот сегодня женщина предложила снести к ебеням Ubuntu и поставить &laquo;нормальный виндовс&raquo;.</p>
<p>Парни из Canonical! Я понимаю, что выпускать новый релиз каждые полгода &mdash; это ужасно круто, и ваши боссы наверняка гордятся вами и тем, что <em>все идет по плану</em>, но блин, чуваки! Мне ужасно неудобно перед женой, что вместо того, чтобы провести с ней вечер, я сижу и тупо втыкаю в десятки сообщений на форумах, где такие же бедняги сидят и тупо не знают что делать с сошедшей с ума железкой.</p>
<p>На этом с лирикой закончим.</p>
<p>В общем, гугль не помог, пришлось действовать по наитию.</p>
<p>Сначала смотрим, что у нас есть в системе:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> dpkg --get-selections|grep nvidia
nvidia<span style="color: #000000;">-173</span>-modaliases                           <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia<span style="color: #000000;">-180</span>-modaliases                           <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia<span style="color: #000000;">-185</span>-libvdpau                             deinstall
nvidia<span style="color: #000000;">-185</span>-modaliases                           <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia<span style="color: #000000;">-190</span>-kernel-<span style="color: #7a0874; font-weight: bold;">source</span>                        <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia<span style="color: #000000;">-190</span>-libvdpau                             <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia<span style="color: #000000;">-190</span>-modaliases                           <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia<span style="color: #000000;">-96</span>-modaliases                            <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia-common                                   <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia-glx                                      deinstall
nvidia-glx<span style="color: #000000;">-173</span>                                  deinstall
nvidia-glx<span style="color: #000000;">-177</span>                                  deinstall
nvidia-glx<span style="color: #000000;">-185</span>                                  deinstall
nvidia-glx<span style="color: #000000;">-190</span>                                  deinstall
nvidia-glx-new                                  deinstall
nvidia-glx-new-envy                             deinstall
nvidia-kernel-common                            <span style="color: #c20cb9; font-weight: bold;">install</span>
nvidia-settings                                 deinstall
nvidia-settings<span style="color: #000000;">-190</span>                             <span style="color: #c20cb9; font-weight: bold;">install</span></pre>
<p>Как видно, много всего. Удаляем всё:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> dpkg --get-selections | <span style="color: #c20cb9; font-weight: bold;">grep</span> nvidia | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v deinstall | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span> | <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-get remove</pre>
<p>Проверяем, что все удалено:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> dpkg --get-selections | <span style="color: #c20cb9; font-weight: bold;">grep</span> nvidia | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v deinstall</pre>
<p>И ставим только то, что нужно, а именно последний официальный драйвер от Canonical:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> nvidia-glx<span style="color: #000000;">-185</span></pre>
<p>Сборка и установка проходят нормально, перегружаемся и видим, что ежик вспомнил как дышать и пошел дальше.</p>
<div id="attachment_159" class="wp-caption alignnone" style="width: 310px"><a href="http://www.shatlovsky.ru/wp-content/2004-3065franks-hedgehog.jpg"><img src="http://www.shatlovsky.ru/wp-content/2004-3065franks-hedgehog-300x225.jpg" alt="Тот самый ежик (картинка с сайта photo.ejik-land.ru)" title="Тот самый ежик (картинка с сайта photo.ejik-land.ru)" width="300" height="225" class="size-medium wp-image-159" /></a><p class="wp-caption-text">Тот самый ежик (картинка с сайта photo.ejik-land.ru)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/11/20/nvidia-v-ubuntu-reanimaciya/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>firefox: оптимизация внутренних баз данных sqlite</title>
		<link>http://www.shatlovsky.ru/2009/08/26/firefox-optimizaciya-vnutrennix-baz-dannyx-sqlite/</link>
		<comments>http://www.shatlovsky.ru/2009/08/26/firefox-optimizaciya-vnutrennix-baz-dannyx-sqlite/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 07:17:53 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[заметки на полях]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=112</guid>
		<description><![CDATA[$ find .mozilla/firefox -type f -name &#34;*.sqlite&#34; -exec time sqlite3 \&#123;\&#125; &#34;VACUUM&#34; &#34;;&#34; via]]></description>
			<content:encoded><![CDATA[<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">find</span> .mozilla/firefox -<span style="color: #7a0874; font-weight: bold;">type</span> f -name <span style="color: #ff0000;">&quot;*.sqlite&quot;</span> -<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #000000; font-weight: bold;">time</span> sqlite3 \<span style="color: #7a0874; font-weight: bold;">&#123;</span>\<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #ff0000;">&quot;VACUUM&quot;</span> <span style="color: #ff0000;">&quot;;&quot;</span></pre>
<p><a href="http://jdevelop.livejournal.com/1473676.html?mode=reply">via</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/08/26/firefox-optimizaciya-vnutrennix-baz-dannyx-sqlite/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>linux: как узнать (проверить) key fingerprint?</title>
		<link>http://www.shatlovsky.ru/2009/06/08/linux-kak-uznat-proverit-key-fingerprint/</link>
		<comments>http://www.shatlovsky.ru/2009/06/08/linux-kak-uznat-proverit-key-fingerprint/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 11:45:59 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=96</guid>
		<description><![CDATA[Узнать fingerprint ключа можно при помощи команды ssh-keygen: # ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key 2048 e2:02:50:2b:d8:1f:ce:d4:18:07:02:7b:22:90:44:25 /etc/ssh/ssh_host_rsa_key.pub &#40;RSA&#41; По-умолчанию команда ищет публичный ключ и печатает для него fingerprint.]]></description>
			<content:encoded><![CDATA[<p>Узнать fingerprint ключа можно при помощи команды ssh-keygen:</p>
<pre class="bash"><span style="color: #808080; font-style: italic;"># <span style="color: #c20cb9; font-weight: bold;">ssh-keygen</span> -l -f /etc/<span style="color: #c20cb9; font-weight: bold;">ssh</span>/ssh_host_rsa_key</span>
<span style="color: #000000;">2048</span> e2:<span style="color: #000000;">02</span>:<span style="color: #000000;">50</span>:2b:d8:1f:ce:d4:<span style="color: #000000;">18</span>:<span style="color: #000000;">07</span>:<span style="color: #000000;">02</span>:7b:<span style="color: #000000;">22</span>:<span style="color: #000000;">90</span>:<span style="color: #000000;">44</span>:<span style="color: #000000;">25</span> /etc/<span style="color: #c20cb9; font-weight: bold;">ssh</span>/ssh_host_rsa_key.pub <span style="color: #7a0874; font-weight: bold;">&#40;</span>RSA<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre>
<p>По-умолчанию команда ищет публичный ключ и печатает для него fingerprint.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/06/08/linux-kak-uznat-proverit-key-fingerprint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание /etc/init.d/nginx на debian 5.0 lenny</title>
		<link>http://www.shatlovsky.ru/2009/06/05/sozdanie-etcinitdnginx-na-debian-50-lenny/</link>
		<comments>http://www.shatlovsky.ru/2009/06/05/sozdanie-etcinitdnginx-na-debian-50-lenny/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 07:05:14 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[config]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[заметки на полях]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/2009/06/05/sozdanie-etcinitdnginx-na-debian-50-lenny/</guid>
		<description><![CDATA[$ sudo vim /etc/init.d/nginx Вставляем нижеследующий код (помним про команду ‘set :paste’ для вставки в VIM): #!/bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $remote_fs $syslog $named $network $time # Required-Stop: $remote_fs $syslog $named $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start nginx at boot time [...]]]></description>
			<content:encoded><![CDATA[<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> vim /etc/init.d/nginx</pre>
<p>Вставляем нижеследующий код (помним про команду ‘set :paste’ для вставки в VIM):</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/sh</span>
<span style="color: #808080; font-style: italic;">### BEGIN INIT INFO</span>
<span style="color: #808080; font-style: italic;"># Provides:          nginx</span>
<span style="color: #808080; font-style: italic;"># Required-Start:    <span style="color: #007800;">$remote_fs</span> <span style="color: #007800;">$syslog</span> <span style="color: #007800;">$named</span> <span style="color: #007800;">$network</span> <span style="color: #007800;">$time</span></span>
<span style="color: #808080; font-style: italic;"># Required-Stop:     <span style="color: #007800;">$remote_fs</span> <span style="color: #007800;">$syslog</span> <span style="color: #007800;">$named</span> <span style="color: #007800;">$network</span></span>
<span style="color: #808080; font-style: italic;"># Default-Start:     <span style="color: #000000;">2</span> <span style="color: #000000;">3</span> <span style="color: #000000;">4</span> <span style="color: #000000;">5</span></span>
<span style="color: #808080; font-style: italic;"># Default-Stop:      <span style="color: #000000;">0</span> <span style="color: #000000;">1</span> <span style="color: #000000;">6</span></span>
<span style="color: #808080; font-style: italic;"># Short-Description: Start nginx at boot time</span>
<span style="color: #808080; font-style: italic;"># Description:       Enable service provided by nginx.</span>
<span style="color: #808080; font-style: italic;">### END INIT INFO</span>
<span style="color: #808080; font-style: italic;"># <span style="color: #007800;">$Id</span>$</span>
&nbsp;
<span style="color: #007800;">NGINXHOME=</span>/usr/<span style="color: #7a0874; font-weight: bold;">local</span>/nginx
<span style="color: #007800;">NGINXPID=</span><span style="color: #007800;">$NGINXHOME</span>/logs/nginx.pid
&nbsp;
<span style="color: #007800;">PATH=</span>/usr/<span style="color: #7a0874; font-weight: bold;">local</span>/sbin:/usr/<span style="color: #7a0874; font-weight: bold;">local</span>/bin:/sbin:/bin:/usr/sbin:/usr/bin
<span style="color: #007800;">DAEMON=</span><span style="color: #007800;">$NGINXHOME</span>/sbin/nginx
<span style="color: #007800;">NAME=</span>nginx
<span style="color: #007800;">DESC=</span>nginx
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> ! -x <span style="color: #007800;">$DAEMON</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
   <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Couldn't find $DAEMON. Please set path to DAEMON.&quot;</span>
   <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Include nginx defaults <span style="color: #000000; font-weight: bold;">if</span> available</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -f /etc/default/nginx <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span>
	. /etc/default/nginx
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">set</span> -e
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
  start<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> -n <span style="color: #ff0000;">&quot;Starting $DESC: &quot;</span>
	start-stop-daemon --start --pidfile <span style="color: #007800;">$NGINXPID</span> \
		--<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span> -- <span style="color: #007800;">$DAEMON_OPTS</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$NAME.&quot;</span>
	;;
  stop<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> -n <span style="color: #ff0000;">&quot;Stopping $DESC: &quot;</span>
	start-stop-daemon --stop --pidfile <span style="color: #007800;">$NGINXPID</span> \
		--<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$NAME.&quot;</span>
	;;
  restart|force-reload<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> -n <span style="color: #ff0000;">&quot;Restarting $DESC: &quot;</span>
	start-stop-daemon --stop --pidfile \
		<span style="color: #007800;">$NGINXHOME</span>/run/<span style="color: #007800;">$NAME</span>.pid --<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span>
	<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
	start-stop-daemon --start --pidfile \
		<span style="color: #007800;">$NGINXPID</span> --<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span> -- <span style="color: #007800;">$DAEMON_OPTS</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$NAME.&quot;</span>
	;;
  reload<span style="color: #7a0874; font-weight: bold;">&#41;</span>
      <span style="color: #7a0874; font-weight: bold;">echo</span> -n <span style="color: #ff0000;">&quot;Reloading $DESC configuration: &quot;</span>
      start-stop-daemon --stop --signal HUP --pidfile <span style="color: #007800;">$NGINXPID</span> \
          --<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span>
      <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$NAME.&quot;</span>
      ;;
  *<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #007800;">N=</span>/etc/init.d/<span style="color: #007800;">$NAME</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: $N {start|stop|restart|force-reload}&quot;</span> &gt;&amp;<span style="color: #000000;">2</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
	;;
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span></pre>
<p>Сохраняем скрипт и выходим из vim.</p>
<p>Делаем скрипт исполняемым:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> /etc/init.d/nginx</pre>
<p>Указываем, что <em>nginx</em> нужно запускать при запуске и остановке сервера:</p>
<pre class="bash">$  <span style="color: #c20cb9; font-weight: bold;">sudo</span> /usr/sbin/update-rc.d -f nginx defaults</pre>
<p>UPD: Блок, заключенный между строками
<pre class="bash"><span style="color: #808080; font-style: italic;">### BEGIN INIT INFO</span>
<span style="color: #808080; font-style: italic;">### END INIT INFO</span></pre>
<p> обеспечивает LSB-совместимость. Подробнее см. <a href="http://wiki.debian.org/LSBInitScripts">http://wiki.debian.org/LSBInitScripts</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/06/05/sozdanie-etcinitdnginx-na-debian-50-lenny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Установка nginx на debian 5.0 lenny</title>
		<link>http://www.shatlovsky.ru/2009/06/04/ustanovka-nginx-na-debian-50-lenny/</link>
		<comments>http://www.shatlovsky.ru/2009/06/04/ustanovka-nginx-na-debian-50-lenny/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 15:52:01 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[заметки на полях]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/2009/06/04/ustanovka-nginx-na-debian-50-lenny/</guid>
		<description><![CDATA[На "пустом" свежеустановленном Debian не хватает ряда инструментов и библиотек для сборки и установки nginx. Ставим gcc, make, и компания: $ sudo apt-get install build-essential Библиотеки для сборки nginx: $ sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev Для поддержки встроенного Perl добавляем: $ sudo apt-get install libperl-dev Собственно процесс сборки и установки (вместо 0.7.XX [...]]]></description>
			<content:encoded><![CDATA[<p>На "пустом" свежеустановленном Debian не хватает ряда инструментов и библиотек для сборки и установки nginx.</p>
<p>Ставим gcc, make, и компания:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> build-essential</pre>
<p>Библиотеки для сборки nginx:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev</pre>
<p>Для поддержки встроенного Perl добавляем:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> libperl-dev</pre>
<p>Собственно процесс сборки и установки (вместо 0.7.XX впишите номер актуальной версии):</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http://sysoev.ru/nginx/nginx<span style="color: #000000;">-0.7</span>.XX.<span style="color: #c20cb9; font-weight: bold;">tar</span>.gz
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nginx<span style="color: #000000;">-0.7</span>.XX.<span style="color: #c20cb9; font-weight: bold;">tar</span>.gz
$ <span style="color: #c20cb9; font-weight: bold;">ln</span> -s nginx<span style="color: #000000;">-0.7</span>.XX nginx
$ <span style="color: #7a0874; font-weight: bold;">cd</span> nginx
$ ./configure \
--<span style="color: #007800;">prefix=</span>/usr/<span style="color: #7a0874; font-weight: bold;">local</span>/nginx \
--with-cc-<span style="color: #007800;">opt=</span><span style="color: #ff0000;">&quot;-I /usr/include&quot;</span> \
--with-ld-<span style="color: #007800;">opt=</span><span style="color: #ff0000;">&quot;-L /usr/lib&quot;</span> \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_perl_module  \
--with-http_ssl_module
&nbsp;
$ <span style="color: #c20cb9; font-weight: bold;">make</span> &amp;&amp; <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
&nbsp;</pre>
<p>Обратите внимание, параметры
<pre class="bash">--with-cc-<span style="color: #007800;">opt=</span><span style="color: #ff0000;">&quot;-I /usr/include&quot;</span> --with-ld-<span style="color: #007800;">opt=</span><span style="color: #ff0000;">&quot;-L /usr/lib&quot;</span></pre>
<p> указывают на расположение системных заголовков и библиотек, без них configure не видит ряда системных библиотек.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/06/04/ustanovka-nginx-na-debian-50-lenny/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Unix: Поиск и замена во многих файлах одновременно</title>
		<link>http://www.shatlovsky.ru/2009/02/09/poisk-i-zamena-vo-mnogix-fajlax-odnovremenno/</link>
		<comments>http://www.shatlovsky.ru/2009/02/09/poisk-i-zamena-vo-mnogix-fajlax-odnovremenno/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 14:15:10 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[awk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=75</guid>
		<description><![CDATA[Задача: найти все файлы содержащие OLDTEXT, и заменить OLDTEXT на NEWTEXT. Решение: grep -HR OLDTEXT ./ &#124; awk '{print $1}' &#124; sed 's/:.*$//' &#124; grep -v '~' &#124; sort &#124; uniq &#124; xargs vim -p В открывшемся окне vim командуем: :tabdo %s/OLDTEXT/NEWTEXT/g (заменить OLDTEXT на NEWTEXT во всех вкладках) :xa (записать изменения во всех вкладках) [...]]]></description>
			<content:encoded><![CDATA[<p>Задача: найти все файлы содержащие <em>OLDTEXT</em>, и заменить <em>OLDTEXT</em> на <em>NEWTEXT</em>.</p>
<p>Решение:</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">grep</span> -HR OLDTEXT ./ | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span> | <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/:.*$//'</span> | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #ff0000;">'~'</span> | <span style="color: #c20cb9; font-weight: bold;">sort</span> | <span style="color: #c20cb9; font-weight: bold;">uniq</span> | <span style="color: #c20cb9; font-weight: bold;">xargs</span> vim -p</pre>
<p>В открывшемся окне <code>vim</code> командуем:</p>
<pre class="bash">:tabdo %s/OLDTEXT/NEWTEXT/g</pre>
<p> (заменить OLDTEXT на NEWTEXT во всех вкладках)</p>
<pre class="bash">:xa</pre>
<p> (записать изменения во всех вкладках)<br />
либо</p>
<pre class="bash">:qa!</pre>
<p> (отменить изменения во всех вкладках)</p>
<p>Ссылки по теме:</p>
<ol>
<li><a href="http://vimdoc.sourceforge.net/cgi-bin/vimfaq2html3.pl">VIM FAQ</a></li>
<li><a href="http://vim.wikia.com/wiki/Save_all_open_buffers_at_once">Save all open buffers at once</a></li>
<li><a href="http://linsovet.com/vim-sudo">Сохранение файла без прав на запись в vim используя sudo</a></li>
<li><a href="http://mailman.lug.org.uk/pipermail/scarborough/2004-December/001792.html">[SLUG] Vim. Search and replace in multiple files</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/02/09/poisk-i-zamena-vo-mnogix-fajlax-odnovremenno/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>linux: iproute2 для управления сетевой подсистемой</title>
		<link>http://www.shatlovsky.ru/2008/12/19/linux-iproute-networking-and-traffic-control-subsystem/</link>
		<comments>http://www.shatlovsky.ru/2008/12/19/linux-iproute-networking-and-traffic-control-subsystem/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 13:30:51 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[iproute]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=71</guid>
		<description><![CDATA[iproute2 -- набор утилит для управления сетевой подсистемой TCP/IP и управления трафиком в Linux. Большинство руководств по конфигурированию сети до сих пор ссылаются на ifconfig, route и arp, однако ifconfig может вести себя неадекватно в современном сетевом окружении. Эти утилиты должны уйти на свалку истории, однако большинство дистрибутивов все еще включают их. Большинство систем управления [...]]]></description>
			<content:encoded><![CDATA[<p><code>iproute2</code> -- набор утилит для управления сетевой подсистемой TCP/IP и управления трафиком в Linux.</p>
<p>Большинство руководств по конфигурированию сети до сих пор ссылаются на <code>ifconfig</code>, <code>route</code> и <code>arp</code>, однако <code>ifconfig</code> может вести себя неадекватно в современном сетевом окружении. Эти утилиты должны уйти на свалку истории, однако большинство дистрибутивов все еще включают их. Большинство систем управления сетью используют <code>ifconfig</code>, предоставляя лишь минимальный набор возможностей.</p>
<p>Проект <a href="http://etcnet.org/">/etc/net</a> project ставит целью поддержку современных сетевых технологий, и, предоставляет набор утилит для наиболее полного контроля всех возможностей <strong>iproute2</strong>, включая управление трафиком.</p>
<p>Ссылки по теме:</p>
<ul>
<li> <a href="http://lartc.org/howto" class="external text" title="http://lartc.org/howto" rel="nofollow">LARTC HOWTO</a>
</li>
<li> <a href="http://www.policyrouting.org/iproute2.doc.html" class="external text" title="http://www.policyrouting.org/iproute2.doc.html" rel="nofollow">IPROUTE2 Utility Suite HOWTO</a>
</li>
<li> <a href="http://snafu.freedom.org/linux2.2/iproute-notes.html" class="external text" title="http://snafu.freedom.org/linux2.2/iproute-notes.html" rel="nofollow">iproute2 and tc notes</a>
</li>
<li> <a href="/en/Net:Iproute2_examples" title="Net:Iproute2 examples"> Iproute2_examples </a>
</li>
<li> <a href="http://ornellas.apanela.com/dokuwiki/pub:firewall_and_adv_routing" class="external text" title="http://ornellas.apanela.com/dokuwiki/pub:firewall_and_adv_routing" rel="nofollow">Documentation on how to integrate both firewall (IP Tables) and Linux advanced routing.</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2008/12/19/linux-iproute-networking-and-traffic-control-subsystem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu: обновляем систему до последнего релиза</title>
		<link>http://www.shatlovsky.ru/2008/12/18/ubuntu-obnovlyaem-sistemu-do-poslednego-reliza/</link>
		<comments>http://www.shatlovsky.ru/2008/12/18/ubuntu-obnovlyaem-sistemu-do-poslednego-reliza/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 22:48:30 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=68</guid>
		<description><![CDATA[Инструкция по обновлению: http://www.ubuntu.com/getubuntu/upgrading Поехали..]]></description>
			<content:encoded><![CDATA[<p>Инструкция по обновлению:<br />
<a href="http://www.ubuntu.com/getubuntu/upgrading">http://www.ubuntu.com/getubuntu/upgrading</a></p>
<p>Поехали..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2008/12/18/ubuntu-obnovlyaem-sistemu-do-poslednego-reliza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tar: Просмотр содержимого архива (tar.gz, tgz, tar.bzip2)</title>
		<link>http://www.shatlovsky.ru/2008/12/05/list-archive-contents-tar-gz-tgz-bzip/</link>
		<comments>http://www.shatlovsky.ru/2008/12/05/list-archive-contents-tar-gz-tgz-bzip/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 15:18:07 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=45</guid>
		<description><![CDATA[Для вывода оглавления tar-архива используется команда -t: ~$ tar -tvf archive.tar -rw-rw-rw- 0 username groupname 45523421 Dec 5 16:17 file1.txt -rw-r--r-- 0 username groupname 13234112 Dec 5 16:17 file2.txt -rw-r--r-- 0 username groupname 75323624 Dec 5 16:17 file3.txt Для tar.gz (tgz; tar+gzip): ~$ tar -ztvf archive.tar.gz ... Для tar.bz2 (tar+bzip2): ~$ tar -jtvf archive.tar.bz2 ... [...]]]></description>
			<content:encoded><![CDATA[<p>Для вывода оглавления tar-архива используется команда <code>-t</code>:</p>
<pre class="bash">~$ <span style="color: #c20cb9; font-weight: bold;">tar</span> -tvf archive.<span style="color: #c20cb9; font-weight: bold;">tar</span>
-rw-rw-rw-  <span style="color: #000000;">0</span> username  groupname <span style="color: #000000;">45523421</span> Dec  <span style="color: #000000;">5</span> <span style="color: #000000;">16</span>:<span style="color: #000000;">17</span> file1.txt
-rw-r--r--  <span style="color: #000000;">0</span> username  groupname <span style="color: #000000;">13234112</span> Dec  <span style="color: #000000;">5</span> <span style="color: #000000;">16</span>:<span style="color: #000000;">17</span> file2.txt
-rw-r--r--  <span style="color: #000000;">0</span> username  groupname <span style="color: #000000;">75323624</span> Dec  <span style="color: #000000;">5</span> <span style="color: #000000;">16</span>:<span style="color: #000000;">17</span> file3.txt</pre>
<p>Для tar.gz (tgz; tar+gzip):</p>
<pre class="bash">~$ <span style="color: #c20cb9; font-weight: bold;">tar</span> -ztvf archive.<span style="color: #c20cb9; font-weight: bold;">tar</span>.gz
...</pre>
<p>Для tar.bz2 (tar+bzip2):</p>
<pre class="bash">~$ <span style="color: #c20cb9; font-weight: bold;">tar</span> -jtvf archive.<span style="color: #c20cb9; font-weight: bold;">tar</span>.bz2
...</pre>
<p>Использованные команды:<br />
<code>-t</code> – печать содержимого архива на <code>stdout</code><br />
<code>-v</code> - подробный вывод, аналог ключа -l утилиты <code>ls</code>. Без этой команды будет выведен краткий спискок файлов без размеров и прав.<br />
<code>-f имя_файла</code> - использовать указанный файл в качестве архива, иначе читать с ленты<br />
<code>-z</code> – <code>gzip</code>-фильтр. В некоторых реализациях использовать необязательно.<br />
<code>-j</code> – <code>bzip2</code>-фильтр. В некоторых реализациях использовать необязательно.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2008/12/05/list-archive-contents-tar-gz-tgz-bzip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu: сохранение точки монтирования при смене названия устройства</title>
		<link>http://www.shatlovsky.ru/2008/12/02/ubuntu-linux-keep-mount-point-if-drives-order-changed/</link>
		<comments>http://www.shatlovsky.ru/2008/12/02/ubuntu-linux-keep-mount-point-if-drives-order-changed/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 21:59:19 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[uuid]]></category>
		<category><![CDATA[vol_id]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=37</guid>
		<description><![CDATA[Понадобилось мне слить информацию со старого HDD, отформатированного в NTFS. Подключив его, обнаружил, что порядок монтирования устройств сбился, все разделы NTFS "съехали": тот, что был /dev/sda1 стал /dev/sdb1, /dev/sdb1 стал /dev/sdc1, а новый диск получил идентификатор /dev/sda1. В итоге новый диск оказался смонтирован на месте старого, а старый стал вроде как новым несмонтированным устройством. Система, [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне слить информацию со старого HDD, отформатированного в NTFS. Подключив его, обнаружил, что порядок монтирования устройств сбился, все разделы NTFS "съехали": тот, что был <code>/dev/sda1</code> стал <code>/dev/sdb1</code>, <code>/dev/sdb1</code> стал <code>/dev/sdc1</code>, а новый диск получил идентификатор <code>/dev/sda1</code>. В итоге новый диск оказался смонтирован на месте старого, а старый стал вроде как новым несмонтированным устройством.</p>
<p>Система, жившая до того на семействе <code>/dev/sda2..8</code>, спокойно перенесла виртуальный переезд на <code>/dev/sdb2..6</code>, поэтому я даже не сразу сообразил, как такое могло произойти, и как уберечься от подобных фокусов в дальнейшем.</p>
<p>Отгадка, как обычно, крылась в манах (<a href="https://help.ubuntu.com/community/UsingUUID">UsingUUID</a>):</p>
<blockquote><p>Linux now prefers to use UUID (Universally Unique Identifier), LABEL, or symlinks to identify media storage devices on a system. Directly using /dev/hd*# or /dev/sd*# is no longer preferred since these device assignments can change between system boots:</p>
<ul>
<li>all filesystems should be specified by UUID=<id> or LABEL=<name> for each partition.</li>
<li>all physical devices should be specified by a symlink, like /dev/cdrom for a cd drive and /dev/disk/by-id/... for each physical hard drive.</li>
</ul>
<p>The files for which UUID is most critical:</p>
<ul>
<li>/boot/grub/menu.lst</li>
<li>/etc/fstab</li>
<li>/etc/initramfs-tools/conf.d/resume</li>
</ul>
</blockquote>
<p>Просмотр <code>/etc/fstab</code> подтвердил догадку. Системные ext3 разделы были смонтированы через UUID, в то время как ntfs-разделы монтировались по старинке через имена вида <code>/dev/sd*</code>.</p>
<p>Таким образом, решение проблемы заключается в монтировании ntfs-разделов по UUID.</p>
<p>Узнать UUID для конкретного раздела можно так:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> vol_id -u /dev/sdb1
7CF803F6A8035E22
&nbsp;</pre>
<p>Размонтируем все ntfs-разделы, меняем записи в /etc/fstab, и заново монтируем раздел.</p>
<p>Было:</p>
<pre class="bash">/dev/sda1 /mnt/sda1 ntfs  rw,noexec,utf8  <span style="color: #000000;">0</span> <span style="color: #000000;">0</span></pre>
<p>Стало:</p>
<pre class="bash"><span style="color: #007800;">UUID=</span>7CF803F6A8035E22 /mnt/sda1 ntfs  rw,noexec,utf8  <span style="color: #000000;">0</span> <span style="color: #000000;">0</span></pre>
<p>Теперь при подключении новых устройств запись прежний порядок монтирования сохранится.</p>
<p><strong>UPD: </strong>Харитон пишет:</p>
<blockquote><p>мне было известно 4 способа определения uuid'а, теперь знаю пятый))<br />
- с помощью утилиты blkid (входит в пакет e2fsprogs)<br />
    sudo blkid /dev/sda1<br />
- "...существуют и другие способы получить UUID например для ext2 используя dumpe2fs..."<br />
    dumpe2fs -h /dev/sda6<br />
- или так:<br />
    ls -al /dev/disk/by-uuid/<br />
- или так:<br />
    sudo tune2fs -l /dev/sda1 | grep UUID</p>
<p>самый примечательный из них третий, т.к. можно обойтись без sudo и дает список uuid'ов всех устройств</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2008/12/02/ubuntu-linux-keep-mount-point-if-drives-order-changed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
