17 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Установка программ в Linux tar gz

Содержание

Установка программ в Linux (.tar, .gz, .bz, RPM и DEB)

Каждому пользователю операционных систем Linux, а также других систем приходится устанавливать дополнительные программы. В операционных системах Windows все очень просто, как правило есть установщик setup.exe, который помогает установить софт. А вот в линуксе дела обстоят несколько иначе. Как устанавливать программы в Linux? Сейчас рассмотрим этот вопрос.

В линуксе есть несколько типов установочных пакетов и каждый дистрибутив имеет свой формат пакетов. В дистрибутивах Fedora, Mandriva, Red Hat и Suse используется стандартная установка для линукс RPM, разработанная компанией Red Hat. Файл пакета RPM как правило имеет название имя_программы-версия.rpm.

Еще один из очень популярных форматов это DEB. Используется в Debian, Ubuntu, Knoppix и Mepis. Имеет название имя_программы-версия.deb.

И подошли мы к архивам. Обычно это .tar , .tar.gz , .tgz расширения. Их следует распаковать, а потом уже устанавливать/компилировать.

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

Установка программ на Debian, Ubuntu

Для работы с пакетами формата DEB есть множество инструментов, но чаще всего используют apt-get , он входит в стандартный набор инструментов. Для установки приложения вводим команду:

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

Для обновления устаревших пакетов (программ) на компьютере набираем следующие команды:

Про APT можете почитать более подробно на официальном сайте: http://www.debian.org/doc/manuals/apt-howto/

Установка программ на Fedora, Red Hat

Утилита, аналогичная APT — yum. Загрузить и установить пакет из настроенного хранилища пишем команду:

Локальная база yum не сохраняется, поэтому нет необходимости обновлять. Для установки обновлений воспользуемся командой:

Выбрать что-то определенное для обновления:

Установка программ в Mandriva

В Mandriva есть свой набор инструментов для работы с пакетами, называется urpmi. Для установки:

Обновить локальную базу со списком пакетов:

Чтобы установить обновления:

Установка программ из архивов (тарболов)

Для архивов сжатых с помощью GZIP (gz, gz2 и т.д.) делаем так:

Для архивов сжатых с помощью BZIP (bz, bz2 и т.д.) несколько по другому:

  • x – извлекаем файлы из архива;
  • v – подробный вывод инфы на экран;
  • f – Обязательная опция. Если не указать, Tar будет пытаться использовать магнитную ленту вместо файла;
  • z – обработать архив сжатый при помощи gzip;
  • j – обработать архив сжатый при помощи bzip.

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

Далее в распакованном архиве читаем инструкцию в файле README если есть. Во всяком случае, если программа собрана в виде исполняемого файла, то в пакете будет файл .sh , как правило называется install.sh . Его просто запускаем на исполнение.

А вот если программа представлена в исходном коде, выполняем команды:

После установки выполняем:

Ну вот и все, ничего сложного. Теперь вы знаете как устанавливать программы на Linux: Debian, Ubuntu, Fedora, Red Hat, Mandriva, в том числе и из архивов.

Установка файлов формата TAR.GZ в Ubuntu

TAR.GZ — стандартный тип архива, использующийся в операционной системе Ubuntu. В нем обычно хранятся программы, предназначенные для установки, или различные репозитории. Установить софт этого расширения так просто не получится, его необходимо распаковать и собрать. Сегодня мы бы хотели в деталях обсудить именно эту тему, показав все команды и пошагово расписав каждое необходимое действие.

Устанавливаем архив TAR.GZ в Ubuntu

В самой процедуре распаковки и подготовки софта нет ничего сложного, все выполняется через стандартный «Терминал» с предварительной загрузкой дополнительных компонентов. Главное лишь подобрать рабочий архив, чтобы после разархивации не возникло проблем с инсталляцией. Однако перед началом инструкций мы хотим отметить, что следует внимательно изучить официальный сайт разработчика программы на наличие DEB или RPM-пакетов либо же официальных репозиториев.

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

Шаг 1: Инсталляция дополнительных инструментов

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

  1. Откройте меню и запустите «Терминал».

Введите команду sudo apt-get install checkinstall build-essential autoconf automake для добавления нужных компонентов.

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

Выберите вариант Д, чтобы запустить операцию добавления файлов.

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

Шаг 2: Распаковка архива с программой

Теперь вам требуется подключить накопитель с сохраненным там архивом или загрузить объект в одну из папок на компьютере. После этого приступайте к выполнению следующей инструкции:

    Откройте файловый менеджер и перейдите в папку хранения архива.

Нажмите по нему правой кнопкой мыши и выберите пункт «Свойства».

Узнайте путь к TAR.GZ — он пригодится для осуществления операций в консоли.

Запустите «Терминал» и перейдите в эту папку хранения архива с помощью команды cd /home/user/folder , где user — имя пользователя, а folder — название директории.

Извлеките файлы из директории, вписав tar -xvf falkon.tar.gz , где falkon.tar.gz — название архива. Обязательно нужно ввести не только имя, но и .tar.gz .

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

Осталось только собрать все полученные файлы в один DEB-пакет для дальнейшей обычной установки программного обеспечения на компьютер.

Шаг 3: Компилирование DEB-пакета

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

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

Обычно в сборке имеются уже скрипты по осуществлению компиляции, поэтому советуем сначала проверить команду ./bootstrap , а в случае ее неработоспособности задействовать ./autogen.sh .

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

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

Во время добавления новых пакетов может оказаться, что в системе не хватает определенных библиотек. Вы увидите соответствующее уведомление в «Терминале». Установить недостающую библиотеку можно командой sudo apt install namelib , где namelib — название требуемого компонента.
По завершении предыдущего шага приступайте к компиляции, вписав команду make . Время сборки зависит от объема информации в папке, поэтому не закрывайте консоль и ждите появления уведомления об удачном компилировании.

В последнюю очередь впишите checkinstall .

Как установить tar gz в Ubuntu

Не для всех программ уже есть готовые пакеты для вашего дистрибутива, также новые версии программ могут распространяться только в форме tar.gz архива или просто исходников.

У многих новых пользователей Ubuntu возникает вопрос, как же устанавливать программы или игры в формате tar.gz. Ведь менеджером пакетов они не открываются, а двойным кликом открывается архив. Дело в том, это на самом деле еще не программа, это действительно архив. Архив исходных кодов программы, и если говорить простыми словами, то это набор текстовых файлов с инструкциями на определенном языке программирования.

Чтобы все это превратилось в готовую к установке и выполнению программу нужно выполнить сборку (компиляцию). Но не бойтесь всех этих новых терминов, на самом деле все намного проще чем кажется, вам не нужно будет ничего ни писать, ни исправлять, достаточно только ввести несколько команд в терминале. В этой инструкции будет рассмотрена установка tar.gz в Ubuntu.

Читать еще:  Установка регулятора на батарею отопления

Подготовка системы

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

Наберите следующую команду для установки этих инструментов:

sudo apt install checkinstall build-essential autoconf automake

Установка из tar gz в Ubuntu

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

Дальше извлечем исходники из архива с программой:

tar -xvf имя_архива.tar.gz

И переходим в папку с только что полученными исходными файлами:

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

Программы часто используют внешние библиотеки, а в разных дистрибутивах путь к файлам библиотек разный, поэтому перед тем, как запускать make нужно выполнить скрипт configure для проверки зависимостей. Этот скрипт можно создать на основе файла configure.in. Но это необязательно, во многих программах скрипт конфигурации не предусмотрен и программа не требует проверки зависимостей перед сборкой, тогда файла configure.in просто нет в папке с исходниками. Если так, то просто пропустите следующие инструкции и переходите к сборке.

Скрипт configure можно создать несколькими способами, сначала попытаемся выполнить следующие скрипты:

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

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

Если все прошло успешно установка из исходников Ubuntu может быть продолжена. Теперь, наверное, самое сложное, запускаем configure:

Если скрипт обнаружит что какой-то библиотеки нет (File имя_файла_библиотеки.so not found), скомпилировать пакет не получится, берем название библиотеки и ищем в Google как называется ее пакет в Ubuntu, а затем устанавливаем его через apt-get. Обычно это libимя_библиотеки или libимя_библиотеки-dev.

Например, нам не хватало libfuse.so. С помощью поисковой системы мы узнали, что эта библиотека есть в пакете libfuse. Теперь просто ее установим:

sudo apt install libfuse

Затем опять выполняете configure, чтобы посмотреть нет ли других неразрешенных зависимостей. И повторяете все до тех пор, пока не увидите слово Sucessful или Complete в конце вывода скрипта.

И только теперь установка tar.gz в Ubuntu может быть продолжена и программа собрана. Команда make скомпилирует программу из исходников, а скрипт checkinstall соберет deb пакет:

Самое сложное уже позади, на этом этапе ошибки почти никогда не возникают.

И только теперь мы получили программу, которую можно устанавливать с помощью центра приложений или в терминале. Установка с помощью dpkg будет выглядеть вот так:

Установка программ в Linux (.tar, .gz, .bz, RPM и DEB)

Каждому пользователю ОС Linux, да и любых других операционных систем приходится сталкиваться с установкой дополнительных программ на свой компьютер. Если в Windows для этого существует специальный файл (setup.exe), который пошагово проведет вас по всем этапам и установит программу, то в Linux дела с этим обстоят немного по другому, но все равно с небольшим опытом это делается очень просто.

Довольно часто пользователи (особенно новички) спрашивают: Как устанавливать программы в Linux? Постараюсь ответить на этот вопрос.

В мире Linux существует несколько типов установочных пакетов, и каждый дистрибутив имеет свой собственный, предпочтительный формат пакетов. Стандартной системой установки для Linux, является RPM, разработанной компанией Red Hat и используется в основной в дистрибутивах Fedora, Mandriva, Red Hat и Suse. Файл пакета RPM обычно имеет название имя_программы-версия.rpm.

Еще одним очень популярным форматом пакетов является DEB. Который, как не сложно догадаться используется в системах Debian GNU/Linux, и на ее основе, в том числе Ubuntu, Knoppix и Mepis. Файл пакета DEB обычно имеет название имя_программы-версия.deb.

Ну и наконец архивы, так называемые тарболы (Tar Balls). Как правило имеют расширение .tar , .tar.gz , .tgz. Которые сначала необходимо распаковать, а уже потом устанавливать или компилировать.

Все действия по установке программ необходимо выполнять под суперпользователем!
Установка программ на Debian, Ubuntu. Распаковка .tgz файлов в Unix/Linux

Для работы с DEB пакетами существует множество инструментов, но пожалуй самый простой и часто используемый, это apt-get, входящий в стандартный набор инструментов. apt-get позволяет не только с легкостью устанавливать новые пакеты в систему, но и показывать какие пакеты доступны для установки и скачивать их с интернета в случае необходимости. Для установки приложения, введите в командную строку:
apt-get install имя_пакета

Для удаления:
apt-get remove имя_пакета

Несмотря на то, что содержимое пакетов может хранится на сервере в интернете или где нибудь на диске, APT хранит локальную базу данных со списком всех доступных для установки пакетов и ссылок где их брать. Эту базу необходимо периодически обновлять. Для обновления базы APT используется команда:
apt-get update

Очень часто программы изменяются (выходят обновления, патчи, системы безопасности и т.д.), можно также использовать APT для обновления устаревший пакетов (программ) в системе. Для обновления нужно сначала обновить список пакетов, а потом уже установить все обновления. Для этого выполняется следующая команда, которая сразу сделает все необходимое:
apt-get update; apt-get upgrade

Более подробную инструкцию по использованию утилиты APT можно посмотреть на официальном сайте.
Установка программ на Fedora, Red Hat

Для пакетов RPM есть замечательная утилита yum, которая делает примерно тоже самое, что и apt-get делает для пакетов Debian. Как и apt-get, yum позволяет загрузить и установить пакет из настроенного хранилища (репозитория):
yum install имя_пакета

Удалить программу также легко и просто:
yum remove имя_пакета

yum не сохраняет локальную базу данных списка пакетов, поэтому нет необходимости постоянно ее обновлять. Для установки всех доступных обновлений и патчей достаточно прописать команду:
yum update

или же выбрать определенную программу для обновления:
yum update имя_пакета
Установка программ в Mandriva

Mandriva Linux (бывший Mandrake и Connectiva) имеет свой набор инструментов для работы с пакетами установки, называется он urpmi. Для установки программ необходимо ввести:
urpmi имя_пакета

Для удаления:
urpme имя_пакета

Для обновления локальной базы данных списка пакетов:
urpmi.update -a

Для установки обновлений:
urpmi —auto-select
Установка программ из архивов (тарболов)

Дистрибутив с программой, представляет из себя архив с кучей файлов и обычно имеет расширение .tar , .tar.gz , .bz, .tgz ну или что то похожее.

Для архивов сжатых с помощью GZIP (gz, gz2 и т.д.) выполняем:
tar -xvzf имя_файла

Для архивов сжатых с помощью BZIP (bz, bz2 и т.д.) выполняем:
tar -xvjf имя_файла

x – извлечь файлы из архива;
v – подробный вывод информации на экран;
f – Обязательная опция. Если не указать, Tar будет пытаться использовать магнитную ленту вместо файла;
z – обработать архив сжатый gzip’ом;
j – обработать архив сжатый bzip’ом.

После выполнения, будет создана папка с именем, идентичным названию пакета.

Далее необходимо открыть эту созданную папку
cd имя_папки

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

Если программа собрана в виде исполняемого файла, то в папке будет находиться файл, с расширением .sh, обычно он так и называется install.sh. Его достаточно просто запустить на исполнение:
./install.sh

Если же программа представлено в исходном коде, выполняем следующие команды:
./configure
make
make install

После установки делаем:
make clean

Все, как ведите ничего сложного в установке программ в Linux нет.

Установка программ tar bz2, из исходных кодов в Linux

Linux-системы неразрывно связаны с концепцией GNU – проекта, поддерживающего и развивающего философию свободно распространяемого программного обеспечения (ПО), в том числе и в виде исходного кода. А поскольку систем на базе ядра Linux существует великое множество и разработчики дистрибутивов всегда для своих систем используют исходный код ПО при сборке комплектов утилит, пакетов, да и самого ядра, то, очевидно, что использование исходных кодов ПО — это неотъемлемый аспект в эксплуатации Linux-систем. По крайней мере, любому пользователю, достаточно хорошо освоившему UNIX-подобные системы, рано или поздно приходится сталкиваться со сборкой ПО из исходных кодов.

Читать еще:  Загрузка процессора 100 процентов Windows 10

Самым распространённым случаем, когда приходится собирать ПО из «исходников» является ситуация, когда в свет выходит новая версия какого-либо пакета с устранением критической уязвимости в системе безопасности или с добавлением важного функционала. Но поскольку системы Linux, как правило, снабжены хранилищами пакетов (репозиториями), из которых происходит загрузка, установка и обновление ПО, то часто бывает так, что разработчики дистрибутива, которые и поддерживают репозитории, ещё не успели сформировать новые пакеты ПО, для которых уже выпущено обновление. В этом случае можно прибегнуть к самостоятельной сборке требуемых пакетов из исходного кода.

Для чего нужно построение пакетов из исходного кода?

Как уже отмечалось ранее, это необходимо, в первую очередь для устранения брешей в безопасности. Часто новые версии ПО выпускаются в результате внедрения новых подходов и технологий при разработке и оптимизации программного кода, что существенно может сказаться на производительности ПО, и это также довольно частая причина обновления программных пакетов путём их сборки из исходных текстов.

Владельцы и администраторы хостинг-площадок предпочитают также устанавливать в качестве веб-серверов, PHP-интерпретаторов и серверов баз данных (БД) предварительно собранные на целевом оборудовании соответствующие программные пакеты. Это позволяет добиться максимальной совместимости ПО с оборудованием, на котором предполагается его работа и, как следствие — стабильности, что для веб-хостинга очень важно.

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

Общий порядок сборки пакетов — утилита make

