Компиляция пакетов

В Ubuntu используется философия пакетного менеджмента, то есть все программы ставятся из пакетов deb, в которых хранится, собственно сама программа и скрипты, которые корректно ставят/удаляют/обновляют. Пакеты deb можно найти в сети Интернет, на дисках. Самый лучший способ использовать репозитории, хранилища deb пакетов. Если использовать репозитории, то при появлении в них новых версий установленных у вас программ, вам будет проще и быстрей обновить их. Это очень удобно и позволяет держать систему актуальной и защищенной. Иногда требумой программы в репозитариях нет и приходится компилировать из исходников. Но это надо делать правильно.
Сегодня я хочу предложить изящный метод, не раз помогавший мне.

Итак, приступим.


1)Установим программу auto-apt командой
sudo apt-get install auto-apt
2)Командой cd переходим в директорию с распакованными исходниками и применяем команду
sudo auto-apt update && auto-apt -y run ./configure
Эта команда автоматически скачает и установит все необходимые файлы и библиотеки, т. е. удовлетворит все зависимости.
3)Теперь командой sudo checkinstall -D создадим deb-пакет, использующийся в дистрибутивах основанных на Debian, например Ubuntu.
4)Теперь этот пакет можно устанавливать: либо командой
sudo dpkg -i pocket_name.deb
Либо двойным щелчком по пакету.
5)Всё вышенаписанное применимо к основанным на Debian дистрибутивах.
Также если запустить sudo checkinstall -R получим rpm-пакет, применяемый в Fedora, RHEL, ASP Linux, ALT Linux, Mandriva, openSUSE.
Если же запустить sudo checkinstall -S получим пакет применяемый в Slackware.
В этих двух случаях конечная установка может отличаться.Если у кого-то есть замечания или уточнения-пишите, это пойдёт только на пользу дела.

Заключение.

