Linux пакеты для make

Компиляция и установка пакетов из исходного кода с помощью Make

Вступление

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

Данное руководство охватывает вопросы компиляции и установки cURL из исходного кода. Использованный здесь синтаксис применим на большинстве дистрибутивов.

Требования

Для компиляции исходного кода в Linux нужен пакет «build-essential» (в системах на основе Debian) или «Development Tools» (CentOS); данные пакеты содержат компиляторы и библиотеки gcc/g++.

Чтобы установить пакет на Debian и Ubuntu, используйте:

apt-get install build-essential

yum groupinstall «Development Tools»

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

Перед компилированием cURL установите все необходимые зависимости. Также на используемом сервере нужно иметь привилегии root или sudo для установки и компилирования исходного кода.

Извлечение и компилирование исходного кода на VPS

Загрузка Tarball

Для начала нужно скачать исходный код cURL. Существует множество способов это сделать, но в данном руководстве используется tarball, доступный на сайте cURL. При желании URL в следующей команде можно заменить на URL текущей версии cURL, но при этом нужно помнить, что это должна быть ссылка на файл «tar.gz». Запустите:

Это скачает и сохранит исходный код как curl.tar.gz в текущем каталоге.

Теперь нужно извлечь tarball. Для этого запустите:

tar -xvzf curl.tar.gz

Исходный код будет расположен в папке по имени «curl-» с номером версии. При вводе:

будет выведен подобный результат:

/curl ls
curl-7.32.0 curl.tar.gz

В данном случае папка называется «curl-7.32.0», следовательно, чтобы войти в эту папку, нужно ввести:

Конфигурирование и компилирование исходного кода

В этой папке можно найти множество разных файлов. На данный момент нужно обратить внимание на файл «configure». Это скрипт, созданный для того, чтобы помочь запустить программу на различных компьютерах. Запустите:

Это автоматически использует переменные текущей системы, чтобы подготовить исходный код для данного VPS. В основном эта команда проверяет, соответствуют ли библиотеки, установленные в системе, тем, что нужны программе. Данное действие указывает компилятору, где искать библиотеки, нужные исходному коду, в данном случае cURL. Кроме того, данное действие определяет, куда впоследствии установить пакет. По завершению будет создан файл Makefile со всей нужной в нем информацией. Теперь все готово для компилирования исходного кода. Для этого запустите команду:

В результате этого действия будет выведено много лишней и непонятной информации на консоль. Подождите, пока это закончится. Это займет около минуты. По завершению нужно установить исходный код. Запустите как root:

Теперь make будет следовать инструкциям в «Makefile», чтобы установить скомпилированные пакеты. В большинстве случаев это все, что нужно для установки. Теперь можно ввести curl. Если cURL был установлен верно, будет выведен примерно такой результат:

curl: try ‘curl —help’ or ‘curl —manual’ for more information

При извещении об ошибке bash введите:

ln -s /usr/local/bin/curl /usr/bin/curl

Это создаст ссылку на /usr/bin/curl, которая соединяется с /usr/local/bin/curl. Это позволит запустить cURL, просто введя curl в консоль. Обычно это выполняется автоматически, но в некоторых случаях скрипт конфигурации не может найти нужное местоположение установки. Теперь можно ввести:

Это запустит текущую версию cURL. Выведенный результат имеет примерно такой вид:

/curl curl -V
curl 7.32.0 (x86_64-unknown-linux-gnu) libcurl/7.26.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: Debug GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

Читайте также:  Windows powershell web access

Готово! cURL был успешно скомпилирован и установлен из исходного кода.

Действия, описанные в данном руководстве, подходят для большинства дистрибутивов, следовательно, их можно выполнить для компилирования исходного кода других пакетов. Тем не менее, всегда нужно заранее знакомиться с документацией пакета. Она, как правило, содержит информацию о необходимых зависимостях, и даже иногда подсказывает, какие команды нужно использовать.

Запомните последовательность: ./configure, затем make, а затем make install.

Источник

Какие пакеты необходимо установить для программирования

Изучаю (точнее, повторяю) C/C++ по книге http://www.opennet.ru/docs/RUS/zlp/. Установил пакет gcc. Для сборки программ мне нужно установить ещё пакет make (он не установился вместе с gcc; кажется, и не должен был). В самом пакете gcc, как я понял, есть только компилятор C, C++ нет. Тогда мне нужно установить ещё и компилятор C++. Это пакет g++?

Какие вообще (ещё) пакеты нужны для разработки программ? Пакета build-essential, как в Debian, в моём дистрибутиве (Mageia) нет.

Дистр у тебя какой? В Ubuntu есть метапакет build-essential, где все нужные пакеты для базовой сборки софта уже есть.

Пакета build-essential, как в Debian, в моём дистрибутиве (Mageia) нет

Ну пусть скажет, что у него. Ну и надо в теги добавить, чтобы прибежали те у кого он стоит.

Поставь какое-нибудь IDE, типа KDevelop, по идее, оно притянет всё, что тебе нужно

Какие вообще (ещё) пакеты нужны для разработки программ?

минимально g++, он подтащит необходимый минимум по зависимостям.

дальше ставить нужные библиотеки, которые нужны в твоем проекте.

Ну пусть скажет, что у него
в моём дистрибутиве (Mageia)

Mageia у него дистр. Тот, что теперь вместо Мандривы

make, autoconf, automake, g++, *-dev пакеты для библиотек, которые будешь использовать

В Mageia он называется gcc-c++. Во всех RPM дистрах это так?

6 лет прошло, какбэ)

обана! они живое!

Я думал окуклилось давно и уже протухло.

Чёрт, плавит меня уже под конец дня 🙁

Пакета build-essential, как в Debian, в моём дистрибутиве (Mageia) нет

Есть пакет task-c++-devel

В Mageia он называется gcc-c++. Во всех RPM дистрах это так?

это не зависит от рпмнутости дистров. каждый мантайнер называет пакеты как хочет / как ему диктуют правила конкретного дистра.

Вообще странный выбор книги. Книга ни по C, ни по C++. По программированию под *nix — маловата. Может стоит уточнить цели и литературу?

Какие вообще (ещё) пакеты нужны для разработки программ?

Зависимости этих программ, которые у них должны быть написаны в каком-нибудь readme.txt.

Я ещё Mandrake с KDE1 помню, для меня оно всё относительно недавно

поставь debian и не мучайся. потом ставь qtcreator. потом можешь читать «Программирование на языке С++ в среде Qt Creator». там про c++ тоже достаточно. пиши сразу что-нибудь нужное тебе.
не спрашивай только, как ставить debian или qtcreator.
не благодари.

Вообще странный выбор книги. Книга ни по C, ни по C++. По программированию под *nix — маловата. Может стоит уточнить цели и литературу?

Цели? Изучить C++, а потом и C (в том числе под Linux).

Какие у меня навыки программирования? На C++ написал только лабы и ещё пару программ по учебнику. На Java написал

столько же. Под Android — 3 игры (в том числе, 2 версии летящей птицы:) ). Ну, и ещё знаю Pascal; знаю я его гораздо лучше чем предыдущие языки вместе взятых (не один год на нем программирую).

С какой книги лучше начать тогда? Из этого списка, например, мне понравилось как излагается материал в учебнике на сайте www.cplusplus.com.

Читайте также:  Драйвер audio device on high definition audio bus для windows 10

Это книги по языку без привязки к ОС и инструментальным средствам. Далее надо по конкретным задачам.

Отдельно надо будет освоить:

  • систему сборки, чтобы не запускать gcc из командной строки вручную. Фактический стандарт для C++ — CMake (если раньше проект не подсел на autotools).
  • отладчик — gdb
  • систему контроля версий (наиболее распространённая — git, как вариант — mercurial, не вариант — cvs, svn).

Тут по документации.

Пакета build-essential, как в Debian, в моём дистрибутиве (Mageia) нет

Самое главное — это программатор!

Вообще странный выбор книги. Книга ни по C, ни по C++. По программированию под *nix — маловата.

Мне книга понравилась потому, что в неё вещи объясняются простым и доступным языком. Например:

Наш исходный код написан на языке программирования C. Языки программирования были придуманы для того, чтобы программист мог объяснить компьютеру, что делать. Но вот беда, компьютер не понимает ни одного языка программирования. У компьютера есть свой язык, который называют машинным кодом или исполняемым кодом (‘executable code’). Написать Hello World в машинном коде можно, но серьезные программы на нем не пишутся. Исполняемый код не только сложный по своей сути, но и очень неудобный для человека. Программа, которую можно написать за один день на языке программирования будет писаться целый год в машинном коде. Потом программист сойдет с ума. Чтобы этого не случилось, был придуман компилятор (‘compiler’), который переводит исходный код программы в исполняемый код. Процесс перевода исходного кода программы в исполняемый код называют компиляцией.

Про «Модель КИС», вообще, прочитал на одном дыхании. Помню, когда первый раз использовал какой-то CMS, в документации объясняли эту модель — это было что-то с чем-то) В итоге я кинул (на некоторое время) сайтостроение.

Да книга не по C++ (как я хотел), а по C. Всё-таки, прочту ещё пару глав и потом поищу другую книгу (благо есть из чего выбрать:) ).

Необходимо установить пакетную систему https://nixos.org/nix/ а пакеты или даже окружение будешь составлять по надобности https://m.habrahabr.ru/post/281611/

тред не читай@сразу отвечай

1 qtcreator (имхо, лучшая ide для c/c++), все зависимости вроде компилятора пакетный менеджер должен подтянуть сам

2) браузер, чтобы читать stackoverflow

3) торрент клиент (я предпочитаю qbittorrent), чтобы пиратить pdf’ки

4) читалку pdf’ок (qpdfview, например)

Нет никакого пиратства. Оплачено через Михалкова, все претензии к нему.

Источник

Создание deb пакетов

Самый популярный способ распространения программ в Linux — это репозитории программного обеспечения. В репозиториях программы находятся в специальном формате. В Debian и основанных на нём дистрибутивах используется формат пакетов deb. В этих пакетах находится архив всех файлов программы, инструкции по их установке в системе для пакетного менеджера, а также другая служебная информация.

В этой статье мы рассмотрим как собрать deb пакет для своей программы без использования каких-либо сторонних инструментов. Мы не будем рассматривать подпись пакетов для репозиториев, потому что для каждого вида репозиториев команды будут отличаться.

Создание deb пакетов

Шаг 1. Подготовка

Давайте создадим для этого примера небольшую программу на Си. Она будет называться hellolosst и будет выводить на экран строку Hello from losst.ru в терминал при запуске. Сначала создайте папку hellolosst и перейдите в неё:

mkdir hellolosst
cd hellolosst

Затем поместите в неё файл с исходным кодом:

#include
int main() <
printf(«Hello from losst.ru\n»);
>

Для компиляции программы выполните такую команду:

gcc hellolosst.c -o hellolosst

Затем вы можете её выполнить:

Таким образом, теперь у нас есть программа, которую надо упаковать в deb пакет.

2. Создание манифеста

В каждом deb пакете содержаться не только файлы самой программы, но и файл манифеста, в котором описан пакет, его зависимости и параметры. Этот файл имеет название control и должен находится в папке DEBIAN. Для сборки пакета будем использовать папку package, чтобы файлы программы не путались с исходными файлами и те не попали в пакет. Создайте эти папку:

Читайте также:  How do you install software in linux

mkdir -p package/DEBIAN

Прежде чем вы сможете создать этот файл надо узнать несколько вещей. Первым делом надо посмотреть размер файлов программы, поскольку в данном случае файл один, достаточно посмотреть его размер:

du -k ./hellolosst

Если файлов несколько, то можно удалить исходники и посмотреть общий размер папки с файлами программы. Дальше надо понять от каких пакетов будет зависеть ваша программа. Для этого воспользуйтесь командой objdump:

objdump -p ./hellolosst | grep NEEDED

В данном случае программе необходима только libc. Чтобы посмотреть в каком пакете она находится выполните:

Пакет называется libc6. Затем создайте файл манифеста со следующим содержимым:

Package: hellolosst
Version: 1.0
Section: unknown
Priority: optional
Depends: libc6
Architecture: amd64
Essential: no
Installed-Size: 20
Maintainer: losst.ru
Description: Print hello from losst line

Это минимальный набор параметров в файле манифеста. Вот их значение:

  • Package — имя пакета;
  • Version — версия программы в пакете, будет использована при обновлении пакета;
  • Section — категория пакета, позволяет определить зачем он нужен;
  • Priority — важность пакета, для новых пакетов, которые ни с чем не конфликтуют обычно прописывают optional, кроме того доступны значения required, important или standard;
  • Depends — от каких пакетов зависит ваш пакет, он не может быть установлен, пока не установлены эти пакеты;
  • Recommends — необязательные пакеты, но тем не менее они обычно устанавливаются по умолчанию в apt;
  • Conflicts — пакет не будет установлен, пока в системе присутствуют перечисленные здесь пакеты;
  • Architecture — архитектура системы, в которой можно установить этот пакет, доступные значения: i386, amd64, all, последнее означает, что архитектура не имеет значения;
  • Installed-Size — общий размер программы после установки;
  • Maintainer — указывает кто собрал этот пакет и кто отвечает за его поддержку;
  • Description — краткое описание пакета.

3. Расположение файлов

Манифест готов. Теперь в папке пакета надо создать структуру папок, аналог того, что есть в корневой файловой системе. В данном случае надо создать папку usr/bin и поместить туда исполняемый файл:

mkdir -p package/usr/bin

mv ./hellolosst package/usr/bin

4. Скрипты установки

Несмотря на то, что система установки пакетов очень мощная и позволяет делать многое, некоторые вещи всё же сделать нельзя. Для решения этой проблемы была предусмотрена возможность выполнять скрипты перед установкой пакета и после. Аналогично это работает для удаления пакета — перед и после. Эти скрипты называются preinst, postinst, prerm и postrm. Каждый файл просто содержит набор скриптов, которые надо выполнить. Например:

#!/bin/bash
echo «Hello from losst installed»

Разработчики Debian не рекомендуют использовать эти скрипты без крайней надобности, поскольку они дают вам полный контроль над системой пользователя и вы можете случайно что-то повредить. Обычно эти скрипты используются для того чтобы задавать пользователям вопросы и на основе этого генерировать конфигурационные файлы.

5. Сборка и проверка пакета

Осталось собрать настроенный пакет. Для этого используйте такую команду:

dpkg-deb —build ./package

Теперь вы знаете как как собрать deb пакет. После завершения сборки можете установить его с помощью apt:

sudo apt install

После этого исполняемый файл программы появится в /usr/bin, а сообщение из postinst будет выведено после установки.

Выводы

В этой небольшой статье мы рассмотрели как выполняется создание deb пакета с помощью инструмента dpkg-deb. Как видите, всё очень просто. Вам достаточно написать манифест и расположить файлы там, где они должны быть. Мы рассмотрели здесь только самые основы. На самом деле создание пакетов намного сложнее. Существует целый набор утилит debhelpers, которые используются на различных этапах сборки и установки deb пакетов, подробнее обо всём этом вы можете прочитать в официальной документации.

Источник

Оцените статью