Для облегчения сборки ПО из исходных кодов существует свободная утилита make. Она применяется во всех UNIX-подобных системах для подавляющего большинства утилит. При сборке пакета очень полезно изучать информацию, содержащуюся, как правило, в файлах README или INSTALL, входящих в пакет. В этих файлах разработчики ПО указывают инструкции и специфические мероприятия для успешной сборки пакетов. Здесь также можно найти и системные требования для работы ПО и описания необходимых зависимостей, без которых собрать пакет будет невозможно.

Общий порядок сборки выглядит так:

  1. Распаковка архива tar bz2, содержащего исходные коды (обычно именно так «исходники» и распространяются).
  2. Переход в директорию с распакованными исходными текстами.
  3. Конфигурирование предстоящей сборки (указание директорий установки, сторонних библиотек, архитектуры, дополнительных компонентов и т.д.). Для этого обычно используются служебные скрипты.
  4. Непосредственно, сама сборка — команда make.
  5. Установка (распространение) построенного ПО — команда make install.

Ниже будет приведена эта процедура на примере с FTP-клиентом FileZilla, итак распаковка архива с «исходниками»:

В результате, в домашнем каталоге пользователя в поддиректории Builds появится директория filezilla-3.38.1. Нужно перейти в неё:

Просмотрев содержимое этой директории можно заметить файл INSTALL, в котором приведены инструкции для сборки/установки FileZilla:

Посмотрим этот файл

Раздел «Compilation» из файла INSTALL:

Теперь, согласно этой инструкции, нужно создать директорию compile и перейти в неё:

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

Подобные скрипты создаются разработчиками ПО для облегчения процесса сборки/установки. Символы ../ означают переход в каталог на уровень вверх — именно там

по отношению к недавно созданной директории compile находится служебный скрипт configure.

Вывод этого скрипта показывает , готов ли данный пакет к сборке:

В данном случае для сборки необходима библиотека libfilezilla более свежей версии, чем имеющаяся на данный момент в системе. По указанному адресу её можно скачать и собрать отдельно:

Здесь также присутствует файл INSTALL с указанием порядка сборки библиотеки libfilezilla-0.15.0

Изучив вывод скрипта configure, можно сделать вывод о том, стоит ли далее приступать к сборке пакета. Обычно о критических ошибках сообщается фразами «configure: error». Убедившись, что всё нормально, можно приступать к построению:

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

В выводе этой команды при успешном завершении обычно присутствует сообщения вида:

Сборка и установка библиотеки завершена, можно приступать к построению пакета FileZilla:

По-умолчанию установка будет произведена в директорию /usr/bin. Для изменения директории установки следует использовать опцию —prefix=каталог:

Сборка FTP-клиента FileZilla из исходных кодов на этом завершена. Следует отметить, что для FileZilla требуются также сторонние библиотеки инструментов, обеспечивающие работу с криптографическими алгоритмами (nettle), а также для отрисовки графического пользовательского интерфейса (GUI) — wxWidgets. Специфические требования всегда указываются разработчиками ПО в файлах README или INSTALL, входящих в архив пакета или исходных кодов.

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

Обычно такие пакеты имеют идентичные с оригинальными наименования, но оканчивающиеся на «dev», к примеру nettle-3.1-dev или wx-gtk-base-dev. В данном примере предполагается, что данные пакеты установлены и правильно настроены.

Ручная сборка

Ручная сборка из исходных кодов выполняется следующим образом:

Для кода на процедурном C:

Здесь «program» — это собранный исполняемый файл, который можно теперь запускать:

Теперь стоит рассмотреть чуть более сложный вариант. Например, исходный код приложения состоит из классов, содержащихся в отдельных файлах. Класс BaseClass, заголовочный файл BaseClass.h:

Реализация, файл BaseClass.cpp:

Класс ChildClass, заголовочный файл ChildClass.h:

Файл с функцией main, main.cpp:

Пусть все приведённые файлы находятся в директории «HelloWorld», причём заголовочные файлы в поддиректории «include», а файлы реализаций *.cpp — в «src». Чтобы построить исполняемый файл в данном случае нужно выполнить следующие команды:

Определите аргументы программы! Пример: ./program 5.25

Автоматическая сборка — написание Make-файлов

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

Синтаксис Makefile’а следующий:

Это описание цели, в котором указываются зависимости dependencies, команды для достижения цели system command, а также сама цель target. Символ табуляции [tab] является обязательным и только этим символом обозначаются команды для достижения целей. Например, для данного примера, одна из целей будет иметь следующее описание:

Эта запись означает, что для получения объектного файла BaseClass.o нужно использовать исходный код из файла src/BaseClass.cpp, использовав команду g++, которой, в свою очередь, передаются соответствующие параметры.

Для вышеупомянутого проекта HelloWorld Make-файл будет иметь следующий вид:

Make-фалы обычно имеют имя Makefile. Это, своего рода унификация для того, чтобы утилита make самостоятельно отыскивала и распознавала Make-файлы без надобности явно их ей передавать в качестве аргумента в командной оболочке.

Теперь нужно выполнить команду make и запустить построенный исполняемый файл:

Но даже и такой вариант для больших проектов не подойдёт, поскольку придётся обрабатывать практически каждый файл отдельно, задавая для них описания целей. Используя правила implicit rules, а также predrfined implicit rules можно заставить Make-файл автоматически обрабатывать содержимое проекта и генерировать описания целей для его компонентов. Для того, чтобы составлять универсальные Make-файлы нужно придерживаться определённых правил или даже стандартов, определяющих структуру всего проекта, например:

  1. Имя конечного исполняемого файла должно совпадать с папкой проекта.
  2. Заголовочные файлы и файлы реализаций находятся в отдельных (include и src соответственно) поддиректориях.
  3. Функция main находится в отдельном файле, расположенном в корне проекта над директориями src и include.
  4. Объектные файлы должны создаваться в отдельной поддиректории, например obj.
  5. Конечный исполняемый файл должен создаваться в отдельной поддиректории, например build.

Make-файл, удовлетворяющий этим требованиям для данного проекта HelloWorld может иметь такой вид:

Обращение к переменным производится с помощью конструкции $(VALUE). Запись SOURCES=$(wildcard $(MAIN) $(SRC)/*.cpp) указывает, что исходные тексты будут искаться в поддиректории src по маске *.cpp и в файле main.cpp. А конструкция:

описывает, как будут генерироваться цели для создания объектных файлов в каталоге obj из исходных текстов файлов в каталоге src. Цель clean подразумевает удаление всего, что связано с предыдущими сборками. Функция filter-out, присутствующая в списке команд для этой цели, нужна для того, чтобы при очистке не удалились нужные файлы, в данном случае — main.cpp. Цель .PHONY описывает зависимости, не связанные напрямую с файлами.

Теперь, после выполнения команды make:

исполняемый файл будет в директории build:

Объектные файлы — в директории obj:

Следует отметить, что грамотное составление универсальных Make-файлов требует предварительно и внимательного изучения соответствующей документации, например по адресу http://www.gnu.org/software/make/manual/, где можно найти исчерпывающее описание для более подробного изучения данной темы.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Установка программ tar bz2, из исходных кодов в Linux

Linux-системы неразрывно связаны с концепцией GNU – проекта, поддерживающего и развивающего философию свободно распространяемого программного обеспечения (ПО), в том числе и в виде исходного кода. А поскольку систем на базе ядра Linux существует великое множество и разработчики дистрибутивов всегда для своих систем используют исходный код ПО при сборке комплектов утилит, пакетов, да и самого ядра, то, очевидно, что использование исходных кодов ПО — это неотъемлемый аспект в эксплуатации Linux-систем. По крайней мере, любому пользователю, достаточно хорошо освоившему UNIX-подобные системы, рано или поздно приходится сталкиваться со сборкой ПО из исходных кодов.

Читать еще:  Основы нейронных сетей на python

Самым распространённым случаем, когда приходится собирать ПО из «исходников» является ситуация, когда в свет выходит новая версия какого-либо пакета с устранением критической уязвимости в системе безопасности или с добавлением важного функционала. Но поскольку системы Linux, как правило, снабжены хранилищами пакетов (репозиториями), из которых происходит загрузка, установка и обновление ПО, то часто бывает так, что разработчики дистрибутива, которые и поддерживают репозитории, ещё не успели сформировать новые пакеты ПО, для которых уже выпущено обновление. В этом случае можно прибегнуть к самостоятельной сборке требуемых пакетов из исходного кода.

Для чего нужно построение пакетов из исходного кода?

Как уже отмечалось ранее, это необходимо, в первую очередь для устранения брешей в безопасности. Часто новые версии ПО выпускаются в результате внедрения новых подходов и технологий при разработке и оптимизации программного кода, что существенно может сказаться на производительности ПО, и это также довольно частая причина обновления программных пакетов путём их сборки из исходных текстов.

Владельцы и администраторы хостинг-площадок предпочитают также устанавливать в качестве веб-серверов, PHP-интерпретаторов и серверов баз данных (БД) предварительно собранные на целевом оборудовании соответствующие программные пакеты. Это позволяет добиться максимальной совместимости ПО с оборудованием, на котором предполагается его работа и, как следствие — стабильности, что для веб-хостинга очень важно.

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

Общий порядок сборки пакетов — утилита make

Для облегчения сборки ПО из исходных кодов существует свободная утилита make. Она применяется во всех UNIX-подобных системах для подавляющего большинства утилит. При сборке пакета очень полезно изучать информацию, содержащуюся, как правило, в файлах README или INSTALL, входящих в пакет. В этих файлах разработчики ПО указывают инструкции и специфические мероприятия для успешной сборки пакетов. Здесь также можно найти и системные требования для работы ПО и описания необходимых зависимостей, без которых собрать пакет будет невозможно.

Общий порядок сборки выглядит так:

  1. Распаковка архива tar bz2, содержащего исходные коды (обычно именно так «исходники» и распространяются).
  2. Переход в директорию с распакованными исходными текстами.
  3. Конфигурирование предстоящей сборки (указание директорий установки, сторонних библиотек, архитектуры, дополнительных компонентов и т.д.). Для этого обычно используются служебные скрипты.
  4. Непосредственно, сама сборка — команда make.
  5. Установка (распространение) построенного ПО — команда make install.

Ниже будет приведена эта процедура на примере с FTP-клиентом FileZilla, итак распаковка архива с «исходниками»:

В результате, в домашнем каталоге пользователя в поддиректории Builds появится директория filezilla-3.38.1. Нужно перейти в неё:

Просмотрев содержимое этой директории можно заметить файл INSTALL, в котором приведены инструкции для сборки/установки FileZilla:

Посмотрим этот файл

Раздел «Compilation» из файла INSTALL:

Теперь, согласно этой инструкции, нужно создать директорию compile и перейти в неё:

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

Подобные скрипты создаются разработчиками ПО для облегчения процесса сборки/установки. Символы ../ означают переход в каталог на уровень вверх — именно там

по отношению к недавно созданной директории compile находится служебный скрипт configure.

Вывод этого скрипта показывает , готов ли данный пакет к сборке:

В данном случае для сборки необходима библиотека libfilezilla более свежей версии, чем имеющаяся на данный момент в системе. По указанному адресу её можно скачать и собрать отдельно:

Здесь также присутствует файл INSTALL с указанием порядка сборки библиотеки libfilezilla-0.15.0

Изучив вывод скрипта configure, можно сделать вывод о том, стоит ли далее приступать к сборке пакета. Обычно о критических ошибках сообщается фразами «configure: error». Убедившись, что всё нормально, можно приступать к построению:

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

В выводе этой команды при успешном завершении обычно присутствует сообщения вида:

Сборка и установка библиотеки завершена, можно приступать к построению пакета FileZilla:

По-умолчанию установка будет произведена в директорию /usr/bin. Для изменения директории установки следует использовать опцию —prefix=каталог:

Сборка FTP-клиента FileZilla из исходных кодов на этом завершена. Следует отметить, что для FileZilla требуются также сторонние библиотеки инструментов, обеспечивающие работу с криптографическими алгоритмами (nettle), а также для отрисовки графического пользовательского интерфейса (GUI) — wxWidgets. Специфические требования всегда указываются разработчиками ПО в файлах README или INSTALL, входящих в архив пакета или исходных кодов.

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

Обычно такие пакеты имеют идентичные с оригинальными наименования, но оканчивающиеся на «dev», к примеру nettle-3.1-dev или wx-gtk-base-dev. В данном примере предполагается, что данные пакеты установлены и правильно настроены.

Ручная сборка

Ручная сборка из исходных кодов выполняется следующим образом:

Для кода на процедурном C:

Здесь «program» — это собранный исполняемый файл, который можно теперь запускать:

Теперь стоит рассмотреть чуть более сложный вариант. Например, исходный код приложения состоит из классов, содержащихся в отдельных файлах. Класс BaseClass, заголовочный файл BaseClass.h:

Реализация, файл BaseClass.cpp:

Класс ChildClass, заголовочный файл ChildClass.h:

Файл с функцией main, main.cpp:

Пусть все приведённые файлы находятся в директории «HelloWorld», причём заголовочные файлы в поддиректории «include», а файлы реализаций *.cpp — в «src». Чтобы построить исполняемый файл в данном случае нужно выполнить следующие команды:

Определите аргументы программы! Пример: ./program 5.25

Автоматическая сборка — написание Make-файлов

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

Синтаксис Makefile’а следующий:

Это описание цели, в котором указываются зависимости dependencies, команды для достижения цели system command, а также сама цель target. Символ табуляции [tab] является обязательным и только этим символом обозначаются команды для достижения целей. Например, для данного примера, одна из целей будет иметь следующее описание:

Эта запись означает, что для получения объектного файла BaseClass.o нужно использовать исходный код из файла src/BaseClass.cpp, использовав команду g++, которой, в свою очередь, передаются соответствующие параметры.

Для вышеупомянутого проекта HelloWorld Make-файл будет иметь следующий вид:

Make-фалы обычно имеют имя Makefile. Это, своего рода унификация для того, чтобы утилита make самостоятельно отыскивала и распознавала Make-файлы без надобности явно их ей передавать в качестве аргумента в командной оболочке.

Теперь нужно выполнить команду make и запустить построенный исполняемый файл:

Но даже и такой вариант для больших проектов не подойдёт, поскольку придётся обрабатывать практически каждый файл отдельно, задавая для них описания целей. Используя правила implicit rules, а также predrfined implicit rules можно заставить Make-файл автоматически обрабатывать содержимое проекта и генерировать описания целей для его компонентов. Для того, чтобы составлять универсальные Make-файлы нужно придерживаться определённых правил или даже стандартов, определяющих структуру всего проекта, например:

  1. Имя конечного исполняемого файла должно совпадать с папкой проекта.
  2. Заголовочные файлы и файлы реализаций находятся в отдельных (include и src соответственно) поддиректориях.
  3. Функция main находится в отдельном файле, расположенном в корне проекта над директориями src и include.
  4. Объектные файлы должны создаваться в отдельной поддиректории, например obj.
  5. Конечный исполняемый файл должен создаваться в отдельной поддиректории, например build.

Make-файл, удовлетворяющий этим требованиям для данного проекта HelloWorld может иметь такой вид:

Обращение к переменным производится с помощью конструкции $(VALUE). Запись SOURCES=$(wildcard $(MAIN) $(SRC)/*.cpp) указывает, что исходные тексты будут искаться в поддиректории src по маске *.cpp и в файле main.cpp. А конструкция:

описывает, как будут генерироваться цели для создания объектных файлов в каталоге obj из исходных текстов файлов в каталоге src. Цель clean подразумевает удаление всего, что связано с предыдущими сборками. Функция filter-out, присутствующая в списке команд для этой цели, нужна для того, чтобы при очистке не удалились нужные файлы, в данном случае — main.cpp. Цель .PHONY описывает зависимости, не связанные напрямую с файлами.

Теперь, после выполнения команды make:

исполняемый файл будет в директории build:

Объектные файлы — в директории obj:

Следует отметить, что грамотное составление универсальных Make-файлов требует предварительно и внимательного изучения соответствующей документации, например по адресу http://www.gnu.org/software/make/manual/, где можно найти исчерпывающее описание для более подробного изучения данной темы.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector