Добавление репозитория

В качестве внешнего репозитория будем использовать репозиторий Docker.

https://docs.docker.com/install/linux/docker-ce/debian/

  1. Удостоверится, что нужное ПО установлено. В частности: возможность получать данные по HTTPS, получать ключи, а также управлять дополнительными репозиториями.
  2. Надо получить ключ нового репозитория.
  3. Обновить кеш пакетов из всех подключённых на данный момент репозиториев.
  4. Установить ПО из подключённого репозитория.

Установка ПО из исходных кодов (компиляция прогрмм на C/C++)

Как происходит компиляция приложений на C

Исходный код представляет собой коллекцию .h и .cpp-файлов, которые должны работать вместе и из них должно получится бинарное приложение. Сама компиляция состоит из двух шагов:

  1. Компиляция .c или .cpp-файлов в объектные файлы.
  2. Линковка созданных объектных файлов в исполняемый файл.

Давайте напишем простейшее приложение на Си. Нам потребуется:

  1. Текстовый редактор. (vim, emacs и др.)
  2. Компилятор. Для установки базового набора из компилятора и ключевых библиотек в Debian можно поставить мета-пакет build-essential. После его установки у вас будут все средства для сборки простейших приложений (коих большинство).

В экосистеме GNU есть компилятор GCC: GNU C Compiler. Компания Apple развивает (или спонсирует) альтернативный проект, который называется LLVM в рамках которого развивается компилятор clang.

Для создания приложения нам надо создать файл с исходными кодами.

Системы сборки

В задачу системы сборки входит правильная настройка компилятора и корректное выполнение шагов компиляции приложения. В продвинутых системах сборки (не на C++) входит также возможность установки зависимостей.

Какие есть системы сборки?

  • Make
  • GNU Autotools
  • CMake
  • Ninja
  • QMake
  • ….

Make

Make - приложение, которое позволяет выполнять действия в соответствии с шаблонными правилами. Т.е. вы можете определить шаблон по переводу .c-файла в .o-файл, а make выполнит это действие для всех релевантных файлов.

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

Правила перевода одних типов файлов в другие описан в Makefile (или makefile).

В данном файле помимо правил также описываются различные цели. Цель позволяет определить конечный результат выполнения тех или иных действий. К примеру, у нас есть цель - готовое приложение, которое зависит от бинарных файлов, полученных в результате компиляции. Если мы попросим make достичь данную цель, то он сначала создаст все зависимости, а потом уже выполнит нужную цель. Таким образом можно стороить достаточно сложные связные цепочки по обработке исходных файлов.

Установка приложения с использованием Make

Давайте потренируемся в его использовании. Скомпилируем и установим приложение ne. http://ne.di.unimi.it/

  1. Получить исходный код приложения
$ wget http://ne.di.unimi.it/ne-3.1.2.tar.gz
  1. Распаковать архив с данным приложением
$ tar xf ne-3.1.2.tar.gz
  1. Перейти в каталог с приложением и запустить компиляцию. Обычно компиляция заключается в вызове make с специальными параметрами.

Как найти нужный пакет?

Перед нами стоит простая задача. Мы на 100% знаем название файла, который хотим получить. Но мы не знаем пакета, в котором содержится данный файл. Для решения этой задачи можно воспользоваться 2 инструментами:

  1. apt-file
  2. http://packages.debian.org