Сборка приложений из исходного кода в Ubuntu

    Вообще, в производных от Debian системах, в число которых входит и Ubuntu, не принято собирать приложения из исходных кодов. Этого, зачастую, можно избежать, потому как в репозиториях полно различных приложений, на все случаи жизни. По некоторым сведениям, их больше, чем во всех остальных распространённых дистрибутивах линукса.

    Два простых пути для установки приложений из меню, мышкой:

    • ПриложенияУстановка/удаление…
    • СистемаАдмининстрированиеПрограмма управления пакетами Synaptic
    В первом интерфейсе все приложения снабжены своей иконкой, а так же небольшим сопроводительным текстом-описанием и рейтингом (статистика собирается анонимно со всех пользователей, которые разрешили использовать их данные). Во втором интерфейсе есть абсолютно все пакеты, однако в нём проще запутаться и поставить или удалить не то, что требуется.

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

    ./configure
    make
    sudo make install
    Кратко о каждой из этих команд

    ./configure

    Эта команда подготавливает исходные коды к компиляции под конкретную платформу, а именно в вашей операционной системе. Она проверяет налицие необходимых программ (компиляторов, сборщиков и т. п.), библиотек, а так же заголовочных файлов (something.h). Достаточно часто случается, что в вашей системе недостаёт какого-нибудь необходимого приложения, либо файла заголовков, необходимого для компиляции программы. В таком случае, эта команда выведет сообщение об ошибке. Если у вас достаточный опыт, то вы, конечно же, легко определите, что заголовочный файл some_extra_thing.h находится в пакете extra_things_for_cool_nerds-dev, однако не всегда просто определить, что именно хочет от вас программа, чего ей не хватает.

    Тогда нам на помощь придёт утилита под названием auto-apt. Она хранит информацию о заголовочных файлах, которые имеются в репозиториях и поможет вам найти, в каком пакете хранится тот или иной заголовочный файл.

    Если ./configure вывела вам сообщение о недостаче заголовочного файла Xlib.h, воспользуйтесь командой

    auto-apt search Xlib.h
    Она ответит вам следующим:
    usr/include/X11/Xlib.h libdevel/libx11-dev
    Это обозначает, что нужный вам файл содержится в пакете libx11-dev, относящемся к категории libdevel (пакеты для разработки) и после установки пакета (sudo apt-get install libx11-dev) будет лежать по адресу usr/include/X11/Xlib.h

    Есть ещё более простой путь вызова ./configure, который сам предложит вам установить все необходимые пакеты

    auto-apt run ./configure
    Вам нужно будет только следить за процессом установки и изредка нажимать Y для установки необходимых пакетов.

    make

    Это вторая и, пожалуй, главная команда из этой триады. Она выполняет компиляцию и сборку всех необходимых компонентов системы. Если ошибка появляется во время выполнения этой команды, скорее всего ошибка в коде, который вы пытаетесь собрать. В таком случае, остаётся только обратиться к разработчику программы. Но обычно, после успешного выполнения ./configure, здесь ошибок не бывает.

    make install

    Этой командой вы устанавливаете приложение. Если вы хотите установить её для всех пользователей, общесистемно, вам необходимы права пользователя root. В Ubuntu это решается вызовом этой команды после sudo, то есть
    sudo make install
    НО! При установке этим путём, вы можете нарушить целостность системы, поскольку эта команда не сохранит данные о том, какие файлы и куда были установлены. Таким образом, удаление этой программы сможет принести вам много мороки. Чтобы облегчить возможноые страдания, была написана утилита под названием checkinstall. Она проверяет, что и как хочет сделать команда make install, а потом собирает по полученным сведениям deb-пакет и устанавливает его в систему (то есть, для удачного выполнения этой команды ей так же нужны права суперпользователя). Благодаря этому, вы сможете потом легко удалить ненужное вам более приложение, используя например Synaptic, упоминавшийся в начале статьи.

    Установка программ в пользовательский каталог

    Бывает, что некоторые программы не нужны общесистемно, тогда нужно на этапе конфигурирования указать, что программа будет устанавливаться в пользовательский (или иной) каталог. Для этого, обычно, первая команда видоизменяется следующим образом:
    ./configure --prefix=/home/$USER
    Тогда команду make install нужно вызывать без префикса sudo.

    Выводы

    Для упрощения установки программы из исходных кодов, в Ubuntu вы можете воспользоваться немного изменённым набором команд:
    auto-apt run ./configure
    make
    sudo checkinstall
    для установки общесистемной, либо:
    auto-apt run ./configure --prefix=/home/$USER
    make
    make install
    для установки в пользовательский каталог.

    Разработка сайтов в Ubuntu или LAMP = Ubuntu + Apache + MySQL + PHP

    Ubuntu - это линукс для людей. Поэтому, установка набора для веб-разработчика в нём производится одной командой:

    sudo tasksel install lamp-server
    После её выполнения, на вашем компьютере обоснуются Apache, MySQL и PHP. А мы сразу же займёмся созданием первого сайта.

    Все сайты, над которыми тружусь, я храню в папках вида ~/Sites/www.example.com.dev/. Это удобно, потому как не приходится настраивать права доступа к файлам и придумывать структуру папок в /var/www/, а так же каждому из них можно выделить человекочитаемое имя, оканчивающееся на .dev (которое соответствует названию папки), и при разработке и тестировании набирать в адресной строке браузера www.rotuka.com.dev и попадать на локальную версию вашего сайта.

    Создание и настройка текстового сайта

    Допустим, мы приступаем к разработке сайта rotuka.com, тогда создадим для него личную папку
    mkdir -p ~/Sites/rotuka.com.dev/public
    Теперь, нам нужно рассказать нашему локальному апачу об этом сайте. Создаём файлик для этого сайта:
    sudo gedit /etc/apache2/sites-available/rotuka.com.dev
    и вписываем в него следующие строки:
    <VirtualHost *:80>
        ServerName rotuka.com.dev
        ServerAlias www.rotuka.com.dev
        DocumentRoot /home/$USER/Sites/rotuka.com.dev/public
    </VirtualHost>
    где $USER нужно заменить на ваше имя пользователя.

    Сохраняем файл, закрываем gedit и говорим апачу, что этот сайт теперь нужно обслуживать:

    sudo a2ensite rotuka.com.dev
    При выполнении, эта команда скажет вам, что апачу необходимо перезагрузить данные конфигурации, что мы и сделаем:
    sudo /etc/init.d/apache2 reload
    Теперь, настроим удобное обращение к сайту. Для этого пропишем, что хост rotuka.com.dev обслуживается на нашем компьютере, локально. Открываем файл /etc/hosts
    sudo gedit /etc/hosts
    находим там строку, начинающуюся на 127.0.0.1 (обычно, это первая строка) и вписываем в её конец, через пробел от предыдущих данных, rotuka.com.dev. Сохраняем файл, закрываем редактор.

    Теперь кидаем какой-нибудь файлик index.html в папочку нашего сайта (/home/$USER/Sites/www.rotuka.com.dev/public) или выполняем команду

    echo -e "<html>\n  <head>\n    <meta http-equiv="Content-type" content="text/html;
    charset=utf-8" />\n    <title>Тестовый сайт</title>\n  </head>\n  <body>\n
    <h1>Тестовый сайт</h1>\n    <p>Привет, веб-разработчик</p>\n  </body>\n</html>\n"
    > /home/$USER/Sites/rotuka.com.dev/index.html
    Всё, теперь уже можно вписать в адресную строку браузера http://rotuka.com.dev/ и увидеть, что сайт вас приветствует (-:

    Ссылки по-теме:

    Wacom Bamboo One + Ubuntu. Установка и решение проблем

    Вчера мне в руки попал планшетик Wacom Bamboo One. Забавная вещица. Если её установить (-;

    Страница руководства, посвящённая Wacom посылает нас на довольно подробное руководство по установке и настройке последних драйверов для линейки Bamboo, которое приведёт вас к вполне рабочему тандему Бамбук+Убунту, однако если вы используете терминал, либо постраничный поиск в файрфоксе, либо вы просто любите системный звук ошибки - вы получите много проблем. Ибо теперь каждый вызов системного сигнала будет приводить к перезагрузке иксов.

    Решения этой проблемы гугл не знает. Яндекс, кстати, тоже. И лишь кустарные методы позволят использовать. Чтобы лишить себя проблем (хотя бы временно), выполните следующие действия:

    1. Откройте настройку звука (Система -> Параметры -> Звук) и на вкладе “Системный сигнал” снимите галочку с параметра “Включить системный сигнал” и поставьте галочку “Визуальный системный сигнал”, чтобы вместо звука сигнал был произведён путём мигания какой-либо области экрана.
    2. Запустите терминал (Приложения -> Стандартные -> Терминал), выберите в меню Правка -> Текущий профиль… и снимите галочку с параметра “Подавать гудок
    3. Запустите Firefox (Приложения -> Интернет -> Firefox Web Browser) и введите в адресной строке about:config. Затем найдите параметр accessibility.typeaheadfind.enablesound и поставьте ему значение false.

    Установка Ruby on Rails в Ubuntu (для разработки)

    Я постараюсь поддерживать эту статью в актуальном состоянии. На данный момент, все действия, описанные в статье, актуальны для следующих версий ПО:

    • Ubuntu Karmic Koala (9.10)
    • Ruby 1.8.7 (2009-06-12 patchlevel 174)
    • Rubygems 1.3.5
    • Ruby on Rails 2.3.4

    Установка Ruby

    В репозиториях Убунту лежит актуальная версия интерпретатора Ruby, поэтому для установки Ruby хватит одной стандартной команды:
    sudo apt-get install ruby-full build-essential libruby-extras libsqlite3-ruby

    Установка Rubygems

    1. RubyGems в репозитории Ubuntu Karmic пока актуальные, поэтому можно смело ставить из репозитория командой:
      sudo apt-get install rubygems
    2. Однако, если вы предпочитаете ручную установку RubyGems, воспользуйтесь следующими командами:
      wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
      tar xzvf rubygems-1.3.5.tgz
      cd rubygems-1.3.5
      sudo ruby setup.rb
      sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
      Для того, чтобы у вас заработало дополнение команд в консоли, необходимо открыть файл настроек дополнения
      sudo gedit /etc/bash_completion.d/gem1.8
      И вставить в начало этого файла, сразу после комментариев, следующий код:
      have()
      {
        unset -v have
        PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type $1 &>/dev/null &&
        have="yes"
      }
      А в самый конец вставить:
      [ -n "${have:-}" ] && complete -F _gem18 $filenames gem
      Теперь вы в консоли сможете набирать gem i и консоль будет сама дополнять команду до gem install,

      Если же у вас уже была установлена более старая версия Rubygems, вы можете обновить её до текущей:

      sudo gem update --system
      Иногда, после обновления этой командой, gem может начать выдавать ошибку:
      /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)
      Для её устранения, необходимо отредактировать исполняемый файл (sudo gedit /usr/bin/gem) и перед строкой require "rubygems" вставить строку require "rubygems/gem_runner"

    Установка Rails

    Теперь, когда нас установлены актуальные версии интерпретатора и менеджера гемов, мы можем присутпить к установке самих Rails.
    sudo gem install rails
    Всё, рельсы установлены. Чтобы проверить, что всё в порядке, создадим приложение на рельсах:
    cd ~
    mkdir Sites
    cd Sites
    rails my_first_site
    cd my_first_site
    ./script/server
    Эти команды создадут в вашей домашней директории поддиректории Sites, а в ней, в директории my_first_site rails-приложение, после чего запустит стандартный сервер WEBrick, поставляемый вместе с интерпретатором Ruby. Если установка прошла без ошибок, то вы сможете увидеть приветствие рельсов, пройдя по ссылке http://127.0.0.1:3000/.

    Установка дополнительных гемов

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

    Если для вас не обязательно наличие самой последней версии этого гема, вы можете ограничиться командой

    sudo apt-get install librmagick-ruby
    Если же вы захотите установить самую последнюю версию этого гема, вам нужно будет скачать исходные коды для библиотек ImageMagick (а они потянут за собой много-много других библиотек). Скорее всего, для вас это излишне. Но команды напишу:
    sudo apt-get install libmagick9-dev
    sudo gem install rmagick
    Ещё лично я советую поставить вам несколько плагинов, которые облегчат вам жизнь при работе с Rails вдальнейшем. Установка одной командой:
    sudo gem install mongrel BlueCloth RedCloth sqlite3-ruby ZenTest
    И о каждом геме поподробнее:
    • mongrel — более быстрый, чем WEBrick сервер, написанный специально для работы с Rails. Если н установлен, то по команде ./script/server рельсы станут запускать именно его.
    • BlueCloth и RedCloth — библиотеки, используемые рельсовыми хелперами markdown и textilize соответственно для разметки текста.
    • sqlite3-ruby — библиотека для работы с базами sqlite3 (которые создаются по-умолчанию при создании рельсового приложения).
    • ZenTest — набор утилит для автоматического тестирования приложения. По команде autotest запускается тестирующий демон, который будет проверять все изменённые файлы, пробегая связанные с ними тесты. Об этой утилите я напишу позже

    Настройка GTalk в Kopete (KDE4)

    Сегодня поставил на своём лаптопе Kubuntu KDE4 и столкнулся с проблемой при настройке GTalk в Kopete. При соединении выдавалась ошибка «SSL support could not be initialized for account user@example.com. This is most likely because the QCA TLS plugin os not installed on your system».

    Первым делом я, естественно, попытался решить эту проблему путём установки этого самого QCA TLS, довольно логично, не правда ли? Тем более, что и пакетик в репозиториях нашёлся одноименный.

    sudo apt-get install qca-tls

    После этого перезапускаю Kopete и… вылетает та же самая ошибка. Перечитываю сообщение об ошибке, вижу замечание о плагине и после непродолжительного поиска по пакетам, выполняю

    sudo apt-get install libqca2-plugin-ossl

    После этого перезапускаю Kopete и… вуаля, всё заработало.

    Кстати, не лишним будет напомнить, что для общения с вашего аккаунта GTalk из Копете необходимо выставить следующие настройки:

    1. При создании аккаунта выбрать протокол Jabber
    2. В качестве Jabber ID ввести ваше имя пользователя, вместе с доменным именем, то есть username@gmail.com или username@example.com если вы используете Google Apps на домене вашей организации и т. п.
    3. В параметрах соединения (Вкладка Connection) поставить все три галочки: Use protocol encryption (SSL); Allow plain-text password authentication; Override default server information
    4. Выставить в качестве имени сервера talk.google.com, порт 5223.
    Этих настроек должно быть вполне достаточно для комфортной работы. Не забудьте установить поддержку QCA TLS, если выскочит ошибка. Одной командой это делается так:

    sudo apt-get install qca-tls libqca2-plugin-ossl

    Неделя на Рельсах (выпуск от 10 сентября 2008 г.)

    Перевод. Оригинальная статья: This Week in Rails (September 10, 2008), за авторством Gregg Pollack

    Добро пожаловать в пятый выпуск «Недели на рельсах», еженедельный отчёт о событиях в околорельсовом сообществе. Antonio Cangiano (автор идеи) был весьма занят, поэтому на этой неделе я решил его подменить.

    Вы, скорее всего, уже слышали о выходе Rails 2.0.4 и Rails 2.1.1. Оба релиза — в основном исправляют ошибки, за подробностями отправляйтесь в списки изменений.

    Если ваше приложение на Рельсах использует много тяжёлых SQL запросов, вы скорее всего захотите взглянуть на плагин от Fernando Blat, называемый Query memcached. Этот плагин замещает стандартную функциональность Рельсов по кешированию результатов запросов к базе, сохраняя их в memcached для использования в последующих запросах.

    Вы когда-нибудь пытались реализовать «продвинутый поиск» в приложении на Рельсах? И скорее всего, ваши контроллеры от этого весьма разжирели. Одно из решений этой проблемы — Searchgasm от Binary Logic — плагин, объектно-ориентированная обёртка вокруг запроса к базе, благодаря которой код ваших контроллеров останется простым и коротким.

    Ryan Daigle рассказал нам о новых фишках, введённых в новейших ревизиях кода Рельс: Connection Pooling (количество соединений с базой данных), Shallow Routes («уплощение» маршрутов к вложенным ресурсам), а так же Mailer Layouts («обёртки» для сообщений электронной почты). Совсем скоро мы увидим кандидата в релиз Рельс 2.2, поэтому следите за новостями.

    Для ваших друзей Java-программистов, использующих Apache Derby, которые хотят опробовать JRuby, Michael Galpin написал введение в Рельсы с использованием JRuby и Derby.

    На прошлой неделе Last week Mark Imbriaco из компании 37 Signals объединил собрал отличную статью и скринкаст о том, как они используют HAProxy на сервере. Если вы ещё не в курсе преимуществ использования HAProxy перед apache round robin load balancer, обязательно посмотрите скринкаст.

    Возможно, вы стали использовать jQuery вместо Prototype в Рельсовых приложениях. Вы могли использовать для этого плагин (например, jQuery on Rails), но если вы начали с нуля, то наверняка заработали много проблем с отправкой отметок аутентификации (authenticity tokens) в ваших AJAX-запросах. Lawrence Pit описал код jQuery, который вам необходим чтобы избежать дальнейших проблем.

    Neverblock — это библиотека, которая позволяет использовать Нити Ruby (Ruby Fibers) для записи не-блокирующего конкуррентного кода. В рамках этого проекта недавно был выпущен не блокирующий адаптер PostgreSQL, не блокирующий адаптер MySQL, и совсем недавно библиотеку для использования их Нитей на Ruby 1.8 совместно с Рельсами с ошеломляющими результатами тестов производительности! Этот проект очень молод, однако это ещё один шаг к безопасным мульти-поточным Рельсам.

    Наконец, я хочу рассказать о нескольких событиях. Ruby DCamp состоится 11-12-го октября в Арлингтоне, Rails Summit Latin America будет проходить 15-го и 16-го октября в Сан-Пауло, в Бразилии, а также South Carolina Ruby Conference пройдёт 18-го октября в Колумбии.

    Спасибо за чтение! Если вы предпочитаете слушать эти новости (с незначительными уточнениями), обратите внимание на подкаст № 46 Rails Envy, который вышел сегодня. Это не ошибка, что подкаст охватывает ту же информацию, что и данная статья, потому что я принимал участие в его создании.

    Gnome Do

    Первой статьёй решил описать небольшую утилитку, которой пользуюсь ежедневно и, даже, ежеминутно. Имя ей — Gnome Do.

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

    Потратил на её изучение примерно 20 минут (это с учётом настройки дополнительных плагинов, о них позже), после этого забыл о стандартном меню в Убунту.

    Чем же эта программа хороша?

    Она позволяет быстро и эффективно запускать установленные приложения
    Нажмите Win(Super) + Пробел и вводите название желаемого приложения. При этом, она использует не только название исполняемого файла (например, firefox, pidgin или gimp), но также и привычное название этой программы, написанное в вашем меню. Таким образом, не важно, каким редактором текста вы пользуетесь. Достаточно начать набирать «Редактор текста», и Gnome Do сразу предложит вам запустить один из установленных редакторов. Кроме того, вы можете начать набирать название не с начала, а с того слова, с которого захотите, например «Редактор текста», Ду всё равно найдёт нужное приложение.
    Ду запоминает, какие приложения вы используете чаще
    Значит, если у вас, к примеру, установлено несколько почтовых агентов, и когда вы начали набирать слово «почта», Ду предложит вам Evolution, в то время, как вы предпочитаете Thunderbird, вы сможете нажать кнопку и Ду откроет список найденных результатов, в котором вы выберете Thunderbird. Всё! В следующий раз Ду будет предлагать в качестве первого результата Thunderbird.
    Ду не замечает ваших ошибок!
    Если вы случайно опечатаетесь и начнёте писать pigin вместо Pidgin, Ду догадается об этом и предложит именно то, что вы хотели написать
    Продолжение скоро последует. Вот, высплюсь… ((-:

    Привет, рунет!

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

    Может быть, со временем, не только об Убунте. Да всё может быть со временем. Увидим (-:

Подпишитесь на статьи с помощью РСС или Атом .