установка приложений в Linux
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
Установка приложений в Linux множественно описана ... но тут в последние годы появляются всякая срань новые методы: snap, flatpak, appimage ...
Это в дополнение к традиционным старым способам:
1). разархивирование "от корня" (очень старый и уже подзабытый способ UNIX);
2). сборка и установка из исходных кодов;
3). установка из репозиториев пакетных систем (DEB, RPM и др.);
Тут нужна ясность...
Это в дополнение к традиционным старым способам:
1). разархивирование "от корня" (очень старый и уже подзабытый способ UNIX);
2). сборка и установка из исходных кодов;
3). установка из репозиториев пакетных систем (DEB, RPM и др.);
Тут нужна ясность...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
Хорошая статья: Как работают snap, flatpak, appimage
26 июн 2022 в 17:51
Распространение приложений в линуксе - это боль. Причем в наше время цикл обновлений приложений все уменьшается и эта боль чувствуется все сильнее. В связи с этим появляются технологии вроде snap, flatpak, которые декларируют решение этих проблем.
Disclaimer: в этой статье я не буду давать каких-то оценок, пытаться говорить что лучше. Только как это работает. Я предполагаю, что читатель знает что такое контейнеризация и как это примерно работает.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
Вот ... ещё "твоение", с позволения сказать ... "дистрибутив для обездоленного африканского народа" : Обзор дистрибутива Endless OS
Endless OS — детище молодой компании Endless Mobile, которая специализируется на выпуске недорогих компактных компьютеров для развивающихся стран. Типичный представитель целевой аудитории Endless Mobile — африканец из глухой деревни, где даже мобильная связь — это роскошь. Поэтому Endless Computer — не просто недорогой, но и интуитивно понятный комп, не требующий подключения к интернету.
endless mini
Т.е., нужно понимать, у африканского народа WiFi и сети нет, но флешек у них в достатке...Полный образ Endless OS весит около 14 Гбайт и включает в себя больше 100 приложений на все случаи жизни и больше 50 тысяч статей из Википедии, а также различные обучающие программы.
Магазин приложений удобный. Достаточно нажать install, и приложение будет установлено без единого вопроса и уж тем более запроса прав суперпользователя.
... вот и уши торчат Windows ...В Endless OS нет понятия менеджера пакетов, да и самих пакетов тоже нет. Вся базовая часть дистрибутива, то есть та самая система, образ которой весит два гига, — это один монолитный неделимый кусок. Вы не можете заменить те или иные его части, как в других дистрибутивах, или удалить ненужный софт. Это одна цельная система, так же как и в случае с Windows или macOS.
Базовая инсталляция Endless OS недоступна для записи. Ее нельзя изменить, а значит, нельзя установить пакеты или собрать приложение из исходников и установить с помощью команды ./configure && make && make install. Вместо этого Endless OS предлагает устанавливать софт в форме самодостаточных пакетов Flatpak.
Flatpak — это реализация старой, как и сам Linux, идеи о том, что приложения следует устанавливать в обособленные каталоги вместо копирования их файлов в каталоги самой системы.
© В. Ульянов-Ленин.Правильной дорогой идёте, товарищи!
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
Вот что, без редактирования, я писал в ответ на форуме Linux Mint Россия, и с чем, слово в слово, согласен:
По мере возможностей, старайтесь не устанавливать ничего их snap или flatpak - это дурная практива пришедшай "из выньды"
Ищите, в первую очередь в стандартных репозиториях своего дистрибутива:
Если не знаете имя пакета нужного, ищите имя пакета по имени нужной программы (файла)
Если не находите - можете во вторую очередь ставить из .deb пакетов со страниц известных (доверенных) производителей (типа Viber и т.д.).
В третью очередь - регистрируйте сторонние приватные репозитории пакетов для установки.
В четвёртую очередь - собирайте (и устанавливайте, по необходимости) программы из исходных кодов (из GIT-репозиториев, желательно).
И только в последнюю, пятую, очередь, если ничего не помогает - устанавливайте из snap или flatpak.
P.S. Вот при таком порядке приоритетов у вас будет минимум неприятностей со всякими вредоносными троянами ... которых так (без всяких на то оснований) боятся начинающие пользователи Linux ... да и вообще, создать себе неприятностей разрушением конфигураций и разрушением системы непотребными инсталляциями.
Добавлю позже: Я лично, за многие годы, на десятке компьютеров и разных дистрибутивов, никогда и ничего не поставил из snap или flatpak. Просто нужды не возникало - других способов было остаточно. Но это ... личное мнение, IMHO.
По мере возможностей, старайтесь не устанавливать ничего их snap или flatpak - это дурная практива пришедшай "из выньды"
Ищите, в первую очередь в стандартных репозиториях своего дистрибутива:
Код: Выделить всё
$ aptitude search <имя пакета>
Код: Выделить всё
$ apt-file search <имя-программы>
В третью очередь - регистрируйте сторонние приватные репозитории пакетов для установки.
В четвёртую очередь - собирайте (и устанавливайте, по необходимости) программы из исходных кодов (из GIT-репозиториев, желательно).
И только в последнюю, пятую, очередь, если ничего не помогает - устанавливайте из snap или flatpak.
P.S. Вот при таком порядке приоритетов у вас будет минимум неприятностей со всякими вредоносными троянами ... которых так (без всяких на то оснований) боятся начинающие пользователи Linux ... да и вообще, создать себе неприятностей разрушением конфигураций и разрушением системы непотребными инсталляциями.
Код: Выделить всё
P.P.S
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
Вот этому варианту - установка из исходных кодов - очень стоит по-новой уделить внимание (тем более, что тема эта рассматривается в разделе "Программирование", т.е. с минимальным хотя бы "уклоном" )...
К разным способам сборки и установки проектов и приложений из исходных кодов. Что является, вообще то, основой операционной системы, построенной на опенсорсных принципах, сформулированных ещё Ричардом Столмманом с сотоварищи...
И от древних и до последних времён...
Тем более, что постоянно задают такие вопросы, и у нас тут уже есть обстоятельная тема: Помогите научиться устанавливать программы из исходного кода (хоть там тема и начата в 2009 году ... и последние активные обсуждения там 2017 год, 6 лет тому - там есть актуальные вещи к теперешнему рассмотрению).
Начинаем от простейших вариантов:
а). компиляция простейшей программы HelloWorld:
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/Tools_Linux/Texamples/hello-prog$ gcc hello_world.c -o hello_world
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/Tools_Linux/Texamples/hello-prog$ ls -l hello_world
-rwxrwxr-x 1 olej olej 15968 мар 3 14:46 hello_world
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/Tools_Linux/Texamples/hello-prog$ echo $PATH
/home/olej/.bin:/home/olej/.sdkman/candidates/kotlin/current/bin:/home/olej/.bin:/home/olej/.cargo/bin:/home/olej/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Для запуска вашей программы достаточно просто набрать имя файла:
Код: Выделить всё
$ hello_world
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
б). использование make ...
Для выполнения действий утилита make использует сценарий Makefile ... например, в простейшем виде:
Код: Выделить всё
CC = gcc -Wall
SRC = hello_world mgetopt mgetenv hello_world_mif
all: $(SRC)
...
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/Tools_Linux/Texamples/hello-prog$ make
gcc -Wall hello_world.c -o hello_world
gcc -Wall mgetopt.c -o mgetopt
gcc -Wall mgetenv.c -o mgetenv
gcc -Wall hello_world_mif.c -o hello_world_mif
Вовсе не потому что all (можете назвать её хоть: sobaka ), а потому, что make без указания имени цели - выполняет 1-ю встретившуюся цель в Makefile.
Может ли быть скрипт цели отличающийся от Makefile? Да запросто:
Код: Выделить всё
$ make -f NewScript
...
Это внутренние переменные, база данных make.
Получить их все для ознакомления можно так:
Код: Выделить всё
$ make -f/dev/null --print-data-base > make.data-base
make: *** Нет целей. Останов.
Код: Выделить всё
$ ls -l make.data-base
-rw-rw-r-- 1 olej olej 48290 авг 24 21:13 make.data-base
Код: Выделить всё
$ cat make.data-base
# GNU Make 4.2.1
# Эта программа собрана для x86_64-pc-linux-gnu
...
# База данных Make, напечатана Wed Aug 24 21:17:56 2022
...
# Переменные
COMPILE.cpp = $(COMPILE.cc)
...
# по умолчанию
CC = cc
...
Этого, в общем, достаточно чтобы начать пользоваться make ...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
Поехали дальше - от меньшего к большему...
Чем плох вариант просто make? Он замечательно работает в конкретной инсталляции дистрибутива/ОС, но не переносим.
И тогда появляется:
в). AutoTools Build - один из самых старых (из используемых) способов сборки и установки приложений...
Но этот способ (и далее) проще показывать на примере какого-то готового проекта ... Вот к примеру c-ares/INSTALL.md (не важно что это за проект ... недавно возился в разрешение DNS - страница открытой осталась ):
Как только вы видите в проекте файл ./configure - значит может использоваться этот способ. configure - это скрипт содержащий набор тестов (поиск путей tools, небольшие программы для исполнения...) тестирующих окружение выполнения, и формирующих файл Makefile для следующего шага make.AutoTools Build
...
A normal Unix installation is made in three or four steps (after you've unpacked the source archive):You probably need to be root when doing the last command.Код: Выделить всё
./configure make make install
Обычная практика:
Код: Выделить всё
./configure --help
Наиболее часто:
Код: Выделить всё
./configure --prefix=/path/to/c-ares/tree
Код: Выделить всё
./configure --prefix=$HOME
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
г). следующая практика (более поздняя) - Cmake:
В чём "фишка":CMake builds
Current releases of c-ares introduce a CMake v3+ build system that has been tested on most platforms including Windows, Linux, FreeBSD, MacOS, AIX and Solaris.
In the most basic form, building with CMake might look like:Код: Выделить всё
cd /path/to/cmake/source mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/cares .. make sudo make install
- в отдельном каталоге ./build Cmake строит Makefile
- по которому потом производится сборка.
Признаком такой сборки в исходниках будет файл-скрипт правил Cmake, типа такого: CMakeLists.txt
Про Cmake здесь тема: CMake
С Cmake связаны некоторые неприятности - в некоторых новых дистрибутивах Cmake не устанавливается из-за проблем с зависимостями, см. Linux Mint 21:CMake — кроcсплатформенная утилита для автоматической сборки программы из исходного кода. При этом сама CMake непосредственно сборкой не занимается, а представляет из себя front-end. В качестве back-end`a могут выступать различные версии make и Ninja.
Настолько, что я не советовал бы спешить переходить с Mint 21 на Mint 21.1
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
д). Модной альтернативой make является новый мнструмент сборки Ninja, см. Ninja.
Файл скрипта сборки для Ninja умеет создавать Cmake:Предложена Google взамен много десятилетней системе make.
Аргументация: значительное ускорение сборки крупных проектов (первоначально была применена в сборке Chromium/Chrome, компиляция-сборка которого может идти и часы).
Всё тот хе проект c-ares в качестве образца:
Код: Выделить всё
cd /path/to/cmake/source
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/cares -G "Ninja" ..
ninja
sudo ninja install
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
установка приложений в Linux
Там же сравнение по скорости сборки проекта glmark2 (тесты OpenGL):
Разница существенная (особенно для крупных проектов).
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя