мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| glossary:gnu_linux:software_package [2025/04/30 11:27] – удалено - внешнее изменение (Дата неизвестна) A User Not Logged in | glossary:gnu_linux:software_package [2026/03/03 13:29] (текущий) – radi0dev | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== пакет ПО ====== | ||
| + | // | ||
| + | |||
| + | // | ||
| + | |||
| + | // | ||
| + | |||
| + | // | ||
| + | |||
| + | Помимо классических пакетов ПО есть более современные технологии упаковки ПО: | ||
| + | * **Flatpak**: | ||
| + | * **Snap**: Разработан компанией Canonical, Snap также использует контейнеризацию для обеспечения изоляции приложений и их зависимостей, | ||
| + | * **AppImage**: | ||
| + | |||
| + | ===== О назначениях директорий ===== | ||
| + | |||
| + | (в контексте префиксов (PREFIX)) | ||
| + | |||
| + | (в соответствии с " | ||
| + | |||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | |||
| + | Подробнее об иерархиях файлов (префиксах) далее. | ||
| + | |||
| + | |||
| + | ==== Подробнее о прификсах ==== | ||
| + | |||
| + | Префикс ''/'' | ||
| + | Вряд ли когда-нибудь вам придётся его выбирать. Он используется для программ, | ||
| + | |||
| + | Префикс ''/ | ||
| + | Стандартный префикс, | ||
| + | |||
| + | Префикс ''/ | ||
| + | Отличный префикс для установки туда программ самостоятельно. Хорош тем, что ''/ | ||
| + | |||
| + | Префиксы, | ||
| + | Советую в случае, | ||
| + | |||
| + | При любой установке пакетов в один префикс (что почти неизбежно), | ||
| + | < | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Всё смешано. Нет единой папки, которая бы содержала «всё, связанное с foo» и другой папки, которая бы содержала «всё, связанное с bar». (GoboLinux решает эту проблему) | ||
| + | |||
| + | Префиксы вида ''/ | ||
| + | < | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Недостаток у такого решения тоже есть. Вам придётся самому добавлять все эти бесчисленные каталоги ''/ | ||
| + | |||
| + | /* | ||
| + | %% | ||
| + | |||
| + | ## Создание простого пакета | ||
| + | (https:// | ||
| + | Сборка будет при помощи [Make](Make.md). Хотя можно использовать и более высокоуровневые программы, | ||
| + | Исходный текст программы: | ||
| + | '''''' | ||
| + | // hello.c | ||
| + | #include < | ||
| + | |||
| + | int main (void){ | ||
| + | printf (" | ||
| + | return 0; | ||
| + | } | ||
| + | '''''' | ||
| + | и Makefile: | ||
| + | '''''' | ||
| + | # это и есть prefix (о нём ниже) | ||
| + | # В качестве дефолтного префикса у нас указан /usr/local | ||
| + | # (пользователь сможет его переопределить) | ||
| + | PREFIX=/ | ||
| + | |||
| + | # | ||
| + | CC=cc | ||
| + | |||
| + | #флаги компиляции | ||
| + | CFLAGS= | ||
| + | |||
| + | all: hello | ||
| + | |||
| + | hello: hello.c | ||
| + | $(CC) $(CFLAGS) -o hello hello.c | ||
| + | |||
| + | install: all | ||
| + | mkdir -p $(PREFIX)/ | ||
| + | #install - почти как cp, но использовать стоит install | ||
| + | install hello $(PREFIX)/ | ||
| + | '''''' | ||
| + | Допустим, | ||
| + | |||
| + | > [!tip] | ||
| + | > То есть смотрите. Вы залогинены под юзером user. Ваш домашний каталог ''/ | ||
| + | |||
| + | Теперь по поводу prefix. Когда вы устанавливаете какой-нибудь пакет, вы должны указать ему так называемый prefix, т. е. каталог, | ||
| + | То есть, например, | ||
| + | |||
| + | Пример makefile для cpp кода: | ||
| + | '''''' | ||
| + | PREFIX=/ | ||
| + | CXX=c++ | ||
| + | CXXFLAGS= | ||
| + | |||
| + | all: hello | ||
| + | |||
| + | hello: hello.cpp | ||
| + | $(CXX) $(CXXFLAGS) -o hello hello.cpp | ||
| + | |||
| + | install: all | ||
| + | mkdir -p $(PREFIX)/ | ||
| + | install hello $(PREFIX)/ | ||
| + | '''''' | ||
| + | |||
| + | ___ | ||
| + | |||
| + | */ | ||