<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8622169542119587655</id><updated>2024-11-01T12:36:59.610+02:00</updated><category term="linux"/><category term="tips&#39;n&#39;tricks"/><category term="debian"/><category term="web"/><category term="blog"/><category term="holiday"/><category term="hardware"/><category term="EULA"/><category term="mirror"/><category term="review"/><category term="fluxbox"/><category term="programming"/><category term="vim"/><category term="windows"/><category term="zsh"/><category term="Eee PC"/><category term="irssi"/><category term="mcabber"/><title type='text'>Debiania: просто ещё один блог о Debian</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/-/debian'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/search/label/debian'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-4245603097284344592</id><published>2012-03-20T21:29:00.001+02:00</published><updated>2012-03-20T21:31:15.166+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Наблюдения о punchcard&#39;ах некоторых проектов, или Чем занимаются на досуге разработчики GHC?</title><content type='html'>Бесцельно ползая по github&#39;у длинным вторничным вечером (уф, что-то давненько не случалось таких вечеров!), наткнулся на любопытные, как мне кажется, закономерности в punchcard&#39;ах некоторых проектов.&lt;br /&gt;
&lt;br /&gt;
Punchcard — это декартова плоскость, где по одной оси идёт время суток, а по другой — день недели. Размер точек на пересечениях дня и времени показывает, как много коммитов было сделано в такие время и день. В каком-нибудь вялотекущем любительском проектике punchcard будет содержать всего пяток точек, в то время как в огромном проекте точки почти равного размера будут равномерно распределены по всей плоскости.&lt;br /&gt;
&lt;br /&gt;
Итак, поехали!&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Начнём, пожалуй, с punchcard&#39;а &lt;a href=&#39;http://www.haskell.org/ghc/&#39;&gt;GHC&lt;/a&gt;, The Glasgow Haskell Compiler:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb15e5jN5PppsYa7suEznaixpXJpcfyuF0XJo3w4AQaj4FSOgg2HfeVzoBtD29HwFV0LDKraM684hriUkk6Z2OaxGfXk97RSJws1W28nh90dv07LJf2qvlObKrejlmKkxK16Tx-8goxl4/s1600/ghc.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; width=&quot;600&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb15e5jN5PppsYa7suEznaixpXJpcfyuF0XJo3w4AQaj4FSOgg2HfeVzoBtD29HwFV0LDKraM684hriUkk6Z2OaxGfXk97RSJws1W28nh90dv07LJf2qvlObKrejlmKkxK16Tx-8goxl4/s400/ghc.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
GHC является академическим проектом, и пилят его, судя по всему, по большей части в рабочее время, с восьми до пяти. Ничего интересного.&lt;br /&gt;
&lt;br /&gt;
По крайней мере, пока вы не посмотрели на punchcard &lt;a href=&#39;http://www.postgresql.org/&#39;&gt;PostgreSQL&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0DEZ6FQVFHJ_zg36BzObkaNywodAaoTbQRixGmM0DkcdYczfA5PqeAde14r5e4cpwdA_0u5fTN85u52Rm2tq6llueRCFn5h6RoBD0WrzqhItnua6QvShut8KgTqTenq8PqATiEzt2QKI/s1600/postgres.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; width=&quot;600&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0DEZ6FQVFHJ_zg36BzObkaNywodAaoTbQRixGmM0DkcdYczfA5PqeAde14r5e4cpwdA_0u5fTN85u52Rm2tq6llueRCFn5h6RoBD0WrzqhItnua6QvShut8KgTqTenq8PqATiEzt2QKI/s400/postgres.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Теперь понятно, чем занимаются разработчики GHC, когда они не на работе ☺&lt;br /&gt;
&lt;br /&gt;
На самом же деле PostgreSQL является СУБД, разрабатываемой сообществом без поддержки корпораций (как в случае с MySQL), так что такая картина вполне ожидаема.&lt;br /&gt;
&lt;br /&gt;
А что же со светом наших сердец — &lt;a href=&#39;http://kernel.org/&#39;&gt;ядром Linux&lt;/a&gt;?&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-n7OwmBNdlkxGddeOXH3OGyVWjKvgq6eTpsHtpe3LizFK08TpdVBJM_u4BjCVTkV5tysvworRedqZYlVrD3se7eG0VZwJsu0kAx6QCPqmB0vvmFVI6P8UBEwKw0cbsWB7NdW7PoKAhp4/s1600/linux.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; width=&quot;600&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-n7OwmBNdlkxGddeOXH3OGyVWjKvgq6eTpsHtpe3LizFK08TpdVBJM_u4BjCVTkV5tysvworRedqZYlVrD3se7eG0VZwJsu0kAx6QCPqmB0vvmFVI6P8UBEwKw0cbsWB7NdW7PoKAhp4/s400/linux.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Честно говоря, меня такая картина шокировала. Да, я в курсе, что многие разработчики Linux работают в Red Hat и потому в основном коммитят в рабочее время, но чтобы эти коммиты составляли &lt;b&gt;настолько&lt;/b&gt; заметную часть общего потока… Весьма, весьма неожиданно.&lt;br /&gt;
&lt;br /&gt;
После Linux моё внимание, естественно, привлекла &lt;a href=&#39;http://gcc.gnu.org/&#39;&gt;GCC&lt;/a&gt;, GNU Compiler Collection:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ8WoOXHS0Qk1c-ekdLaJixNd4tR7JwhNqqG5WMONjpQhSqu0b79tcU1dCcVbX-jwfsW8jICFGhBKjwMB_zVQgD7_uHsZYgZdbX6tVtipcZWHxU_58ViKydmtwIM7F2qrY1QG21noAZBo/s1600/gcc.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; width=&quot;600&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ8WoOXHS0Qk1c-ekdLaJixNd4tR7JwhNqqG5WMONjpQhSqu0b79tcU1dCcVbX-jwfsW8jICFGhBKjwMB_zVQgD7_uHsZYgZdbX6tVtipcZWHxU_58ViKydmtwIM7F2qrY1QG21noAZBo/s400/gcc.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Судя по картинке, разработчики GCC все до единого садятся за компьютеры в семь утра, работают до одиннадцати, обедают, потом работают до часу ночи и валятся спать. Каждый день в полночь происходит стресс-тест git&#39;а и прочей инфраструктуры — все коммитят всё, что попалось под руку (отсюда красивенький столбец слева). Суббота и воскресенье — прогулки^Wпоездки на конференции. Суровые программисты на Си, чо. ☺&lt;br /&gt;
&lt;br /&gt;
Вся эта красота и равномерность заставила меня пойти искать что-нибудь этакое, и вот результат:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeCRyPtGAY12Quf151_vLs3B4kfKxOeaHiuDWlleYc9eqaaoAxOjGsLFUy-bqtccNrFc8NSdfsLLIVDafxua3i0S7I-5nBWwznNPfQLFcCtsSL2l_2tUxAPP-jSONr-ajkZhyphenhyphenvwv6Gsi0/s1600/clojure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; width=&quot;600&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeCRyPtGAY12Quf151_vLs3B4kfKxOeaHiuDWlleYc9eqaaoAxOjGsLFUy-bqtccNrFc8NSdfsLLIVDafxua3i0S7I-5nBWwznNPfQLFcCtsSL2l_2tUxAPP-jSONr-ajkZhyphenhyphenvwv6Gsi0/s400/clojure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Это punchcard &lt;a href=&#39;http://clojure.org/&#39;&gt;Clojure&lt;/a&gt;, диалекта Lisp, ориентированного на JVM. Проект, насколько мне известно, начинался как хак, но быстро обрёл популярность и сейчас является, наверное, самым живым и бурно развивающимся Лиспом. Собственно, по картинке это сразу видно: народ пилит и пилит код, так что коммиты никак не упорядочены. Пробелы в районе пяти–шести утра — это, судя по всему, моменты, когда организм не выдерживает гонки и просто выключается на сутки ☺&lt;br /&gt;
&lt;br /&gt;
Очень жаль, что на github&#39;е нет зеркал таких проектов, как zsh, vim, urxvt, Firefox, mutt и прочих — я бы с огромным удовольствием полюбовался на их статистику. Также прошу прощения у тех читателей, кому на протяжении первых пары абзацев не хватало картинок — я честно хотел вставить туда punchcard одного из моих проектиков, но github сказал, что «this graph is not avaliable yet» ☹ Напоследок, если кого-то это раздражает — извините за обилие смайликов.&lt;br /&gt;
&lt;br /&gt;
P.S. (Точнее, P.P. — &lt;i&gt;post postum&lt;/i&gt;): это сотый пост. Ура!</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/4245603097284344592/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2012/03/punchcard-ghc.html#comment-form' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/4245603097284344592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/4245603097284344592'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2012/03/punchcard-ghc.html' title='Наблюдения о punchcard&#39;ах некоторых проектов, или Чем занимаются на досуге разработчики GHC?'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb15e5jN5PppsYa7suEznaixpXJpcfyuF0XJo3w4AQaj4FSOgg2HfeVzoBtD29HwFV0LDKraM684hriUkk6Z2OaxGfXk97RSJws1W28nh90dv07LJf2qvlObKrejlmKkxK16Tx-8goxl4/s72-c/ghc.png" height="72" width="72"/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-2642559254444967264</id><published>2011-08-30T23:34:00.019+03:00</published><updated>2012-02-14T19:36:44.984+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="hardware"/><title type='text'>Asus P52F-380M и Debian</title><content type='html'>Недавно я обзавёлся новой игрушкой — Asus P52F-380M. В общем и целом ноут хороший, но некоторые моменты вызывают раздражение. Например, клавиатура немного прогибается (в прямом смысле слова), но когда привыкаешь и начинаешь набирать, не глядя (я, к стыду своему, всё ещё не обучился слепому набору), этот недостаток перестаёт волновать. Гораздо больше раздражает идиотское расположение стрелочек:&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip0VAGk2xtPgxkKmuXEJxDmk9YOiV4eQEs80CGtHzXYsAO9OLg1jIYNR2W0I-2KetXZDHhVMnWNrJQvxatIdlBy39bgqnsN3G1Do_-Nh87ttneJ2ketuf0G1AlzcNAkfxJRFgQuPvKM60/s1600/stupid_arrow_keys_design_ASUS_P52F-380.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 272px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip0VAGk2xtPgxkKmuXEJxDmk9YOiV4eQEs80CGtHzXYsAO9OLg1jIYNR2W0I-2KetXZDHhVMnWNrJQvxatIdlBy39bgqnsN3G1Do_-Nh87ttneJ2ketuf0G1AlzcNAkfxJRFgQuPvKM60/s400/stupid_arrow_keys_design_ASUS_P52F-380.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5648437001614874754&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
То есть кнопка «вправо» находится в области, занимаемой numpad&#39;ом, что, поверьте мне, очень неудобно (в основном из-за огромного RgtCtrl, который я постоянно нажимаю вместо стрелочки влево). Даже на EeePC сделали лучше:&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkbVm3grSrWwev2sG6BPKPKvPrEWvJAIZJUTyRF9XziwUXncxDYi9Z5u0ES3lwHg_Z9qM1mBGdv1kz4IgWkdGh3c75shyF7RPrd-kyvSFcIndYd1YeTA5j25TUyswEfT6vuwT0iLVMBy8/s1600/arrow_keys_design_ASUS_EeePC_900HA.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 333px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkbVm3grSrWwev2sG6BPKPKvPrEWvJAIZJUTyRF9XziwUXncxDYi9Z5u0ES3lwHg_Z9qM1mBGdv1kz4IgWkdGh3c75shyF7RPrd-kyvSFcIndYd1YeTA5j25TUyswEfT6vuwT0iLVMBy8/s400/arrow_keys_design_ASUS_EeePC_900HA.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5648438945780202898&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Думаю, теперь я таки перейду на hjkl в vim&#39;е ☺&lt;br /&gt;
&lt;br /&gt;
В остальном дизайн и сборка, к счастью, претензий не вызывают, так что перейдём наконец к теме поста — установке и последующей настройке моего любимого Debian.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Замечу, что в данном ноутбуке используется процессор Intel Core i3, а значит, лучше всего использовать Debian, собранный под amd64. Надеюсь, читатели этого блога в состоянии сами установить систему (если нет — &lt;a href=&#39;http://mydebianblog.blogspot.com/2006/08/in-true-debian-way.html&#39;&gt;замечательная инструкция virens&#39;а вам в помощь&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Сначала я попытался поставить Squeeze, но после установки наткнулся на неприятный баг: внешние колонки ноутбука продолжают играть даже когда воткнуты наушники. Мириться с этим никак нельзя, тем более что в LiveCD Ubuntu 10.10, оказавшемся под рукой, всё работало. Признаюсь, я не стал долго ковыряться и просто поставил Wheezy, в котором, к счастью, всё работало из коробки.&lt;br /&gt;
&lt;br /&gt;
Впрочем, даже в Wheezy с ходу не заработали некоторые вещи, в частности:&lt;ul&gt;&lt;li&gt;веб-камера выдавала перевёрнутое изображение;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wicd-curses&lt;/code&gt; не видел мою Wi-Fi-точку;&lt;/li&gt;
&lt;li&gt;из Fn-клавиш работали только три: Fn+F5/Fn+F6, регулирующие яркость монитора, и Fn+F7, которая монитор выключала;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pm-suspend&lt;/code&gt; и &lt;code&gt;pm-hibernate&lt;/code&gt; вроде как работали, но не выключали машину;&lt;/li&gt;
&lt;li&gt;противно пищал PC speaker (он не настоящий, конечно же, просто эмуляция).&lt;/li&gt;
&lt;/ul&gt;Карт-ридер я на работоспособность не проверял из-за отсутствия подходящих карточек, но наличие в выводе &lt;code&gt;lspci&lt;/code&gt; SD Bridge внушает надежду.&lt;br /&gt;
&lt;br /&gt;
Ну-с, проблемы перечислены — вперёд, на барикады! ☺&lt;br /&gt;
&lt;br /&gt;
К счастью, для камеры и suspend&#39;а решения приведены в &lt;a href=&#39;http://www.linlap.com/wiki/asus+p52f&#39;&gt;Linux Laptop Wiki&lt;/a&gt;. Для полноты поста я размещу здесь вольный пересказ этих рецептов.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Веб-камера&lt;/h3&gt;Починить это раз и навсегда (слегка поправив какой-нибудь конфиг), к сожалению, не получится. Единственный выход — все приложения, использующие веб-камеру, запускать с библиотекой &lt;code&gt;v4l1compat.so&lt;/code&gt;. Для начала ставим соответствующий пакетик:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudo aptitude install libv4l-0&lt;/div&gt;&lt;/code&gt;После этого все приложения, использующие веб-камеру, следует запускать следующим образом (на примере MPlayer&#39;а):&lt;code&gt;&lt;div class=&quot;code&quot;&gt;LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so mplayer tv://&lt;/div&gt;&lt;/code&gt;Для удобства можно создать алиас — библиотека не нарушает работоспособность программы, так что можно подгружать её даже в тех случаях, когда веб-камера вам не нужна.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Suspend и hibernate&lt;/h3&gt;Как гласит Linux Laptop Wiki, питание не выключается из-за неотключенных USB-устройств. Чинится всё написанием скриптов, которые перед засыпанием отключают устройства, а потом подключают обратно, но тут всплывает неприятный баг: машинка успешно засыпает и просыпается, но в точках монтирования флешек становится пусто. Почему так и как это исправить, я ещё не понял. Stay tuned.&lt;br /&gt;
&lt;br /&gt;
В общем, сделать нужно следующее:&lt;ol&gt;&lt;li&gt;ставим любимый пакетик для suspend/hibernate. Я пользуюсь &lt;code&gt;pm-utils&lt;/code&gt;:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudo aptitude install pm-utils&lt;/div&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;создаём конфиг с модулями, которые нужно выгружать перед suspend&#39;ом:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudoedit /etc/pm/config.d/modules&lt;/div&gt;&lt;/code&gt;и пихаем в него вот что:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;SUSPEND_MODULES=&quot;usb_storage mac80211 cfg80211 btusb bluetooth ahci libahci sdhci_pci sdhci led_class ath9k ath9k_common ath rfcomm sco bnep l2cap asus_laptop ehci_hcd&quot;&lt;/div&gt;&lt;/code&gt;Не забываем разрешить утилитам читать его:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudo chmod a+r /etc/pm/config/d/modules&lt;/div&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;создаём скриптик, который будет отключать и подключать устройства:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudoedit /etc/pm/sleep.d/10_unbindusb&lt;/div&gt;&lt;/code&gt;и помещаем в него следующее:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;&lt;font face=&quot;monospace&quot;&gt;&lt;font color=&quot;#0000c0&quot;&gt;#!/bin/bash&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#008080&quot;&gt;function&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#008080&quot;&gt;unbind_usb {&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;for&amp;nbsp;&lt;/font&gt;driver&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;in&lt;/font&gt;&amp;nbsp;ehci ohci uhci&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;do&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;cd&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;/sys/bus/pci/drivers/&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;${&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;driver&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;}&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;_hcd&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#008080&quot;&gt;ids&lt;/font&gt;=&lt;font color=&quot;#c000c0&quot;&gt;$(&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;ls&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;grep&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;&amp;nbsp;:&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;echo&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$ids&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;/tmp/DISABLED_&lt;font color=&quot;#c000c0&quot;&gt;$driver&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;for&amp;nbsp;&lt;/font&gt;id&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;in&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#c000c0&quot;&gt;$ids&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;do&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;echo&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;Unbinding&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$id&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;echo&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;-n&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$id&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;unbind&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#008080&quot;&gt;disabled&lt;/font&gt;=&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$disabled&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$id&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;done&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;done&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#008080&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#008080&quot;&gt;function&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#008080&quot;&gt;bind_usb {&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;for&amp;nbsp;&lt;/font&gt;driver&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;in&lt;/font&gt;&amp;nbsp;ehci ohci uhci&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;do&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;cd&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;/sys/bus/pci/drivers/&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;${&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;driver&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;}&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;_hcd&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;for&amp;nbsp;&lt;/font&gt;id&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;in&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#c000c0&quot;&gt;$(&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;cat /tmp/DISABLED_&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$driver&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;do&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;echo&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;Binding&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$id&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;echo&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;-n&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$id&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c00000&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;bind&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;done&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;rm&lt;/font&gt;&amp;nbsp;/tmp/DISABLED_&lt;font color=&quot;#c000c0&quot;&gt;$driver&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;done&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#008080&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#8b0000&quot;&gt;case&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&lt;font color=&quot;#c000c0&quot;&gt;$1&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;&amp;quot;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;in&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hibernate&lt;font color=&quot;#8b0000&quot;&gt;|&lt;/font&gt;suspend&lt;font color=&quot;#8b0000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unbind_usb&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thaw&lt;font color=&quot;#8b0000&quot;&gt;|&lt;/font&gt;resume&lt;font color=&quot;#8b0000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bind_usb&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unbind_usb&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bind_usb&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;font color=&quot;#8b0000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;exit&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#c00000&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#8b0000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#8b0000&quot;&gt;;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#8b0000&quot;&gt;esac&lt;/font&gt;;&lt;br /&gt;
&lt;font color=&quot;#8b0000&quot;&gt;exit&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#c00000&quot;&gt;0&lt;/font&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;даём скрипту необходимые права:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudo chmod u=rwx,go=rx /etc/pm/sleep.d/10_unbindusb&lt;/div&gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;Теперь можно спокойно ложить машинку в suspend командой &lt;code&gt;pm-suspend&lt;/code&gt; (от рута, конечно же). Не забывайте также о hibernate и suspend-hybrid.&lt;br /&gt;
&lt;br /&gt;
Если после просыпания у вас не определяются USB-устройства, перезагрузите модуль &lt;code&gt;ehci_hcd&lt;/code&gt;:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudo rmmod ehci_hcd&lt;br /&gt;
$ sudo modprobe ehci_hcd&lt;/div&gt;&lt;/code&gt;&lt;br /&gt;
&lt;b&gt;UPD 14.02.2012:&lt;/b&gt; даже после вышеприведённых инструкций машинка иногда не просыпалась (точнее, просыпалась, но на этапе загрузки образа уходила в ребут). Только что поставил &lt;code&gt;linux-image-3.2.0-1-amd64&lt;/code&gt; — шесть циклов hibernate пройдены на «ура» (причём в одном из случаев система засыпала от AC, а просыпалась от аккумулятора; в ещё одном случае было наоборот; во всех остальных — AC).&lt;br /&gt;
&lt;h3&gt;Wi-Fi&lt;/h3&gt;Беспроводная сеть была чуть ли не самой простой проблемой из всех. Следать нужно следующее:&lt;ol&gt;&lt;li&gt;поставить менеджер сетевых соединений wicd (помимо curses-клиента существуют также gtk и cli):&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudo aptitude install wicd wicd-curses&lt;/div&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;прописать в &lt;code&gt;/etc/network/interfaces&lt;/code&gt; беспроводной интерфейс:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudoedit /etc/network/interfaces&lt;/div&gt;&lt;/code&gt;В конец файла нужно дописать следующее:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;allow-hotplug wlan0&lt;br /&gt;
iface wlan0 inet manual&lt;/div&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;прописать &lt;code&gt;wlan0&lt;/code&gt; в настройках wicd, для чего в curses-интерфейсе (запускаемом с помощью команды &lt;code&gt;wicd-curses&lt;/code&gt;) нужно нажать P (это большая английская буква P) и тут же в поле Wireless Interface написать заветное «wlan0» (без кавычек)&lt;/li&gt;
&lt;li&gt;жмакнуть F10, чтобы сохранить настройки&lt;/li&gt;
&lt;/ol&gt;После этих нехитрых манипуляций ноутбук начинает-таки видеть беспроводные точки доступа.&lt;br /&gt;
&lt;br /&gt;
Кстати говоря, Fn+F2 работает из коробки, только лампочка на передней панели, показывающая состояние Wi-Fi, не работает. Меня, впрочем, это мало волнует, поэтому я (пока что) не разбирался, почему так. &lt;b&gt;UPD&lt;/b&gt;: за лампочки отвечает модуль &lt;code&gt;asus_laptop&lt;/code&gt;. Не знаю, что там у меня случилось во время написания статьи, но сейчас, спустя неделю, модуль загружается сам, так что лампочки в порядке.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Fn-клавиши&lt;/h3&gt;Сразу после установки работали только клавиши, регулирующие яркость монитора, и Fn+F2, отключающая/включающая Wi-Fi. Мне очень сильно не хватало возможности регулировать громкость звука (и вообще выключать его), так что пришлось отлавливать события acpi и писать обработчики. На самом деле это не так сложно, как может показаться. Следуйте инструкции:&lt;ol&gt;&lt;li&gt;создаём файлы, задающие события, на которые мы хотим реагировать (надеюсь, вы уже запомнили команду &lt;code&gt;sudoedit&lt;/code&gt;, потому что на этот раз я просто покажу содержимое файлов, не расписывая процесс их создания):&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ cat /etc/acpi/events/volume_mute&lt;br /&gt;
event=hotkey ATK0100:00 00000032&lt;br /&gt;
action=/etc/acpi/volume_mute.sh&lt;/div&gt;&lt;/code&gt;&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ cat /etc/acpi/events/volume_up&lt;br /&gt;
event=hotkey ATK0100:00 00000030&lt;br /&gt;
action=/etc/acpi/volume_up.sh&lt;/div&gt;&lt;/code&gt;&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ cat /etc/acpi/events/volume_down&lt;br /&gt;
event=hotkey ATK0100:00 00000031&lt;br /&gt;
action=/etc/acpi/volume_down.sh&lt;/div&gt;&lt;/code&gt;Если какой-то из Fn-хоткеев у вас работать не будет, запустите &lt;code&gt;acpi_listen&lt;/code&gt;, понажимайте хоткей и посмотрите, соответствует ли вывод строке «event» (обратите внимание, что acpi присваивает событиям последовательные номера — их включать в строку event &lt;b&gt;нельзя&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;создаём обработчики:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ cat /etc/acpi/volume_mute.sh&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
amixer sset &#39;Master&#39; toggle&lt;/div&gt;&lt;/code&gt;&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ cat /etc/acpi/volume_up.sh&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
amixer sset &#39;Master&#39; 2+&lt;/div&gt;&lt;/code&gt;&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ cat /etc/acpi/volume_down.sh&lt;br /&gt;
#/bin/sh&lt;br /&gt;
&lt;br /&gt;
amixer sset &#39;Master&#39; 2-&lt;/div&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;заставляем &lt;code&gt;acpid&lt;/code&gt; перечитать настройки:&lt;code&gt;&lt;div class=&#39;code&#39;&gt;$ sudo pkill -SIGHUP acpid&lt;/div&gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;h3&gt;PC speaker&lt;/h3&gt;«Пищалка» в данном ноуте детская, не настоящая даже — вместо взрослого PC speaker&#39;а ноутбук пищит колонками. Отключается это тоже по-детски: достаточно открыть &lt;code&gt;alsamixer&lt;/code&gt; (выполнив в терминале одноимённую команду), выбрать ползунок Beep и выключить его (нажав m).&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;hr width=&#39;256px&#39;/&gt;&lt;/center&gt;&lt;br /&gt;
Как видим, ни одной серьёзной проблемы — все вещи настраиваются парой изменений в конфигах. И кто после этого посмеет сказать, что Linux не готов для потребителя? ☺</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/2642559254444967264/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2011/08/asus-p52f-380m-debian.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/2642559254444967264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/2642559254444967264'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2011/08/asus-p52f-380m-debian.html' title='Asus P52F-380M и Debian'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip0VAGk2xtPgxkKmuXEJxDmk9YOiV4eQEs80CGtHzXYsAO9OLg1jIYNR2W0I-2KetXZDHhVMnWNrJQvxatIdlBy39bgqnsN3G1Do_-Nh87ttneJ2ketuf0G1AlzcNAkfxJRFgQuPvKM60/s72-c/stupid_arrow_keys_design_ASUS_P52F-380.jpg" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-508920541663002674</id><published>2011-07-05T13:01:00.007+03:00</published><updated>2011-07-15T21:31:35.348+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>gtk-vector-screenshot: теперь в Debian sid!</title><content type='html'>&lt;a href=&quot;http://www.joachim-breitner.de/various/pdf_screenshot_epiphany.pdf&quot;&gt;&lt;img style=&quot;margin-right: 0.5em; float:left; width: 108px; height: 300px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHjoAv5TKtDU7Mqpp3q5f2L0chvA8fmXF8pfj8LMG5OR_QRfjiy8A6D6e-3W3C_H7KJoSjSGW3NVj-YRB28ZgkuZm9eXDsg8nY5HHwwM-RB0nI015_dNzw-GUK8IfSC9V1lk6CX6XiSIo/s400/pdf_screenshot_epiphany_thumbnail.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Вчера автор &lt;code&gt;gtk-vector-screenshot&lt;/code&gt;, Joachim Breitner, сообщил о том, что его разработка успешно создаёт скриншоты окна Epiphany (об этом ему в свою очередь сообщил Martin Borgert). Так что те, кто читал &lt;a href=&quot;http://debiania.blogspot.com/2011/06/pdf-gtk-3.html&quot;&gt;мой предыдущий пост&lt;/a&gt; и заинтересовался идеей, могут подключать репозитории sid и ставить себе вкусняшку — она уже работает ;)&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.joachim-breitner.de/blog/archives/508-gtk-vector-screenshot-works-with-epiphany.html&quot;&gt;Оригинальный пост&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPD 14.07.2011:&lt;/b&gt; по просьбам трудящихся своро^Wскопировал из оригинального поста превьюшку PDF&#39;ки.</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/508920541663002674/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2011/07/gtk-vector-screenshot-debian-sid.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/508920541663002674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/508920541663002674'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2011/07/gtk-vector-screenshot-debian-sid.html' title='gtk-vector-screenshot: теперь в Debian sid!'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHjoAv5TKtDU7Mqpp3q5f2L0chvA8fmXF8pfj8LMG5OR_QRfjiy8A6D6e-3W3C_H7KJoSjSGW3NVj-YRB28ZgkuZm9eXDsg8nY5HHwwM-RB0nI015_dNzw-GUK8IfSC9V1lk6CX6XiSIo/s72-c/pdf_screenshot_epiphany_thumbnail.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-6891521172116499471</id><published>2010-12-23T17:20:00.006+02:00</published><updated>2011-12-11T14:53:22.324+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><title type='text'>Как использовать dpatch</title><content type='html'>Для полноты картины с пересборкой Debian–пакетов (см. мой &lt;a href=&quot;http://debiania.blogspot.com/2010/12/debian.html&quot;&gt;предыдущий пост&lt;/a&gt;) решил перевести статью об использовании тулзы для менеджмента патчей — dpatch.&lt;br /&gt;
&lt;br /&gt;
&lt;p align=&quot;right&quot;&gt;Эта статья является переводом поста&lt;br /&gt;
Сандро Тоси (Sandro Tosi) &lt;a href=&quot;http://matrixhasu.altervista.org/index.php?view=use_dpatch&quot;&gt;“HowTo use &lt;code&gt;dpatch&lt;/code&gt;”&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
Важным правилом, которому должен следовать каждый сопровождающий пакета, заключается в том, чтобы не допускать изменения апстримового кода (&lt;i&gt;upstream — это разработчики программы, из которой потом создаётся пакет. Прим. переводчика&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Правильный Путь&lt;/i&gt; заключается в создании набора патчей, которые должны применяться к апстримовому коду при создании пакета; это позволит diff.gz содержать только изменения внутри директории debian/, что есть &lt;i&gt;Хорошо&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Популярным инструментом для управления патчами при создании пакетов является dpatch.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;0. Базовые вещи&lt;/h3&gt;&lt;br /&gt;
Прежде всего нужно установить &lt;code&gt;dpatch&lt;/code&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;# apt-get install dpatch&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
и добавить &lt;code&gt;dpatch&lt;/code&gt; в поле &lt;code&gt;Build-Depends&lt;/code&gt; в файле &lt;code&gt;debian/control&lt;/code&gt;. Более того, нужно создать директорию &lt;code&gt;debian/patches&lt;/code&gt;: это место, где хранятся патчи.&lt;br /&gt;
&lt;br /&gt;
В этой же директории будет файл &lt;code&gt;debian/patches/00list&lt;/code&gt;: он будет содержать список имён патчей и они будут применены в том порядке, в котором упоминаются в этом файле.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;1. Создание патча&lt;/h3&gt;&lt;br /&gt;
Поставленный ранее пакет содержит полезную утилиту — &lt;code&gt;dpatch-edit-patch&lt;/code&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;заходим в директорию с исходниками пакета&lt;/li&gt;
&lt;li&gt;выполняем&lt;div class=&quot;code&quot;&gt;&lt;code&gt;dpatch-edit-patch &amp;lt;имя_патча&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;Будет создана копия директории с исходниками пакета, после чего будет запущен дочерний шелл; делайте свои правки и выходите из шелла (&lt;i&gt;Сделать это можно с помощью команды &lt;code&gt;exit&lt;/code&gt;. Если хотите покинуть шелл, не сохраняя сделанных правок, выполните &lt;code&gt;exit 230&lt;/code&gt;. Прим. переводчика&lt;/i&gt;). После этого будет создан патч &lt;code&gt;debian/patches/имя_патча&lt;/code&gt;, в который будут записаны все ваши правки.&lt;br /&gt;
&lt;br /&gt;
Не забудьте обновить &lt;code&gt;debian/patches/00list&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Хорошей практикой является добавление в патч сообщения о копирайте. При этом можно использовать примерно такой подход: тривиальные патчи объявляются общественным достоянием, а более сложные лицензируются под той же лицензией, что и программа.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;2. Конвертирование патча&lt;/h3&gt;&lt;br /&gt;
Этот скрипт (спасибо Чарльзу Плесси (Charles Plessy)) принимает на вход модифицированный и оригинальный файлы, создаёт патч в универсальном формате и затем конвертирует его в формат dpatch&#39;а.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;diff -u первоначальные-исходники/файл модифицированные-исходники/файл | \&lt;br /&gt;
dpatch patch-template -p &quot;&amp;lt;номер&amp;gt;_&amp;lt;краткое_описание&amp;gt;&quot;   \&lt;br /&gt;
&quot;&amp;lt;что делает патч&amp;gt;&quot; &amp;gt; путь/к/debian/patches/&amp;lt;номер&amp;gt;_&amp;lt;краткое_описание&amp;gt;.dpatch&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
(замените &amp;lt;теги&amp;gt; на подходящие значения).&lt;br /&gt;
&lt;br /&gt;
Обычно патч (по большей части тот, который присылается через систему отслеживания багов) представляет собой файл: для того, чтобы его сконвертировать, замените &lt;code&gt;diff -u ...&lt;/code&gt; на &lt;code&gt;cat /путь/к/файлу.patch&lt;/code&gt; — и всё.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;3. Тестирование патча&lt;/h3&gt;&lt;br /&gt;
Окей, вы только что сотворили патч, но как проверить, что он делает то, что должен? Примените его!&lt;br /&gt;
&lt;br /&gt;
Из распакованного пакета исходного кода (рабочей копии для создания пакета) выполните&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;dpatch apply-all&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
а для отмены&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;dpatch deapply-all&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;4. Использование &lt;code&gt;dpatch&lt;/code&gt; в &lt;code&gt;debian/rules&lt;/code&gt;&lt;/h3&gt;&lt;br /&gt;
Осталось только дописать &lt;code&gt;debian/rules&lt;/code&gt; таким образом, чтобы патчи из &lt;code&gt;debian/patches/&lt;/code&gt; применялись в порядке, указанном в &lt;code&gt;debian/patches/00list&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Думаю, самым простым способом будет модифицирование &lt;code&gt;debian/rules&lt;/code&gt; следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;include /usr/share/dpatch/dpatch.make&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
build: build-stamp&lt;br /&gt;
build-stamp: patch-stamp&lt;br /&gt;
...&lt;br /&gt;
build stuff here&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
clean: unpatch&lt;br /&gt;
...&lt;br /&gt;
clean stuff here&lt;br /&gt;
...&lt;br /&gt;
...&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Но если хотите, можете отдельно добавить цели &lt;code&gt;patch&lt;/code&gt; и &lt;code&gt;unpatch&lt;/code&gt;, как показано в следующем примере:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;build-stamp: patch&lt;br /&gt;
...&lt;br /&gt;
build stuff here&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
clean: clean1 unpatch&lt;br /&gt;
clean1:&lt;br /&gt;
...&lt;br /&gt;
clean stuff here&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
patch: patch-stamp&lt;br /&gt;
patch-stamp:&lt;br /&gt;
dpatch apply-all -v&lt;br /&gt;
#dpatch call-all -a=pkg-info &gt;patch-stamp&lt;br /&gt;
&lt;br /&gt;
unpatch:&lt;br /&gt;
dpatch deapply-all&lt;br /&gt;
rm -rf patch-stamp debian/patched&lt;br /&gt;
&lt;br /&gt;
binary: binary-indep binary-arch&lt;br /&gt;
.PHONY: build clean binary-indep binary-arch binary install patch unpatch \&lt;br /&gt;
clean1&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
В любом случае, советую следовать первому способу, так как он чище и более устойчив к ошибкам.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;5. Восстановление первоначального апстримового кода&lt;/h3&gt;&lt;br /&gt;
Самой первой вещью, которую должен запомнить каждый сопровождающий пакетов Debian, является: НИКОГДА не менять апстримовый код в своём пакете; вместо этого должны использоваться патчи. Даже если вы следуете этому Руководящему Правилу при создании своих пакетов, вы можете столкнуться с изменениями апстримового кода, когда будете усыновлять пакет.&lt;br /&gt;
&lt;br /&gt;
Существует способ сконвертировать такие изменения (сделанные предыдущим сопровождающим пакета) в патч для &lt;code&gt;dpatch&lt;/code&gt;:&lt;ul&gt;&lt;li&gt;используя &lt;code&gt;apt-get source &amp;lt;пакет&amp;gt;&lt;/code&gt; или какую–либо другую команду, получите пакет исходников; будем считать, что он будет распакован в директорию с именем &amp;lt;пакет-версия&amp;gt; — перейдите в неё (заметим, что исходный файл будет в родительской директории)&lt;/li&gt;
&lt;li&gt;измените &lt;code&gt;debian/rules&lt;/code&gt; так, как показано в предыдущей секции этой статьи&lt;/li&gt;
&lt;li&gt;используйте &lt;code&gt;dpatch-convert-diffgz&lt;/code&gt;: эта утилита берёт .diff.gz, извлекает изменения, выполненные над апстримовым кодом, и конвертирует их в файл dpatch, который будет применяться во время сборки пакета&lt;/li&gt;
&lt;/ul&gt;Если вы управляете своими пакетами старым способом (без контроля версий исходного кода), работа завершена. Я использую Subversion, чтобы управлять своими пакетами, и это требует нескольких дополнительных шагов:&lt;ul&gt;&lt;li&gt;скачиваете пакет с исходными кодами с зеркала репозитория Debian&lt;/li&gt;
&lt;li&gt;распаковываете его во временную директорию &amp;lt;tempdir&amp;gt; (или позвольте &lt;code&gt;apt-get source&lt;/code&gt; сделать это для вас)&lt;/li&gt;
&lt;li&gt;импортируйте в репозиторий SVN (будет произведена проверка рабочей директории — &amp;lt;workdir&amp;gt;)&lt;/li&gt;
&lt;li&gt;переходите в &amp;lt;tempdir&amp;gt; и меняете &lt;code&gt;debian/rules&lt;/code&gt; (после чего выполняете то же самое в &amp;lt;workdir&amp;gt;)&lt;/li&gt;
&lt;li&gt;выполняете &lt;code&gt;dpatch-convert-diffgz 01 restore_pristine_code&lt;/code&gt; (можете выбирать любое имя); будут созданы файлы &lt;code&gt;debian/patches/01_restore_pristine_code.dpatch&lt;/code&gt; и &lt;code&gt;debian/patches/00list&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;перемещаете оба вышеупомянутых файла в &amp;lt;workdir&amp;gt; и добавляете их в репозиторий&lt;/li&gt;
&lt;li&gt;возвращаете назад апстримовый код, модифицированный предыдущим сопровождающим; это может означать копирование файлов руками (&lt;code&gt;cp -p ....&lt;/code&gt;) из распакованного апстримового тарболла, либо выполнение &lt;code&gt;fakeroot debian/rules patch ; fakeroot debian/rules unpatch&lt;/code&gt; (действенность последнего способа не гарантируется)&lt;/li&gt;
&lt;/ul&gt;Это немного сложно, но таким образом вы сможете «усыновить» пакет и использовать &lt;code&gt;dpatch&lt;/code&gt;, что есть хорошо.</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/6891521172116499471/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2010/12/dpatch.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/6891521172116499471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/6891521172116499471'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2010/12/dpatch.html' title='Как использовать dpatch'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-7903659303355906961</id><published>2010-12-23T15:47:00.004+02:00</published><updated>2010-12-23T20:01:43.366+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><title type='text'>Как пересобирать пакеты Debian</title><content type='html'>&lt;p align=&quot;right&quot;&gt;Этот пост является переводом&lt;br /&gt;поста Рафаэля Герцога (Raphaël Hertzog)&lt;br /&gt;&lt;a href=&quot;http://raphaelhertzog.com/2010/12/15/howto-to-rebuild-debian-packages/&quot;&gt;“Howto to rebuild Debian packages”&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;От переводчика&lt;/b&gt;: мне не хотелось переводить «source package» как «исходный пакет», т.к. такой перевод может наталкивать на мысль о распаковке deb–пакета с бинарниками. Поэтому в статье использован другой перевод — «пакет исходных кодов». Звучит, конечно, убого, но всяко лучше, чем первое.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Умение пересобирать пакеты Debian является очень полезным навыком. Он является необходимым для многих задач, с которыми может столкнуться администратор: включить фичу, выключенную в официальном пакете; пересобрать пакет для использования в другом дистрибутиве (например, пересобрать пакет из Debian Testing для Debian Stable — мы называем это обратным портированием (backporting)); добавить исправление бага, подготовленное разработчиками из апстрима, и так далее. Узнайте о четырёх шагах, позволяющих пересобирать пакеты Debian.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Скачивание пакета с исходным кодом&lt;/h3&gt;&lt;br /&gt;Предпочитаемым путём получения пакетов с исходным кодом является APT. Он может скачивать их из репозиториев с исходниками, прописанных у вас в &lt;code&gt;/etc/apt/sources.list&lt;/code&gt;, например:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;code&quot;&gt;&lt;code&gt;deb-src http://ftp.debian.org/debian unstable main contrib non-free&lt;br /&gt;deb-src http://ftp.debian.org/debian testing main contrib non-free&lt;br /&gt;deb-src http://ftp.debian.org/debian stable main contrib non-free&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Заметьте, что строки начинаются с «deb-src» вместо обычного «deb». Это говорит APT&#39;у о том, что мы заинтересованы в пакетах с исходным кодом, а не бинарниками.&lt;br /&gt;&lt;br /&gt;После &lt;code&gt;apt-get update&lt;/code&gt; можно использовать &lt;code&gt;apt-get source publican&lt;/code&gt;, чтобы получить последнюю версию пакета с исходными кодами «publican». Можно также указать дистрибутив, из которого следует получать пакет, используя следующий синтаксис: &lt;i&gt;«package/distribution»&lt;/i&gt;. &lt;code&gt;apt-get source publican/testing&lt;/code&gt; получит пакет с исходниками publican и распакует их в текущую директорию (используя &lt;code&gt;dpkg-source -x&lt;/code&gt;, так что вам понадобится пакет &lt;a href=&quot;http://packages.debian.org/dpkg-dev&quot;&gt;dpkg-dev&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ &lt;b&gt;apt-get source publican/testing&lt;/b&gt;&lt;br /&gt;Reading package lists... Done&lt;br /&gt;Building dependency tree&lt;br /&gt;Reading state information... Done&lt;br /&gt;NOTICE: &#39;publican&#39; packaging is maintained in the &#39;Git&#39; version control system at:&lt;br /&gt;git://git.debian.org/collab-maint/publican.git&lt;br /&gt;Need to get 727 kB of source archives.&lt;br /&gt;Get:1 http://nas/debian/ squeeze/main publican 2.1-2 (dsc) [2253 B]&lt;br /&gt;Get:2 http://nas/debian/ squeeze/main publican 2.1-2 (tar) [720 kB]&lt;br /&gt;Get:3 http://nas/debian/ squeeze/main publican 2.1-2 (diff) [4728 B]&lt;br /&gt;Fetched 727 kB in 0s (2970 kB/s)&lt;br /&gt;dpkg-source: info: extracting publican in publican-2.1&lt;br /&gt;dpkg-source: info: unpacking publican_2.1.orig.tar.gz&lt;br /&gt;dpkg-source: info: unpacking publican_2.1-2.debian.tar.gz&lt;br /&gt;$ &lt;b&gt;ls -dF publican*&lt;/b&gt;&lt;br /&gt;publican-2.1/                 publican_2.1-2.dsc&lt;br /&gt;publican_2.1-2.debian.tar.gz  publican_2.1.orig.tar.gz&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Если APT использовать не хочется, или если пакет с исходными кодами лежит не в APT&#39;овском репозитории, можно скачать его с помощью команды &lt;code&gt;dget -u &lt;i&gt;dsc-url&lt;/i&gt;&lt;/code&gt;, где &lt;i&gt;dsc-url&lt;/i&gt; — это URL .dsc–файла, представляющего пакет с сорцами. dget предоставляется пакетом &lt;a href=&quot;http://packages.debian.org/stable/devscripts&quot;&gt;devscripts&lt;/a&gt;. Заметим, что опция -u отключает проверку источника пакета перед его распаковкой.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Установка сборочных зависимостей&lt;/h3&gt;&lt;br /&gt;И снова APT сделает за вас всю грязную работу: достаточно лишь запустить &lt;code&gt;apt-get build-dep foo&lt;/code&gt;, и сборочные зависимости для пакета foo будут установлены. Он поддерживает тот же синтаксический сахар, что и &lt;code&gt;apt-get source&lt;/code&gt;, так что для установки зависимостей, требуемых для сборки тестируемой версии publican, можно использовать команду &lt;code&gt;apt-get build-dep publican/testing&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Если пользоваться APT&#39;ом нельзя, перейдите в директорию с распакованным исходным кодом и запустите &lt;code&gt;dpkg-checkbuilddeps&lt;/code&gt;. Он покажет список неудовлетворённых сборочных зависимостей (если такие есть; в противном случае ничего выведено не будет и можно будет спокойно продолжать). Немного копирования–вставки и вызовов apt-get install — и вы за пару секунд установите все необходимые пакеты.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Осуществление изменений&lt;/h3&gt;&lt;br /&gt;Я не буду подробно останавливаться на этом шаге, так как он сильно зависит от преследуемых вами целей. Возможно, вам придётся править debian/rules, а может, вы просто примените патч.&lt;br /&gt;&lt;br /&gt;Впрочем, вне зависимости от того, сделали вы изменения или просто пересобрали пакет в другом окружении, вам следует поменять версию пакета. Это можно сделать с помощью «&lt;code&gt;dch --local foo&lt;/code&gt;» (снова из пакета devscripts), где «foo» следует заменить на короткое имя, идентифицирующее вас как поставщика обновлённой версии. Эта команда обновит debian/changelog и пригласит вас написать короткую заметку о внесённых изменениях.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Сборка пакета&lt;/h3&gt;&lt;br /&gt;Последний шаг — самый простой, так как всё уже на своих местах. Вы должны находиться в директории с распакованными исходниками.&lt;br /&gt;&lt;br /&gt;Теперь запускайте либо «debuild -us -uc» (рекомендуемый выбор, требуется пакет devscripts), либо сразу «dpkg-buildpackage -us -uc». Опции «-us -uc» указывают на то, что шаг подписывания пакета будет пропущен; в противном случае в конце сборки было бы сгенерировано (безобидное) сообщение, если бы у вас не нашлось GPG–ключа для имени, указанного в первой записи в changelog&#39;е.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ &lt;b&gt;cd publican-2.1&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;debuild -us -uc&lt;/b&gt;&lt;br /&gt; dpkg-buildpackage -rfakeroot -D -us -uc&lt;br /&gt;dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2&lt;br /&gt;dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor):&lt;br /&gt;dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2&lt;br /&gt;dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2&lt;br /&gt;dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor):&lt;br /&gt;dpkg-buildpackage: source package publican&lt;br /&gt;dpkg-buildpackage: source version 2.1-2rh1&lt;br /&gt;dpkg-buildpackage: source changed by Raphaël Hertzog &lt;br /&gt; dpkg-source --before-build publican-2.1&lt;br /&gt;dpkg-buildpackage: host architecture i386&lt;br /&gt;[...]&lt;br /&gt;dpkg-deb: building package `publican&#39; in `../publican_2.1-2rh1_all.deb&#39;.&lt;br /&gt; dpkg-genchanges  &gt;../publican_2.1-2rh1_i386.changes&lt;br /&gt;dpkg-genchanges: not including original source code in upload&lt;br /&gt; dpkg-source --after-build publican-2.1&lt;br /&gt;dpkg-buildpackage: binary and diff upload (original source NOT included)&lt;br /&gt;Now running lintian...&lt;br /&gt;Finished running lintian.&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Сборка завершена, обновлённые пакеты с исходным кодом и бинарниками были сгенерированы в родительской директории.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ &lt;b&gt;cd ..&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;ls -dF publican*&lt;/b&gt;&lt;br /&gt;publican-2.1/                    publican_2.1-2rh1.dsc&lt;br /&gt;publican_2.1-2.debian.tar.gz     publican_2.1-2rh1_i386.changes&lt;br /&gt;publican_2.1-2.dsc               publican_2.1-2rh1_source.changes&lt;br /&gt;publican_2.1-2rh1_all.deb        publican_2.1.orig.tar.gz&lt;br /&gt;publican_2.1-2rh1.debian.tar.gz&lt;/code&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/7903659303355906961/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2010/12/debian.html#comment-form' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/7903659303355906961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/7903659303355906961'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2010/12/debian.html' title='Как пересобирать пакеты Debian'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-8827824926028427088</id><published>2010-08-07T00:34:00.003+03:00</published><updated>2011-07-15T21:12:35.561+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="tips&#39;n&#39;tricks"/><title type='text'>Пропуск проверки ФС при загрузке с CTRL-C</title><content type='html'>Эта маленькая заметка — перевод &lt;a href=&#39;http://www.lucas-nussbaum.net/blog/?p=511&#39;&gt;поста Лукаса Нуссбаума (Lucas Hussbaum)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Согласно закону Мерфи, проверка &lt;code&gt;fsck&lt;/code&gt;, происходящая каждые n загрузок, всегда случается в самое неподходящее время. По умолчанию, прерывание проверки с помощью &lt;code&gt;CTRL-C&lt;/code&gt; заставляет &lt;code&gt;fsck&lt;/code&gt; возвращать код ошибки, что приводит к перемонтированию файловой системы в режиме «только чтение». Но это легко меняется правкой &lt;code&gt;/etc/e2fsck.conf&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;code&quot;&gt;&lt;code&gt;[options]&lt;br /&gt;allow_cancellation = true&lt;/code&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/8827824926028427088/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2010/08/ctrl-c.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/8827824926028427088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/8827824926028427088'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2010/08/ctrl-c.html' title='Пропуск проверки ФС при загрузке с CTRL-C'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-7096106898615673218</id><published>2010-05-05T15:57:00.005+03:00</published><updated>2011-07-15T21:14:02.797+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="Eee PC"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Таппинг (tapping) на Eee PC 900HA</title><content type='html'>Недельки этак три назад у меня внезапно поломался таппинг — возможность совершать клики ударом по тачпаду. Благо, кнопки на тачпаде всё ещё работали, да и кликать приходилось только в браузере — менеджер окон, &lt;code&gt;dwm&lt;/code&gt;, завязан на клавиатуру.&lt;br /&gt;&lt;br /&gt;Ох, сколько же времени я провёл в гугле, пытаясь найти хоть какую-то ниточку к решению…&lt;br /&gt;&lt;br /&gt;Сегодня же бродил по спискам рассылки Debian и внезпно это самое решение нашёл. Как ни странно, оно &lt;a href=&quot;http://en.gentoo-wiki.com/wiki/Synaptics_Touchpad#Tapping_does_not_work_anymore&quot;&gt;расположено в wiki Gentoo&lt;/a&gt; :D&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;Вкратце рецепт сводится к следующему действию: файл &lt;code&gt;/usr/share/X11/xorg.conf.d/50-synaptics.conf&lt;/code&gt; следует привести к такому виду:&lt;br /&gt;&lt;div class=&quot;code&quot;&gt;Section &quot;InputClass&quot;&lt;br /&gt;        Identifier &quot;touchpad catchall&quot;&lt;br /&gt;        Driver &quot;synaptics&quot;&lt;br /&gt;        MatchIsTouchpad &quot;on&quot;&lt;br /&gt;        Option      &quot;TapButton1&quot; &quot;1&quot;&lt;br /&gt;        Option      &quot;TapButton2&quot; &quot;2&quot;&lt;br /&gt;        Option      &quot;TapButton3&quot; &quot;3&quot;&lt;br /&gt;EndSection&lt;/div&gt;Ура! ☺</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/7096106898615673218/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2010/05/tapping-eee-pc-900ha.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/7096106898615673218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/7096106898615673218'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2010/05/tapping-eee-pc-900ha.html' title='Таппинг (tapping) на Eee PC 900HA'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-334709488532634942</id><published>2009-12-15T20:42:00.005+02:00</published><updated>2011-07-15T21:17:50.668+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Ещё одно доказательство принципа «работает — не трожь!»</title><content type='html'>У нас в локалке обнаружилось зеркало репозитория Debian, и я нарушил священное правило администрирования, гласящее: «работает — не трожь!». О том, что из этого вышло, читайте ниже.&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;br /&gt;Быстренько поправив &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; и прогнав &lt;code&gt;sudo aptitude update&lt;/code&gt;, я очень обрадовался — ещё бы, ведь по 100-мегабитной сетке пакеты качаются в разы быстрее, чем по 128-икилобитному соединению! К сожалению, счастье моё продлилось недолго…&lt;br /&gt;&lt;br /&gt;В один (не такой уж прекрасный) день мои новоприобретённые репозитории внезапно отвалились. То есть совсем — списки пакетов получить не удаётся, пакеты не качаются… Вот здесь бы мне взять да и вернуться на старые репозитории — ан нет, чёрт дёрнул добавить Яndex&#39;овские! В результате я снова смог ставить софт (хотя на этот раз уже не так быстро — всё-таки пакеты через инет качаются).&lt;br /&gt;&lt;br /&gt;Шли дни, и меня начало беспокоить отсутствие апдейтов. Некоторое время списывал на то, что Lenny уже давно stable и фиксить просто нечего. А вот когда мне по RSS прислали пару весточек о том, что в дистрибутиве обновилось то-то и то-то, я серьёзно заволновался — моя машина упорно утверждала, что у меня всё up-to-date.&lt;br /&gt;&lt;br /&gt;Логичным представлялось перейти на старые инетовские репозитории, что и было сделано. Тут же на меня посыпался ворох апдейтов, среди которых я явно что-то проворонил — aptitude обновил с десяток пакетов до testing, после чего в OpenOffice.Org внезапно пропали все иконки.&lt;br /&gt;&lt;br /&gt;Всё как всегда: вечер перед сдачей _чего-то_там_важного_ (в данном случае — отчётов по лабораторным), а ты сидишь у компа и занимаешься починкой того, что вообще не сломалось бы, если бы не твоя тяга к экспериментам. И винить можно только себя…&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPD:&lt;/b&gt; &lt;a href=&quot;http://debiania.blogspot.com/2009/12/openoffice.html&quot;&gt;OOo починил&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/334709488532634942/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2009/12/blog-post.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/334709488532634942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/334709488532634942'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2009/12/blog-post.html' title='Ещё одно доказательство принципа «работает — не трожь!»'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-27817371949278627</id><published>2009-08-20T16:52:00.008+03:00</published><updated>2011-07-15T21:20:34.987+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>VPN соединение в системе, установленной с Debian netinst</title><content type='html'>Недавно ставил Debian с netinst&#39;а и столкнулся с тем, что VPN из установленной системы поднять невозможно по причине отсутствия необходимых пакетов. Поэтому всем, кто будет ставить Debian на машинки, получающие инет по VPN-соединению, советую залить на флешку &lt;code&gt;libpcap0.8&lt;/code&gt;, &lt;code&gt;ppp&lt;/code&gt; и &lt;code&gt;pptp-linux&lt;/code&gt;. Версии пакетов, естественно, должны быть одинаковыми ;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPDATE&lt;/b&gt;&lt;br /&gt;Значит, поправочка: я банально лохонулся :)&lt;br /&gt;Все необходимые пакеты на netinst&#39;е присутствуют, просто из-за того, что при установке системы я vpn не конфигурировал, а делал это после, пакеты не были установлены. Я же, по наивности полагая, что у меня в системе поставлено всё, что было на диске, даже не подумал сделать &lt;code&gt;apt-cdrom add&lt;/code&gt;… Так-то :)&lt;br /&gt;Спасибо Alex_P за замечание!</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/27817371949278627/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2009/08/vpn-debian-netinst.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/27817371949278627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/27817371949278627'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2009/08/vpn-debian-netinst.html' title='VPN соединение в системе, установленной с Debian netinst'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-7146271092485893802</id><published>2009-05-13T19:09:00.010+03:00</published><updated>2012-02-01T20:38:10.836+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mirror"/><title type='text'>Установка и настройка Samba в Debian GNU/Linux и Ubuntu Linux</title><content type='html'>Копия статьи с ныне мёртвого проекта debian-ubuntu-linux.ru.&lt;br /&gt;
Обратите внимание, что я всего лишь скопировал статью сюда — я лишь немного исправил её (в основном опечатки), и не имею никакого отношения к её содержимому (более того, с некоторыми моментами я категорически не согласен). С другой стороны, я считаю эти статьи полезными для новичка, и потому копирую их.&lt;br /&gt;
Все авторские права принадлежат Дмитрию Белоусову. Мною выполнены мелкие правки (исправление опечаток).&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div align=&quot;right&quot;&gt;Дмитрий Белоусов&lt;br /&gt;
Последнее обновление: 02.02.2008&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Samba&lt;/b&gt; — это эффективный способ не только организовать взаимодействие компьютеров под управлением Windows и Linux, но и в сетях, состоящих только из Linux-машин он позволяет быстро организовать общий доступ к ресурсам. Файл конфигурации Samba может достигать огромной длины и учитывать множество параметров, однако в большинстве случаев достаточно гораздо меньшего количества настроек.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;I. Установка Samba&lt;/h3&gt;&lt;br /&gt;
Если мы хотим и расшаривать сами и иметь доступ к файлам на других компьютерах, то необходимо установить три пакета:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ sudo aptitude install samba smbclient smbfs&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;II. Настройка Samba&lt;/h3&gt;&lt;br /&gt;
1. Создайте резервную копию &lt;code&gt;/etc/samba/smb.conf&lt;/code&gt;:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup&lt;/code&gt;&lt;/div&gt;Теперь откройте файл &lt;code&gt;/etc/samba/smb.conf&lt;/code&gt; для редактирования в вашем любимом текстовом редакторе. Например так:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ sudo nano /etc/samba/smb.conf&lt;/code&gt;&lt;/div&gt;Все то, что там есть – нам не нужно. Можете отчистить файл полностью, и добавить, например, такую конфигурацию:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;[global]&lt;br /&gt;
workgroup = home&lt;br /&gt;
netbios name = desktop&lt;br /&gt;
server string = anonymous lan file server&lt;br /&gt;
security = share&lt;br /&gt;
browseable = yes&lt;br /&gt;
&lt;br /&gt;
[user]&lt;br /&gt;
path = /home/user&lt;br /&gt;
comment = mediafiles&lt;br /&gt;
readonly = No&lt;br /&gt;
guest ok = Yes&lt;br /&gt;
&lt;br /&gt;
[ftp]&lt;br /&gt;
path = /home/ftp&lt;br /&gt;
comment = ftpfiles&lt;br /&gt;
readonly = No&lt;br /&gt;
guest ok = Yes&lt;/code&gt;&lt;/div&gt;Теперь можете заменить информацию на свою:&lt;br /&gt;
&lt;code&gt;workgroup&lt;/code&gt; – это имя вашей сети, должно быть одинаковым для всех компьютеров, как рабочая группа в Windows.&lt;br /&gt;
&lt;code&gt;netbios name&lt;/code&gt; – имя вашего компьютера в сети, сделайте всем машинам уникальные, как имя компьютера в Windows.&lt;br /&gt;
&lt;code&gt;server string&lt;/code&gt; — описание компьютера, аналог подобного значения в Windows.&lt;br /&gt;
&lt;code&gt;security&lt;/code&gt; — определяет доступ к расшариваемым каталогам.&lt;br /&gt;
&lt;code&gt;browseable&lt;/code&gt; — хотите ли вы сделать доступными все подкаталоги рашариваемого каталога. Этот параметр также можно использовать отдельно для каждого расшариваемого каталога.&lt;br /&gt;
&lt;code&gt;path&lt;/code&gt; — путь до расшариваемого каталога. В данном конкретном примере будут расшарены домашний каталог пользователя user и домашний каталог пользователя ftp.&lt;br /&gt;
&lt;code&gt;comment&lt;/code&gt; — комментарий.&lt;br /&gt;
&lt;code&gt;readonly&lt;/code&gt; – только для чтения. Обратите внимание, что Samba может ограничить права пользователя, но не может расширить права, заданные системой. То есть если на рсшариваемом каталоге не стоят права на запись для всех в самой системе, Samba не сможет разрешить запись в него сторонним пользователям. Однако если на каталоге стоят права 777, то задав параметр &lt;code&gt;readonly = Yes&lt;/code&gt; вы сможете ограничить доступ на запись для пользователей, подключающихся из сети.&lt;br /&gt;
Аналогично вы можете создать любое количество сетевых каталогов.&lt;br /&gt;
&lt;br /&gt;
После завершения конфигурации выполните команду&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ testparm&lt;/code&gt;&lt;/div&gt;она автоматически проверит файл конфигурации. После этого перезагрузите Samba:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ sudo /etc/init.d/samba restart&lt;/code&gt;&lt;/div&gt;Обратите внимание, что после загрузки компьютеры не сразу появляются в сети, что связанно с особенностями протокола.&lt;br /&gt;
&lt;br /&gt;
Это простейшая конфигурация Samba, однако для большинства ситуаций ее вполне достаточно.</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/7146271092485893802/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2009/05/samba-debian-gnulinux-ubuntu-linux.html#comment-form' title='Комментарии: 28'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/7146271092485893802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/7146271092485893802'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2009/05/samba-debian-gnulinux-ubuntu-linux.html' title='Установка и настройка Samba в Debian GNU/Linux и Ubuntu Linux'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-4165504147474627222</id><published>2009-04-26T22:48:00.004+03:00</published><updated>2011-07-15T21:22:17.312+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Проприетарные драйвера от ATI: маленькое приключение</title><content type='html'>Я являюсь (почти) счастливым обладателем видеокарты ATI Radeon X550. Однажды я поставил проприетарные дрова в виде готовых бинарников, то есть без сборки .deb&#39;ов под свою систему (этого можно добиться, просто запустив .run-файл без каких-либо параметров). Через некоторое время захотелось вернуться на открытые дрова, вот только одно «но» — непонятно, как. Если бы я собирал .deb&#39;ы, то я просто удалил бы из системы установленные пакеты. Как же быть с установленными бинарниками, если у того же .run&#39;а нет параметров удаления, я не знал. До сегодняшнего дня.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;Но, как оказалось, среди устанавливаемых файлов присутствует сценарий удаления — &lt;code&gt;fglrx-uninstall.sh&lt;/code&gt;. У меня он находился вот здесь: &lt;code&gt;/usr/share/ati/fglrx-uninstall.sh&lt;/code&gt;. Его запуска вполне хватило для удаления проприетарного драйвера.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;P.S. Скрипт также возвращает ваш старый &lt;code&gt;xorg.conf&lt;/code&gt;.&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/4165504147474627222/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2009/04/ati.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/4165504147474627222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/4165504147474627222'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2009/04/ati.html' title='Проприетарные драйвера от ATI: маленькое приключение'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-5626651967374773055</id><published>2009-03-25T19:28:00.010+02:00</published><updated>2011-12-11T16:11:22.942+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mirror"/><title type='text'>Установка и настройка sudo в Debian GNU/Linux и Ubuntu Linux</title><content type='html'>Копия статьи с ныне мёртвого проекта debian-ubuntu-linux.ru.&lt;br /&gt;
Обратите внимание, что я всего лишь скопировал статью сюда — я не правил её, и не имею никакого отношения к её содержимому (более того, с некоторыми моментами я категорически не согласен). С другой стороны, я считаю эти статьи полезными для новичка, и потому копирую их.&lt;br /&gt;
Все авторские права принадлежат Дмитрию Белоусову.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div align=&quot;right&quot;&gt;Дмитрий Белоусов&lt;br /&gt;
Последнее обновление: 02.02.2008&lt;/div&gt;&lt;br /&gt;
…По умолчанию в &lt;strong&gt;Debian GNU/Linux&lt;/strong&gt; пакет &lt;strong&gt;sudo&lt;/strong&gt; отсутствует. Установка &lt;strong&gt;sudo&lt;/strong&gt; — это, по глубокому убеждению автора, перовое, что необходимо сделать после завершения установки базовой системы &lt;strong&gt;Debian GNU/Linux&lt;/strong&gt;. У пользователей &lt;strong&gt;Ubuntu Linux&lt;/strong&gt; &lt;strong&gt;sudo&lt;/strong&gt; установлен по умолчанию, однако тоже может потребовать конфигурации.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;I.Установка sudo из репозиториев Debian GNU/Linux.&lt;/h3&gt;Выполните команду:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;# aptitude install sudo&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;II.Базовая настройка sudo.&lt;/h3&gt;Sudo — очень гибкий инструмент, позволяющий настроить права на выполнения административных действий для каждого пользователя отдельно. Например одному разрешить перезагружать какой-либо сервер, а другому дать возможность менять права доступа к файлам и папкам. Откройте файл &lt;code&gt;/etc/sudoers&lt;/code&gt;. Это можно сделать либо отдав команду на открытие файла в вашем любимом текстовом редакторе, например так:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;# nano /etc/sudoers&lt;/code&gt;&lt;/div&gt;либо при помощи утилиты &lt;code&gt;visudo&lt;/code&gt;:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;# visudo&lt;/code&gt;&lt;/div&gt;Последний способ откроет файл &lt;code&gt;/etc/sudoers&lt;/code&gt; в редакторе пользователя по умолчанию, или если таковой не задан, то в редакторе vi. Преимущество данного способа в том, что при сохранении файл будет проверен на соответствие синтаксису.&lt;br /&gt;
&lt;br /&gt;
Простейшая конфигурация выглядит так:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;Defaults env_reset&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root ALL=(ALL) ALL&lt;br /&gt;
user ALL=(ALL) ALL&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Такая конфигурация дает пользователю user все права пользователя root при выполнении команды sudo. &lt;code&gt;Defaults env_reset&lt;/code&gt; полностью запрещает все пользовательские переменные при исполнении команд от имени root. Это хорошо с точки зрения безопасности, однако иногда вызывает проблемы. Можно разрешить использование личных переменных какой-либо группе или отдельному пользователю, добавив подобную этой строку:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;Defaults:%admin !env_reset&lt;/code&gt;&lt;/div&gt;которая будет сохранять переменные окружения для всех пользователей группы admin, или:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;Defaults:user env_keep=TZ&lt;/code&gt;&lt;/div&gt;которая сохранит переменную TZ для пользователя user.&lt;br /&gt;
&lt;br /&gt;
Если сервер администрируется группой людей, то имеет смысл поступить таким образом:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;%admin  ALL=(ALL) ALL&lt;/code&gt;&lt;/div&gt;Как можно догадаться, эта запись дает доступ к root-привилегиям всем членам группы admin.&lt;br /&gt;
&lt;br /&gt;
Можно настроить для каждого конкретного пользователя доступ только к конкретным командам. Например:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;user ALL = /bin/mount, /bin/kill&lt;/code&gt;&lt;/div&gt;даст пользователю user права на выполнение команд mount и kill с любой машины, а:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;user2 mydebiancomp = /sbin/modprobe&lt;/code&gt;&lt;/div&gt;даст пользователю &lt;code&gt;user2&lt;/code&gt; права на выполнение &lt;code&gt;modprobe&lt;/code&gt; с машины &lt;code&gt;mydebiancomp&lt;/code&gt;. Я думаю, что синтаксис понятен:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;пользователь хост = команда&lt;/code&gt;&lt;/div&gt;где команда прописывается с полным путем. Для группы все аналогично, только добавляется знак &quot;%&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;III.Продвинутые настройки sudo.&lt;/h3&gt;Очень удобно при настройке sudo создать группу алиасов. Чтобы не вбивать постоянно повторяющиеся команды, пользователей и хосты, мы можем собрать их в группы и устанавливать правила для каждой группы алиасов. Например так:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;Cmnd_Alias command_alias = command1, command2, ... // алиасы команд&lt;br /&gt;
Host_Alias host_alias = hostname1, hostname2, ... // алиасы хостов&lt;br /&gt;
User_Alias user_alias = user1, user2, ... // алиасы пользователей&lt;/code&gt;&lt;/div&gt;Далее именами алиасов можно оперировать точно также, как командами, машинами и пользователями, задавая правила.&lt;br /&gt;
&lt;br /&gt;
Исполнение команды от имени другого пользователя тоже возможно. Например при такой записи:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;user ALL = (user2, user3) /usr/bin/ark&lt;/code&gt;&lt;/div&gt;пользователь user может выполнить команду ark от имени user2 или user3, при помощи ключа u, например так:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;$ sudo -u user2 ark&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
По умолчанию sudo запоминает пароли на 5 минут. Если вы этого не хотите, то для каждого пользователя, группы или алиаса можете установить отдельное правило, например при:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;Defaults:user timestamp_timeout=0&lt;/code&gt;&lt;/div&gt;пароль полдьзователя user не будет запоминаться вообще, а при:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;Defaults:user timestamp_timeout=-1&lt;/code&gt;&lt;/div&gt;будет запоминаться на все время аптайма.&lt;br /&gt;
&lt;br /&gt;
Sudo без паролей также возможно. Для этого существует подобная конструкция:&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;code&gt;user myubuntucomp = NOPASSWD: /bin/kill&lt;/code&gt;&lt;/div&gt;которая даст возможность пользователю user с хоста myubuntucomp использовать kill без запроса пароля. Вставьте свои значения, например ALL вместо имени хоста и команды, чтобы пользователь user мог вообще никогда не вводить пароль для выполнения команд от имени root с любого хоста, однако помните, что это делает систему очень уязвимой.&lt;br /&gt;
&lt;br /&gt;
Надеюсь, что данной информации будет достаточно для настройки ограничений прав доступа при помощи &lt;code&gt;sudo&lt;/code&gt;.&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/5626651967374773055/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2009/03/sudo-debian-gnulinux-ubuntu-linux.html#comment-form' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/5626651967374773055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/5626651967374773055'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2009/03/sudo-debian-gnulinux-ubuntu-linux.html' title='Установка и настройка sudo в Debian GNU/Linux и Ubuntu Linux'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8622169542119587655.post-9087527295389450213</id><published>2009-02-15T12:06:00.008+02:00</published><updated>2011-07-15T21:24:36.066+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="holiday"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Debian GNU/Linux 5.0 released</title><content type='html'>&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd71QvIXpbnHQbTQgMwIO7OmPSCZZPHnKwcmxbBXM1WoNTJdEJvAu-NMK89S75iGraE6hBO3BdmozbPM3ck6GTVf26RXXmjfgvnJWpr5cw1TWSZgodI5rfPfVNJ7TQg0GeiZ9otFUe3S4/&quot; alt=&quot;The Universal Operating System — Debian 5.0&quot; style=&quot;margin-right: 10px; float: left;&quot; height=&quot;310&quot; width=&quot;380&quot;&gt;&lt;div&gt;Свершилось! Вышел в свет долгожданный релиз самого лучшего в мире дистрибутива — Debian GNU/Linux 5.0 &quot;Lenny&quot;!&lt;br /&gt;&lt;br /&gt;Новость на русскоязычной главной страничке почему-то не появилась, на английской же &lt;a href=&quot;http://debian.org/News/2009/20090214&quot;&gt;висит ещё со вчерашнего дня&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Поздравляю разработчиков, пользователей и всех остальных с этим замечательным событием!&lt;br /&gt;&lt;br /&gt;P.S. Не забудьте прочитать &lt;a href=&quot;http://debian.org/releases/lenny/releasenotes&quot;&gt;release notes&lt;/a&gt; перед обновлением.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debiania.blogspot.com/feeds/9087527295389450213/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://debiania.blogspot.com/2009/02/debian-gnulinux-50-released.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/9087527295389450213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8622169542119587655/posts/default/9087527295389450213'/><link rel='alternate' type='text/html' href='http://debiania.blogspot.com/2009/02/debian-gnulinux-50-released.html' title='Debian GNU/Linux 5.0 released'/><author><name>Minoru</name><uri>http://www.blogger.com/profile/15979236009981641914</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpS7iexawQTsD6YwsC1Mo-E2nzK3txn-2kNpOnk2Pug-SYRp_MeISN2UW2_SZqZAUEXcHYq3XU3z7MD4-M20Cz3rBiujw79Yya3zJTq5guC6P6_X-wQkLKXT84FuV9g/s220/Programmaster_80x80.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd71QvIXpbnHQbTQgMwIO7OmPSCZZPHnKwcmxbBXM1WoNTJdEJvAu-NMK89S75iGraE6hBO3BdmozbPM3ck6GTVf26RXXmjfgvnJWpr5cw1TWSZgodI5rfPfVNJ7TQg0GeiZ9otFUe3S4/s72-c" height="72" width="72"/><thr:total>5</thr:total></entry></feed>