Это метод удобен тем что make install не использовался и этим методом мы не вмешиваемся в пакетную систему дистрибутива.Этот метод достаточно элегантен и удобен тем созданный deb-пакет можно корректно удалить или заменить более новой версией.Также это истинно и для других форматов пакетов, созданных командой sudo checkinstall с нужным параметром.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 43
  • 0
    checkinstall как то сам умеет подхватывать все зависимости? Или ручками вписывать?
    • 0
      ./configure вывалится с ошибкой, если будут неудовлетворенные зависимости.
      • 0
        Я имел в виду чтобы потом другим передать этот пакет и они не думали каких еще пакетов им не хватает для запуска, т.е. чтобы в deb пакете заполнилось поле с требуемыми пакетами.
        • +1
          Насколько я помню, checkinstall предлагает заполнить 10 полей, с зависимостями в том числе, вручную.
          • 0
            Да вот как раз руками и не хочется заполнять поле с зависимостями. Когда для себя делаешь — фиг с ним, т.к. все нужные пакеты поставились еще до компиляции, а вот кому то надо передать это и фигня выходит.
      • 0
        checkinstal — это фактически make install в fakeroot с записью действий и последующей сборкой пакета. Этакий quick&dirty для сборки пакетов.
      • 0
        Второй командой мы удовлетворили зависимости.Насчёт вашего вопроса-вроде да.
        • +3
          Такое ощущение, что сообщение писалось на скорую руку.
          • 0
            Да.это фактически так.
            • 0
              такое ощущение, что смотрите на форму а не на содержание.
              Спасибо автору, было полезно
              • 0
                Рад стараться.Ведь знание заточённое-бесполезное знание.
            • 0
              Я так понимаю что auto-apt тут нужен только в том случае если такого пакета нет в репозиториях?
              Иначе зависимости можно устанавливать просто через apt командой
              apt-get build-dep имя-пакета
              • 0
                Иногда требумой программы в репозитариях нет и приходится компилировать из исходников.
                • 0
                  Ну да, я частенько компилирую и те которые есть)) Например захотелось кастомный nginx или еще что-то…
              • 0
                Правильно понимаете.
              • 0
                С KTorrent как я понимаю данный фокус не пройдет? Он через cmake без ./configure собирается, то есть на втором пункте уже загвоздка получается
                • 0
                  После make выполнить sudo checkinstall -D (R или S) и установить пакет. cmake не для сборки нужен, а для генерирования makefile или какая там у Вас система.
                  • 0
                    Имел ввиду, что в случаи с cmake все равно придется самому с необходимыми библиотеками для сборки копаться, или все же есть метод для автоматического нахождения и установки?
                    • +1
                      sudo apt-get build-dep ktorrent
                      Это поможет. Хотя если в качестве wm используется KDE, предложенные пакеты уже будут присутствовать.
                      • +1
                        Я про сборку а не про библиотеки для работы. Буквально на днях на Kubuntu 12.04 появилась необходимость его обновить, в репозитариях последняя версия 4.1.3. Пришлось качать исходники с офф сайта и собирать, но тк на Kubunte еще ни разу в жизни ничего ручками не собирали cmake раз 10 ругался на отсутствие библиотек и инструментов для сборки. Собственно вопрос как раз об этом, есть ли возможность автоматически выкачивать и ставить необходимые для сборки библиотеки/инструменты? Я так понял sudo auto-apt update && auto-apt -y run ./configure на основе configure этим и занимается?
                        • 0
                          А я Вам о чем. Это же build-dep.
                          • 0
                            Или Вы про build-essential? Он и так должен быть установлен перед сборкой)
                          • 0
                            auto-apt делает тоже, что и apt-get build-dep, но может использоваться и для пакетов, отсутствующих в репозитории.
                            • 0
                              Разве apt-get build-dep ktorrent знает что необходимо для сборки KTorrent из исходников? Мне всегда казалось она найдет только то, что необходимо для работы с данным пакетом. Если не прав, то прошу прощения.
                              • +1
                                Знает, ведь ktorrent присутствует в репозитории. То, что нужно для работы, установится по apt-get install.
                    • 0
                      Иногда бывают разные случаи.Всё зависит от авторов программы.Всё нужно рассматривать индивидуально.Единого пути нет.Большинство-укладывается в подобный путь.Большего и не надо.
                    • +9
                      • –1
                        make не используется в данном случае. Хотя да, checkinstall и с make можно использовать.
                      • +1
                        >3)Теперь командой checkinstall -D создадим deb-пакет.

                        Не спортивно!
                        • +1
                          Извините, иногда некоторым важней результат, чем процесс.Мне тоже нравятся TRUE'шные решения.Предложите свой вариант-пусть и другие узнают.Все только выиграют от этого.
                          • 0
                            раньше под слаку пакеты делал именно чекинсталлом, но он имеет некоторые недостатки…

                            а по поводу пакетов под убунту то тут вполне исчерпывающая статья на тему сборки пакета.
                        • 0
                          checkinstall также умеет rpm и tgz, не только deb.
                          • –2
                            А где статья?
                            Тут приведен просто лог установки без объяснений.
                            • 0
                              Почему же.Всё объясняется, правда не очень подробно.
                            • +2
                              > Теперь командой sudo checkinstall -D создадим deb-пакет, использующийся в дистрибутивах основанных на Debian, например Ubuntu.
                              > Теперь этот пакет можно устанавливать: либо командой sudo dpkg -i pocket_name.deb

                              Неправильно. Команда

                              sudo checkinstall -D

                              уже установит пакет, устанавливать его отдельной командой не нужно.
                              • –1
                                Реально пора вводить пометку уровня поста (для начинающих, для специалистов и т.д.) на хабре, т.к. заходишь, думаешь что-то новое прочитать, а получаешь то, что уже давно известно :(
                                • 0
                                  deleted (глупость сморозил)
                                  • 0
                                    Это конечно все круто, но не вижу альтернатив для rpm-based систем.
                                    • +1
                                      Также если запустить sudo checkinstall -R получим rpm-пакет, применяемый в Fedora, RHEL, ASP Linux, ALT Linux, Mandriva, openSUSE.
                                      • 0
                                        checkinstall в репозиториях федоры не вижу. Не все сидят под бубунтой.

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.