<?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>Bappoy&#039;s blog &#187; freebsd</title>
	<atom:link href="http://bappoy.pp.ru/tag/freebsd/feed" rel="self" type="application/rss+xml" />
	<link>http://bappoy.pp.ru</link>
	<description>Линуксоид на велосипеде с моторчиком</description>
	<lastBuildDate>Fri, 02 Dec 2011 11:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Пересборка ruby gem на примере hiredis в FreeBSD</title>
		<link>http://bappoy.pp.ru/2011/11/06/gem-hiredis-freebsd.html</link>
		<comments>http://bappoy.pp.ru/2011/11/06/gem-hiredis-freebsd.html#comments</comments>
		<pubDate>Sun, 06 Nov 2011 17:30:18 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[рабочие будни]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=1076</guid>
		<description><![CDATA[<p>Для тех админов, кому <s>лень</s> некогда копаться во внутренностях ruby и гуглить невнятные ошибки, но надо срочно поставить ruby gem, отсутствующий в портах. В моем случае — hiredis (ruby обвязка для одноименной библиотеки доступа к БД redis). Установка методом
<pre>gem install hiredis</pre>
<p> не работает, т.к. где-то внутри жестко зашито название утилиты make, а FreeBSD-версия  /usr/bin/make серьезно отличается по синтаксису от GNU Make, который все привыкли использовать, поэтому в STDERR сыпятся ошибки:</p>
<pre># gem install hiredis
Fetching: hiredis-0.4.1.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing hiredis:
	ERROR: Failed to build gem native extension.

        /usr/local/bin/ruby18 extconf.rb
"Makefile", line 11: Missing dependency operator
"Makefile", line 21: Need an operator
"Makefile", line 22: Missing dependency operator
"Makefile", line 33: Need an operator
"Makefile", line 43: Need an operator
"Makefile", line 44: Need an operator
"Makefile", line 82: Need an operator
"Makefile", line 86: Need an operator
"Makefile", line 88: warning: duplicate script for target "hiredis-example-ae" ignored
"Makefile", line 89: Need an operator
make: fatal errors encountered -- cannot continue
creating Makefile

make
cc -I. -I/usr/local/lib/ruby/1.8/amd64-freebsd8 -I/usr/local/lib/ruby/1.8/amd64-freebsd8 -I. -I/usr/include -fPIC -I/usr/include -O2 -pipe -fno-strict-aliasing -fPIC -I/usr/local/lib/ruby/gems/1.8/gems/hiredis-0.4.1/vendor/hiredis -c connection.c
cc -I. -I/usr/local/lib/ruby/1.8/amd64-freebsd8 -I/usr/local/lib/ruby/1.8/amd64-freebsd8 -I. -I/usr/include -fPIC -I/usr/include -O2 -pipe -fno-strict-aliasing  -fPIC  -I/usr/local/lib/ruby/gems/1.8/gems/hiredis-0.4.1/vendor/hiredis -c hiredis_ext.c
cc -I. -I/usr/local/lib/ruby/1.8/amd64-freebsd8 -I/usr/local/lib/ruby/1.8/amd64-freebsd8 -I. -I/usr/include    -fPIC -I/usr/include -O2 -pipe -fno-strict-aliasing -fPIC  -I/usr/local/lib/ruby/gems/1.8/gems/hiredis-0.4.1/vendor/hiredis -c reader.c
cc -shared -o hiredis_ext.so connection.o hiredis_ext.o reader.o -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L. -L/usr/lib  -rpath=/usr/lib:/usr/local/lib -pthread -rdynamic /usr/local/lib/ruby/gems/1.8/gems/hiredis-0.4.1/vendor/hiredis/libhiredis.a -Wl,-soname,hiredis_ext.so   -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby18  -lcrypt -lm -L/usr/lib  -rpath=/usr/lib:/usr/local/lib -pthread
cc: /usr/local/lib/ruby/gems/1.8/gems/hiredis-0.4.1/vendor/hiredis/libhiredis.a: No such file or directory
*** Error code 1

Stop in /usr/local/lib/ruby/gems/1.8/gems/hiredis-0.4.1/ext/hiredis_ext.

Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/hiredis-0.4.1 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/hiredis-0.4.1/ext/hiredis_ext/gem_make.out
</pre>
<p>GNU-версия make в freebsd называется gmake. Чтобы исправить вызов make в gem&#8217;е, пришлось его пересобрать. Вот полная версия установки пакета:</p>
<pre>$ mkdir ~/hiredis &#038;&#038; cd ~/hiredis
$ gem fetch hiredis  # в текущем каталоге появляется файл hiredis-0.4.1.gem
Downloaded hiredis-0.4.1
$ gem unpack hiredis-0.4.1.gem
Unpacked gem: '/home/bvk/hiredis/hiredis-0.4.1'
$ gem spec  hiredis-0.4.1.gem > hiredis.spec # извлекли спецификацию gem'а, по которой будем собирать пакет
$ cd hiredis-0.4.1
# тут в ext/hiredis_ext/extconf.rb нужно поменять "make static" на "gmake static",
# а в Rakefile "make clean" на "gmake clean"
# собираем пакет
$ gem build ../hiredis.spec
WARNING:  description and summary are identical
  Successfully built RubyGem
  Name: hiredis
  Version: 0.4.1
  File: hiredis-0.4.1.gem
# устанавливаем
$ sudo gem install hiredis-0.4.1.gem
Building native extensions.  This could take a while...
Successfully installed hiredis-0.4.1
1 gem installed
Installing ri documentation for hiredis-0.4.1...
Installing RDoc documentation for hiredis-0.4.1...</pre>
<p>Теперь внимательно читаем porters handbook, делаем порт и далее действуем по правилам.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2011/11/06/gem-hiredis-freebsd.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beastie</title>
		<link>http://bappoy.pp.ru/2009/05/03/beastie.html</link>
		<comments>http://bappoy.pp.ru/2009/05/03/beastie.html#comments</comments>
		<pubDate>Sun, 03 May 2009 17:57:45 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[жена]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=611</guid>
		<description><![CDATA[<img src="http://bappoy.pp.ru/media/2009/05/beastie.jpg" alt="FreeBSD daemon" title="FreeBSD daemon" width="460" height="599" class="size-full wp-image-610" />
<p>Ещё один культовый персонаж, сделанный руками моей жены.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/05/03/beastie.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The panic() function does not return</title>
		<link>http://bappoy.pp.ru/2009/03/13/panic.html</link>
		<comments>http://bappoy.pp.ru/2009/03/13/panic.html#comments</comments>
		<pubDate>Fri, 13 Mar 2009 12:57:30 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[freebsd]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=547</guid>
		<description><![CDATA[<pre>&gt;  uname -rs
FreeBSD 6.1-STABLE
&gt; man panic
PANIC(9)               FreeBSD Kernel Developer's Manual              PANIC(9)

NAME
     panic -- bring down system on fatal error

...

<b>RETURN VALUES
     The panic() function does not return.</b>
&gt; _</pre>
<p><a href="http://ipfw.ru/bash/1799">По мотивам</a>, <a href="http://ipfw.ru/bash/">там</a> <a href="http://ipfw.ru/bash/1829">еще</a> <a href="http://ipfw.ru/bash/1850">много</a>.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/03/13/panic.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Небольшой костыль для мониторинга ресурсов</title>
		<link>http://bappoy.pp.ru/2008/06/23/crutch.html</link>
		<comments>http://bappoy.pp.ru/2008/06/23/crutch.html#comments</comments>
		<pubDate>Mon, 23 Jun 2008 08:24:15 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=284</guid>
		<description><![CDATA[<p>На одном высоконагруженном сервере постоянно возникала нехватка ресурсов: то httpd расплодится и забьёт таблицу процессов, то место закончится, то память&#8230; Поэтому необходимо было мониторить несколько разных параметров. Разумеется, впоследствии тут не обошлось без Nagios&#8217;а, а в качестве  срества дополнительного контроля мы сделали мелкий скриптик <code>/usr/local/bin/hh</code>, в который написали несколько строчек вида:</p>
<pre>#!/bin/sh
df -h /usr/ | awk '$6~/^\/usr$/ {print $4" space available on /usr"}'
ps ax | grep httpd | grep -v grep | wc -l | awk '{print $1,"httpd processes running"}'
</pre>
<p>Запуск скриптика поместили в <code>~/.cshrc</code> (дело было под FreeBSD) каждого заинтересованного пользователя, после чего, входя на сервер, админы получали необходимую информацию о состоянии системы и, если что, предпринимали действия по устранению неполадок.</p>
<p>Сейчас почти то же самое у меня работает на Asus EEE PC &#8212; в условиях крайне ограниченного места необходимо время от времени его мониторить, а захламлять панель (и память) апплетами очень не хочется. Поскольку я постоянно использую консоль, то посчитал логичным выводить информацию о свободном месте при каждом логине. Одна лишняя строчка при входе в шелл совсем не напрягает, а пользы от нее очень много.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2008/06/23/crutch.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Epic fail</title>
		<link>http://bappoy.pp.ru/2008/04/10/epic-fail.html</link>
		<comments>http://bappoy.pp.ru/2008/04/10/epic-fail.html#comments</comments>
		<pubDate>Thu, 10 Apr 2008 19:01:06 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[fun]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2008/04/10/epic-fail/</guid>
		<description><![CDATA[<p>Из всех админских ошибок, которые мне когда-либо случалось делать (с каждым бывает), самой кошмарной, до сих пор приходящей ко мне в сновидениях, была опечатка в рутовой консоли на боевом сервере под управлением freebsd 5.4: вместо обычного убийства команды в бэкграунде <code>kill %1</code> набрал и выполнил <code>kill 1</code>. Всего один символ забыл, зато какой эффект! Процесс <code>init</code> с pid&#8217;ом 1 был благополучно уничтожен&#8230;  К чести Linux-сообщества, эта команда на моём тестовом сервере действия не возымела.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2008/04/10/epic-fail.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

