Как установить make в ubuntu

Обновлено: 07.07.2024

Если у вас есть опыт установки программного обеспечения из исходного кода на сервер Linux, вы, вероятно, сталкивались с утилитой make. Этот инструмент в основном используется для автоматизации компиляции и сборки программ. Это позволяет автору приложения быстро описать этапы, необходимые для сборки этого конкретного проекта.

Хотя утилита make была создана для автоматизации компиляции программного обеспечения, этот инструмент достаточно гибкий, чтобы его можно было использовать для автоматизации практически любой задачи, которую вы можете выполнить из командной строки. В этом мануале вы узнаете, как настроить make для автоматизации повторяющихся задач, которые нужно выполнять последовательно.

Примечание: Мануал был протестирован на Ubuntu 12.04 VPS, но практически на любом Linux-сервере он будет работать аналогичным образом.

Установка make

Утилиту можно установить по имени, но обычно она устанавливается вместе с другими инструментами, которые помогут вам скомпилировать программное обеспечение. Установите весь этот набор – он невероятно полезен в целом. Существует пакет под названием build-essential, содержащий make и другие программы:

sudo apt-get update
sudo apt-get install build-essential

Теперь у вас есть все инструменты для сборки программ, в том числе make.

Основы Makefile

Основной способ предоставления инструкций команде make – это Makefile.

На странице справки можно увидеть, что make ищет файл GNUmakefile, затем makefile, а затем Makefile. Справка рекомендует использовать файл Makefile, поскольку файл GNUmakefile предназначен для команд, специфичных для GNU.

Файл Makefile – это каталог, который определяет, что make будет искать в каталоге, в котором он был вызван.

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

target: source
command

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

Цель – указанное пользователем имя для ссылки на группу команд. В языке программирования это просто функция.

Цели выравниваются по левому краю. Ее имя должно быть единым словом (без пробелов) и заканчиваться двоеточием (:).

При вызове make цель можно указать так:

Утилита make проверит Makefile и выполнит связанную с целью команду.

Источники

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

Например, в вашем файле может быть раздел, который выглядит так:

target1: target2
target1_command
target2:
target2_command

В таком случае target1 вызывается так:

Затем make перейдет в Makefile и выполнить поиск цели «target1». После утилита проверит, имеются ли какие-либо источники для этой цели.

Она найдет зависимость источника «target2» и временно перейдет к этой цели.

Здесь она проверит, есть ли у target2 какие-либо источники. Это не так, поэтому она перейдет к выполнению команды target2. На этом этапе make достигнет конца списка команд «target2» и передаст управление цели «target1». Затем она выполнил команду «target1command» и завершит работу.

Источниками могут быть либо файлы, либо цели. Make использует временные метки, чтобы увидеть, был ли файл изменен с момента его последнего вызова. Если в файле появились изменения, эта цель запускается повторно. В противном случае make отмечает зависимость как выполненную и переходит к следующему источнику или к команде.

Основная идея состоит в том, что, добавляя источники, вы можете построить последовательный набор зависимостей, которые должны быть выполнены до обработки текущей цели. Вы можете указать несколько источников, разделив их пробелами.

Команды

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

Команды указываются в строке после объявления цели. Они отделяются от левого края одним символом табуляции. Некоторые версии make гибки в отношении отступов перед командами, но в целом лучше соблюдать один символ табуляции, чтобы make точно смог распознать ее.

Утилита воспринимает каждую строку с отступом под определением цели как отдельную команду. Вы можете добавить столько отступов и команд, сколько захотите. Make будет просто обрабатывать их по очереди.

Есть несколько вещей, которые можно указать перед командами, чтобы заставить make обрабатывать их по-разному:

  • -: дефис перед командой говорит make не прерывать работу в случае ошибки. Например, это может быть полезно, если вы хотите выполнить команду в файле, если она есть, и ничего не делать, если ее нет.
  • @: Если вы выведете команду с символом «@», сам вызов команды не будет отображаться в стандартном выводе. Это в основном используется только для очистки выходных данных.

Дополнительные функции

Makefile-ы поддерживают дополнительные функции.

Переменные

Make распознает переменные (или макросы), которые ведут себя как простые заполнители. Лучше всего объявить их в верхней части файла.

Имя каждой переменной должно полностью состоять из больших букв. После имени ставится знак равенства, который присваивает имя значению с правой стороны. Например, чтобы определить каталог установки /usr/bin, нужно добавить в начало файла:

Позже в файле можно сослаться на это расположение:

Многострочные команды

Еще одна полезная функция – это возможность команд охватывать несколько строк.

Вы можете использовать любую команду или оболочку в разделе команд. Здесь можно использовать escape-символы новой строки «\»:

target: source
command1 arg1 arg2 arg3 arg4 \
arg5 arg6

Это очень важно, если вы пользуетесь такими функциями оболочки, как if-then:

target: source
if [ "condition_1" == "condition_2" ];\
then\
command to execute;\
another command;\
else\
alternative command;\
fi

Утилита будет выполнять этот блок как единую строку. Фактически, вы могли бы написать этот код как одну строку, но это значительно улучшает читаемость.

Суффиксы файлов

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

Например, если вы хотите обрабатывать все файлы .jpg в каталоге и преобразовывать их в png-файлы с помощью пакета ImageMagick, мы могли бы добавить в Makefile такой код:

jpg .jpg
.jpg.jpg:
@echo converting $< to $@
convert $< $@

Первая часть – это объявление .SUFFIXES:. Оно говорит о всех суффиксах, которые вы будете использовать. Некоторые суффиксы, которые часто используются при компиляции исходного кода, такие как «.c» и «.o», включены по умолчанию, их не нужно указывать в объявлении.

Следующая часть – это объявление фактического правила суффикса. Оно в основном имеет такую форму:

Это не цель, но она будет соответствовать любому вызову файла со вторым расширением и собирать при этом файлы в первом расширении.

В данном случае можно создать файл под названием «file.jpg», если в каталоге есть «file.jpg»:

Make увидит файл png в объявлении .SUFFIXES и найдет правило для создания файлов «.jpg». Затем он найдет целевой файл, где вместо «.jpg» будет «.jpg». После этого утилита выполнит следующие команды.

В правилах суффикса используются некоторые переменные, которые мы еще не вводили. Они помогают заменять различную информацию в зависимости от того, в какой части процесса находятся:

  • $?: Эта переменная содержит список предварительных зависимостей для текущей цели. Это цели, которые необходимо переделать перед выполнением команд в этой цели.
  • $@: Эта переменная является именем текущей цели. Это позволяет ссылаться на файл, который нужно собрать, даже если правило было выбрано шаблоном.
  • $<: Это имя текущей зависимости. В данном случае это имя файла, который используется для создания цели. В этом примере это файл file.jpg.
  • $*: Этот имя текущей зависимости без расширения. По сути, это промежуточный этап между целевым и исходным файлами.

Создание Makefile

Создайте простой Makefile для преобразования изображений и загрузки их на сервер, чтобы они могли отображаться на сайте.

Чтобы следовать этому мануалу, загрузите инструменты преобразования ImageMagick. Это простые инструменты командной строки для управления изображениями, которые мы будем использовать в скрипте:

sudo apt-get update
sudo apt-get install imagemagick

В текущем каталоге создайте Makefile:

Преобразование JPG в PNG

Сервер настроен на обслуживание исключительно изображений .jpg. Потому все .jpg нужно преобразовать в .jpg перед загрузкой.

Как вы узнали выше, правила суффикса – отличный способ сделать это. Начните с объявления .SUFFIX, где будут перечислены форматы, которые нужно преобразовать.

.SUFFIXES: .jpg .jpg

Затем можно создать правило, которое превратит файлы .jpg в файлы .jpg. Чтобы сделать это, используйте команду convert из пакета ImageMagick. Команда convert проста, вот ее синтаксис:

convert from_file to_file

Чтобы выполнить эту команду, нужно правило суффикса, которое определяет исходный и целевой формат:

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

Поскольку вы не знаете точно, какое имя будет у файла, нужно использовать переменные, о которых мы говорили ранее. В частности, вам нужно сослаться на исходный файл ($<) и на целевой файл ($@). В итоге получится такое правило:

.SUFFIXES: .jpg .jpg
.jpg.jpg:
convert $< $@

Давайте добавим немного функций, чтобы было ясно, что происходит с выражением echo. Добавьте символ «@» перед новой командой и командой, которую вы уже использовали, чтобы команда не отображалась при выполнении:

.SUFFIXES: .jpg .jpg
.jpg.jpg:
@echo converting $< to $@ using ImageMagick.
@convert $< $@
@echo conversion to $@ successful!

Сохраните и закройте файл.

В текущий каталог загрузите jpg-файл. Например:

Попробуйте преобразовать его в png:

make image.jpg
converting image.jpg to image.jpg using ImageMagick.
conversion to image.jpg successful!

Утилита make посмотрит в Makefile, найдет там .jpg в объявлении .SUFFIXES и соответствующее правило. После этого она запустит необходимые команды.

Создание списка файлов

На данный момент make преобразует только файлы, которые вы явно указываете в команде.

Но вы можете создать список файлов jpg, которые находятся в текущем каталоге, а затем преобразовать их в нужный формат. Для этого нужно создать специальную переменную. Это можно сделать с помощью такого синтаксиса wildcard.

Указать цель можно и с помощью подстановочного знака bash:

Но этот метод имеет недостаток. Если файлов .jpg нет, эта директива попытается запустить команду преобразования в файле с именем *.jpg, а это не получится сделать.

Синтаксис wildcard, о котором мы говорили выше, компилирует список файлов .jpg в текущем каталоге, и если таких файлов не существует, он не присваивает переменной никакого значения.

Вместо указанных выше строк мы будем использовать эти:

Первая строка компилирует список .jpg и .jpg файлов в текущем каталоге и сохраняет его в переменной JPEG.

Вторая строка ссылается на эту переменную и выполняет простое преобразование имен в переменной JPEG: расширение .jpg в .jpg. Это делается с помощью этого синтаксиса:

В результате получится новая переменная JPG, содержащая только файлы с расширением .jpg. Некоторые из этих файлов могут фактически не существовать в системе, потому что они являются файлами .jpg (команда не переименовывает сами файлы). Но это нормально, потому что этот список нужен, чтобы создать новый список .jpg-файлов:

JPEG=$(wildcard *.jpg *.jpg)
JPG=$(JPEG:.jpg=.jpg)
PNG=$(JPG:.jpg=.jpg)

Теперь у вас есть список файлов, которые нужно создать, он находится в переменной PNG. Этот список содержит только .jpg файлы, потому последняя строка выполнила другое преобразование имени. Все файлы .jpg или .jpg в этом каталоге использовались для компиляции списка .jpg-файлов, которые нужно создать.

Также нужно обновить декларацию .SUFFIXES и правило суффиксов, чтобы добавить обработку файлов .jpg:

JPEG=$(wildcard *.jpg *.jpg)
JPG=$(JPEG:.jpg=.jpg)
PNG=$(JPG:.jpg=.jpg)
.SUFFIXES: .jpg .jpg .jpg
.jpg.jpg .jpg.jpg:
@echo converting $< to $@ using ImageMagick.
@convert $< $@
@echo conversion to $@ successful!

Создание целей

Makefile уже достаточно большой, но в нем пока что нет целей. Добавьте такую строку, чтобы передать переменную PNG правилу суффиксов.

JPEG=$(wildcard *.jpg *.jpg)
JPG=$(JPEG:.jpg=.jpg)
PNG=$(JPG:.jpg=.jpg)
.SUFFIXES: .jpg .jpg .jpg
convert: $(PNG)
.jpg.jpg .jpg.jpg:
@echo converting $< to $@ using ImageMagick.
@convert $< $@
@echo conversion to $@ successful!

Новая цель – это список имен файлов .jpg, которые выступают в качестве требования. make ищет способ получить файлы .jpg и использует это правило суффикса.

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

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

Команда ImageMagick mogrify может изменять размеры изображений. Предположим, область изображения на сайте будет шириной 500 пикселей. Чтобы конвертировать изображения для этой области, используйте команду:

mogrify -resize 500\> file.jpg

Она изменит размер всех изображений, которые больше этой области, но не затронет изображения, которые меньше 500 пикселей. Добавьте эту цель:

resize: $(PNG)
@echo resizing file.
@mogrify -resize 648\> $(PNG)
@echo resizing is complete!

В файле она будет находиться здесь:

JPEG=$(wildcard *.jpg *.jpg)
JPG=$(JPEG:.jpg=.jpg)
PNG=$(JPG:.jpg=.jpg)
.SUFFIXES: .jpg .jpg .jpg
convert: $(PNG)
resize: $(PNG)

@echo resizing file.

@mogrify -resize 648\> $(PNG)

@echo resizing is complete!
.jpg.jpg .jpg.jpg:
@echo converting $< to $@ using ImageMagick.
@convert $< $@
@echo conversion to $@ successful!

После этого можно связать эти цели как зависимость следующей цели:

JPEG=$(wildcard *.jpg *.jpg)
JPG=$(JPEG:.jpg=.jpg)
PNG=$(JPG:.jpg=.jpg)
.SUFFIXES: .jpg .jpg .jpg
webify: convert resize
convert: $(PNG)
resize: $(PNG)
@echo resizing file.
@mogrify -resize 648\> $(PNG)
@echo resizing is complete!
.jpg.jpg .jpg.jpg:
@echo converting $< to $@ using ImageMagick.
@convert $< $@
@echo conversion to $@ successful!

Цель webify теперь преобразует и изменяет размеры изображений.

Загрузка файлов на удаленный сервер

Теперь, когда у вас есть готовые изображения, можно создать цель для загрузки их в каталог статических изображений на удаленном сервере. Чтобы сделать это, можно передать список преобразованных файлов в scp.

Эта цель будет выглядеть примерно так:

upload: webify
scp $(PNG) root@ ip_address:/path/to/static/images

Она загрузит все файлы на удаленный сервер. Файл будет выглядеть так:

JPEG=$(wildcard *.jpg *.jpg)
JPG=$(JPEG:.jpg=.jpg)
PNG=$(JPG:.jpg=.jpg)
.SUFFIXES: .jpg .jpg .jpg
upload: webify

scp $(PNG) root@ip_address:/path/to/static/images
webify: convert resize
convert: $(PNG)
resize: $(PNG)
@echo resizing file.
@mogrify -resize 648\> $(PNG)
@echo resizing is complete!
.jpg.jpg .jpg.jpg:
@echo converting $< to $@ using ImageMagick.
@convert $< $@
@echo conversion to $@ successful!

Чистка

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

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

Чтобы эта цель работала по умолчанию, нужно указать ее в качестве первой доступной цели. По соглашению ее нужно назвать all:

JPEG=$(wildcard *.jpg *.jpg)
JPG=$(JPEG:.jpg=.jpg)
PNG=$(JPG:.jpg=.jpg)
.SUFFIXES: .jpg .jpg .jpg
all: upload clean
upload: webify
scp $(PNG) root@ip_address:/path/to/static/images
webify: convert resize
convert: $(PNG)
resize: $(PNG)
@echo resizing file.
@mogrify -resize 648\> $(PNG)
@echo resizing is complete!
clean:
rm *.jpg
.jpg.jpg .jpg.jpg:
@echo converting $< to $@ using ImageMagick.
@convert $< $@
@echo conversion to $@ successful!

Как видите, make позволяет легко объединить задачи в единый процесс. Например, если вы хотите конвертировать файлы и разместить их на другом сервере, вы можете просто использовать цель webify.

Заключение

Теперь вы знакомы с общими функциями Makefile-ов. Также вы знаете, как использовать make как инструмент для автоматизации разных процессов.

Хотя в некоторых случаях удобнее написать скрипт, Makefile – это простой способ настройки структурированной иерархической взаимосвязи между процессами. Это быстрый способ спланировать и объединить повторяющиеся задачи.

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

Программы обычно распространяются в упакованных архивах, это файлы с расширениями

Нужно понимать отличие между архиватором и упаковщиком.

Для архивации директорий и файлов используется программа tar; результатом её работы является файл с расширением .tar. Грубо говоря, это копия файловой системы - директорий и файлов с их атрибутами и правами доступа, помещённая в один файл.

Данный файл по размеру будет чуть больше, чем суммарный размер файлов, которые были архивированы. Поэтому (а может и по другой причине) используют упаковщики - программы, которые позволяют уменьшить размер файла без потери данных.

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

сразу распакует и разархивирует. Отличие файлов с расширениями

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

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

Для сборки программ в GNU/Linux используется (в основном) программа make, которая запускает инструкции из Makefile, но поскольку дистрибутивов GNU/Linux много, и они все разные, то для того чтобы собрать программу, нужно для каждого дистрибутива отдельно прописывать пути,где какие лежат библиотеки и заголовочные файлы. Программисты не могут изучать каждый дистрибутив и для каждого отдельно создавать Makefile. Поэтому придумали конфигураторы, которые «изучают» систему, и в соответствии с полученными знаниями создают Makefile. Но на конфигураторе они не остановились и придумали конфигураторы конфигураторов …на этом они остановились

Для сборки нам нужны компиляторы: они прописаны в зависимостях пакета build-essential, так что достаточно установить его со всеми зависимостями. Ещё нужны autoconf и automake.

Итак, чтобы собрать что-то из исходников, нужно сначала собрать конфигуратор; как собрать конфигуратор, описано в файле configure.in. Для сборки конфигуратора необходимо выполнить

Если таких скриптов в архиве не оказалось, то можно выполнить последовательно следующие команды:

Все эти команды используют файл configure.in. После выполнения этих команд создастся файл configure. После этого необходимо запустить конфигуратор для проверки наличия всех зависимостей, а также установки дополнительных опций сборки (если возможно) и просмотра результата установки (опционально- может не быть)

Конфигуратор построит Makefile основываясь на полученных знаниях и файле makefile.am. Можно передать конфигуратору опции, предусмотренные в исходниках программы, которые позволяют включать/отключать те или иные возможности программы, обычно узнать о них можно командой

Также есть набор стандартных опций, вроде

, которая указывает, какой каталог использовать для установки. Для Ubuntu обычно

БЕЗ слеша в конце! Теперь можно запустить процесс сборки самой программы командой

Для сборки достаточно привелегий обычного пользователя. Окончанием сборки можно считать момент, когда команды в консоли перестанут «беспорядочно» выполняться и не будет слова error. Теперь всё скомпилировано и готово для установки.

Усилия потраченные на Правильную установку в последствии с лихвой окупятся в случае удаления или обновления устанавливаемого программного обеспечения.

Правильная установка(Вариант №1)

Установка при помощи утилиты checkinstall. Для установки выполните

Минус данного способа: checkinstall понимает не все исходники, поскольку автор программы может написать особые скрипты по установке и checkinstall их не поймёт.

Для создания и установки deb-пакета необходимо выполнить

Правильная установка(Вариант №2)

Быстрое создание deb-пакета «вручную».

Основное отличие от предыдущего способа заключается в том, что в данном случае вы создаете пакет вручную и отслеживаете все вносимые изменения. Так же этот способ подойдет вам, если исходники не поддерживают сборку пакета с checkinstall. Производим установку во временную директорию, где получаем весь набор устанавливаемых файлов: Создадим в «корне пакета» директорию DEBIAN и сложим в DEBIAN/conffiles список всех файлов, которые должны попасть в /etc: После чего создаём файл DEBIAN/control следующего содержания: При необходимости там же можно создать скрипты preinst, postinst, prerm и postrm. Получаем на выходе tempinstall.deb, который и устанавливаем

Установка (вариант №3)

Процедура создания deb-пакета подробно описана в данной статье.

Неправильная установка

Минус данного способа заключается в том, что если вы устанавливаете напрямую через make install, то нормально удалить или обновить пакет вы, скорее всего, не сможете. Более того, установка новой версии поверх старой, скорее всего, затрёт ваши изменения в конфигах. make install делает ровно то, что ему сказано — производит установку файлов в нужные места, игнорируя тот факт, что там что-то уже есть. После этого процесса совершенно никакой информации о том, что и куда ставилось, получить в удобоваримом виде невозможно. Иногда, конечно, Makefile поддерживает действие uninstall, но это встречается не так часто, да и не факт, что корректно работает. Кроме того, вам будет необходимо хранить для деинсталяции распакованное дерево исходников и правил сборки.

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

Для удаления пакета, установленного данным способом необходимо выполнить в корневой директории исходников программы (там где вы запускали make install).

Пакеты с буквами mm в конце описания — это пакеты для C++ программ. Список для bmpx, но подойдёт почти для любой GTK2/Gnome программы. Так что если не получается собрать, то посмотрите на этот список и сверьте с тем что у вас установлено.


Появилось желание познакомиться с разработкой под android. Скачал Android Studio, распаковал и удалил. Решил поискать другие варианты установки. В процессе поиска наткнулся на Ubuntu Make (он же Ubuntu Developer Tools Center в прошлом), и в этой небольшой заметке хочу рассказать вам о нем.

Ubuntu Developer Tools Center промелькнул в новостях вместе с Ubuntu 14.10 (Utopic Unicorn), но широкого внимания масс, как мне кажется, к себе не привлек. Не многим позже проект переименовали в Ubuntu Make, как он и называется по сей день подросшим до версии 0.4. Разработкой занимается Didier Roche, Software Engineer, Canonical. Также достоин внимания тот факт, что Ubuntu Make написан на Python 3.4.

Основная цель проекта быстрая и легкая установка общих потребностей разработчика в Ubuntu. И хотя до «общих потребностей» еще далековато (список доступных для установки пакетов пока маловат), с «быстро и просто» все отлично.

  • Android Studio
  • Eclipse
  • IntelliJ Idea Community Edition
  • PyCharm Community Edition
  • go-lang Google compiler
  • Stencyl game developer IDE

Установка

В ubuntu 15.04 ubuntu-make доступен из коробки, пользователям версий 14.04 и 14.10 предлагается установить из ppa:

Использование

Установка с ubuntu-make проста до неприличия. Для установки Android Studio достаточно выполнить в терминале:



Немного ожидания и вот результат:

Иконка в dash и openjdk (если явы не было в системе) в комплекте. После запуска «студия» подтянула sdk и обновилась до версии 1.0.2. «Hello world» был запущен на телефоне и на этом проверка работоспособности завершилась.


golang устанавливается аналогично:

Для PyCharm, Eclipse, Idea добавится еще один аргумент:



Для удаления пакета достаточно добавить аргумент "-r" к той же строчке:

Мнение

Пользователям Linux необходимо хотя бы приблизительно знать как происходит сборка программ из исходников. Так как вы можете столкнуться стем, что вашей программы может и не быть скомпилированной под ваш дистрибутив. Сама сборка программ не сложна, и обычно описана в файле README или INSTALL, который идет вместе с пакетами для сборки. Так что, будьте внимательны. И так, сборку из исходников мы будем разбирать на примере программы GParted. Но, для начала давайте установим необходимые утилиты – интерпретатор и компилятор, для того, что бы можно было собирать программы. Для установки необходимых утилит вводим команду:

Debian/Ubuntu

sudo apt install build-essential automake autoconf

Arch/Manjaro

sudo pacman -S base-devel --needed

Сборка программ c Github

И начнем мы с GParted, сборку или как еще называется данный процесс – компиляцию мы будем выполнять в Ubuntu 20.04 . Вы можете спросить почему именно в Ubuntu, отвечу, для Arch Linux и подобных есть AUR. Да и со сборкой программ в Arch мы разберемся чуть позже. Там можно найти практически все программы, которые существуют для Linux. Для начала нужно скачать исходники программы, для этого переходим на сайт, скачиваем, а затем распаковываем архив. Так же можно выполнить команду:

Затем переходим в папку:

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

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

Если проблема с зависимостями у вас останется, то вы увидите об этом вывод:

После того, как вы установите все необходимые зависимости, запускаете снова “autogen.sh”. В итоге он вам скажет что можно приступать к дальнейшим действиям:

Далее запускаем “make” и затем когда “make” выполнит свою работу, запускаем “sudo make install”. Обратите внимания, в некоторых инструкциях не упоминается о том, что нужно установку программы выполнять именно от “sudo”, а именно: “sudo make install”. Из за этого у вас могут возникнуть проблемы. И так продолжаем сборку программы вводим команды:

make
sudo make install

Стоит отметить, что многие программы с открытым исходным кодом, можно найти на github. Там обычно самая последняя версия программы, по этому, если есть такая возможность, то лучше собирать программы с github.

После установки можно найти программу в меню установленных программ.

Сборка программ из архива

Распаковывать архив можно из терминала, а можно при помощи графического интерфейса, например программой Ark или Менеджер архивов. Тут все зависит от того, как вам удобней. Для того что бы распаковать архив в терминале, нужно выполнить определенную команду. На примере с GParted такой командой будет:

tar xzf gparted-1.1.0.tar.gz

Примечание, tar является утилитой командной строки для распаковки архивов. И так, затем переходим в папку с распакованной программой и смотрим какие там имеются файлы. Тут как раз имеются README:

Для наглядности я открою файл README в графической утилите Mousepad. Как вы можете заметить, в инструкции подробно прописано как устанавливать данную программу из исходников:

Для того что бы собрать данную программу, достаточно выполнить команды, которые прописаны в инструкции. Так как мы уже распаковали данный архив, пропускаем это шаг. Если вы не знаете как перейти в терминале в директорию программы, поясню. А если знаете, то пропустите данный шаг. Для того что бы перейти в терминале в нужную директорию, используется команда “ cd “. Например, у вас папка с программой находится по адресу “Загрузки – папка с программой”, выполняем команду:

После чего можно посмотреть что у нас имеется в данной директории введя команду “ ls “, после чего снова вводим команду “ cd ” и переходим в нужную нам директорию. Например:

Теперь приступаем к сборке программы GParted. Для этого вводим команды которые написаны в файле README.

На этом этапе установки могут возникнуть проблемы с зависимостями. По этому их необходимо установить:

После того как все необходимые зависимости были установлены, снова запускаем “./configure” и продолжаем компиляцию программы как описано выше. А именно, после запуска “./configure” запускаем “make”, а затем “sudo make install”.

Ошибки при сборке программы

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

После того как вы установите необходимые зависимости, снова необходимо запустить ./configure. А может быть и так, что у вас не будет файла ./configure, попробуйте запустить другие скрипты:

Если таких скриптов вы не смогли найти, то можно выполнить последовательно следующие команды:

aclocal
autoheader
automake --gnu --add-missing --copy --foreign
autoconf -f -Wall

В случае с дистрибутивами Arch/Manjaro необходимые пакеты вы можете подгрузить используя “Менеджер программ”, Предварительно не забыв подключить репозиторий AUR:

Пример необходимых зависимостей при установки в Manjaro программы Blender. Компиляция производилась с использованием файла PKGBUILD:

Удаление программ

Если же вы захотите в будущем удалить GParted, или какую то иную программу, оставьте папку которую скачивали. Так как только в ней есть инструкция куда устанавливались те или иные пакеты. Обычно, в файле README написано как удалять установленные программы. В случае с GParted достаточно перейти в каталог с исходниками и выполнить команду:

Сборка в Arch/Manjaro (Arch Build System – ABS)

В дистрибутивах Arch и Arch подобных есть несколько способов устанавливать программное обеспечение, собственно, как и во многих других дистрибутивах. Но, в Arch имеется AUR, это пользовательский репозиторий, где лежат программы, которые не вошли в официальные репозитории. А так же существует способ собрать программу из исходников и вот тут вы можете столкнуться с тем, что вам попадется файл “PKGBUILD”. PKGBUILD это грубо говоря скрипт, который содержит инструкцию по скачиванию необходимых пакетов. Так же вместе с PKGBUILD могут быть и другие файлы, например “blender.desktop”. Вы можете открыть PKGBUILD и изменить необходимые параметры, но, это только при условии что вы знаете что делаете. Предположительно, вы уже перешли в каталог с исходниками программы, если же нет, сделать это можно командой в терминале “cd и путь к директории”. Для сборки пакета выполняем команду:

Опишу опции которые тут применяются, опция -s произвести проверку и установку зависимостей, а опция i установку самого пакета:

Читайте также: