установка приложений в Linux

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 12 фев 2023, 23:35

Установка приложений в Linux множественно описана ... но тут в последние годы появляются всякая срань новые методы: snap, flatpak, appimage ...
Это в дополнение к традиционным старым способам:
1). разархивирование "от корня" (очень старый и уже подзабытый способ UNIX);
2). сборка и установка из исходных кодов;
3). установка из репозиториев пакетных систем (DEB, RPM и др.);
Тут нужна ясность...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 12 фев 2023, 23:39

Olej писал(а):
12 фев 2023, 23:35
Тут нужна ясность...
Хорошая статья: Как работают snap, flatpak, appimage
26 июн 2022 в 17:51
Распространение приложений в линуксе - это боль. Причем в наше время цикл обновлений приложений все уменьшается и эта боль чувствуется все сильнее. В связи с этим появляются технологии вроде snap, flatpak, которые декларируют решение этих проблем.
Disclaimer: в этой статье я не буду давать каких-то оценок, пытаться говорить что лучше. Только как это работает. Я предполагаю, что читатель знает что такое контейнеризация и как это примерно работает.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 18 фев 2023, 23:07

Вот ... ещё "твоение", с позволения сказать ... "дистрибутив для обездоленного африканского народа" :-o : Обзор дистрибутива Endless OS
Endless OS — детище молодой компании Endless Mobile, которая специализируется на выпуске недорогих компактных компьютеров для развивающихся стран. Типичный представитель целевой аудитории Endless Mobile — африканец из глухой деревни, где даже мобильная связь — это роскошь. Поэтому Endless Computer — не просто недорогой, но и интуитивно понятный комп, не требующий подключения к интернету.
endless mini
Полный образ Endless OS весит около 14 Гбайт и включает в себя больше 100 приложений на все случаи жизни и больше 50 тысяч статей из Википедии, а также различные обучающие программы.
Т.е., нужно понимать, у африканского народа WiFi и сети нет, но флешек у них в достатке... :lol:
Магазин приложений удобный. Достаточно нажать install, и приложение будет установлено без единого вопроса и уж тем более запроса прав суперпользователя.
:-o
В Endless OS нет понятия менеджера пакетов, да и самих пакетов тоже нет. Вся базовая часть дистрибутива, то есть та самая система, образ которой весит два гига, — это один монолитный неделимый кусок. Вы не можете заменить те или иные его части, как в других дистрибутивах, или удалить ненужный софт. Это одна цельная система, так же как и в случае с Windows или macOS.
... вот и уши торчат Windows ...
Базовая инсталляция Endless OS недоступна для записи. Ее нельзя изменить, а значит, нельзя установить пакеты или собрать приложение из исходников и установить с помощью команды ./configure && make && make install. Вместо этого Endless OS предлагает устанавливать софт в форме самодостаточных пакетов Flatpak.

Flatpak — это реализация старой, как и сам Linux, идеи о том, что приложения следует устанавливать в обособленные каталоги вместо копирования их файлов в каталоги самой системы.
Правильной дорогой идёте, товарищи!
© В. Ульянов-Ленин.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 19 фев 2023, 07:25

Вот что, без редактирования, я писал в ответ на форуме Linux Mint Россия, и с чем, слово в слово, согласен:

По мере возможностей, старайтесь не устанавливать ничего их snap или flatpak - это дурная практива пришедшай "из выньды" 🙄

Ищите, в первую очередь в стандартных репозиториях своего дистрибутива:

Код: Выделить всё

$ aptitude search <имя пакета>
Если не знаете имя пакета нужного, ищите имя пакета по имени нужной программы (файла)

Код: Выделить всё

$ apt-file search <имя-программы>
Если не находите - можете во вторую очередь ставить из .deb пакетов со страниц известных (доверенных) производителей (типа Viber и т.д.).

В третью очередь - регистрируйте сторонние приватные репозитории пакетов для установки.

В четвёртую очередь - собирайте (и устанавливайте, по необходимости) программы из исходных кодов (из GIT-репозиториев, желательно).

И только в последнюю, пятую, очередь, если ничего не помогает 🤣 - устанавливайте из snap или flatpak.

P.S. Вот при таком порядке приоритетов у вас будет минимум неприятностей со всякими вредоносными троянами ... которых так (без всяких на то оснований) боятся начинающие пользователи Linux ... да и вообще, создать себе неприятностей разрушением конфигураций и разрушением системы непотребными инсталляциями.
Добавлю позже: Я лично, за многие годы, на десятке компьютеров и разных дистрибутивов, никогда и ничего не поставил из snap или flatpak. Просто нужды не возникало - других способов было остаточно. Но это ... личное мнение, IMHO.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 03 мар 2023, 15:21

Olej писал(а):
12 фев 2023, 23:35
2). сборка и установка из исходных кодов;
Вот этому варианту - установка из исходных кодов - очень стоит по-новой уделить внимание (тем более, что тема эта рассматривается в разделе "Программирование", т.е. с минимальным хотя бы "уклоном" ;-) )...

К разным способам сборки и установки проектов и приложений из исходных кодов. Что является, вообще то, основой операционной системы, построенной на опенсорсных принципах, сформулированных ещё Ричардом Столмманом с сотоварищи...
И от древних и до последних времён...

Тем более, что постоянно задают такие вопросы, и у нас тут уже есть обстоятельная тема: Помогите научиться устанавливать программы из исходного кода (хоть там тема и начата в 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
Скопируем полученный бинарный файл hello_world в любой каталог перечисленный в переменной PATH:

Код: Выделить всё

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
(Ого! Набралось у меня в $PATH ... :-( Надо бы укоротить :!: )

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

Код: Выделить всё

$ hello_world
...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 03 мар 2023, 16:17

Olej писал(а):
03 мар 2023, 15:21
а). компиляция простейшей программы HelloWorld:
б). использование 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?
Вовсе не потому что all (можете назвать её хоть: sobaka :-D ), а потому, что make без указания имени цели - выполняет 1-ю встретившуюся цель в Makefile.
Может ли быть скрипт цели отличающийся от Makefile? Да запросто:

Код: Выделить всё

$ make -f NewScript
...
Откуда берутся переменные-определения в сценариях Makefile? Типа: CC, CXX, COPT, LDOPT и т.д.
Это внутренние переменные, база данных 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
...
Очень часто в Makefile определяются цели install и deinstall - это, ясное дело: установка и удаление полученных результатов сборки в системе.

Этого, в общем, достаточно чтобы начать пользоваться make ...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 03 мар 2023, 19:55

Olej писал(а):
03 мар 2023, 15:21
а). компиляция простейшей программы HelloWorld:
Olej писал(а):
03 мар 2023, 16:17
б). использование make ...
Поехали дальше - от меньшего к большему...
Чем плох вариант просто make? Он замечательно работает в конкретной инсталляции дистрибутива/ОС, но не переносим.

И тогда появляется:
в). AutoTools Build - один из самых старых (из используемых) способов сборки и установки приложений...
Но этот способ (и далее) проще показывать на примере какого-то готового проекта ... Вот к примеру c-ares/INSTALL.md (не важно что это за проект ... недавно возился в разрешение DNS - страница открытой осталась :lol: ):
AutoTools Build
...
A normal Unix installation is made in three or four steps (after you've unpacked the source archive):

Код: Выделить всё

./configure
make
make install
You probably need to be root when doing the last command.
Как только вы видите в проекте файл ./configure - значит может использоваться этот способ. configure - это скрипт содержащий набор тестов (поиск путей tools, небольшие программы для исполнения...) тестирующих окружение выполнения, и формирующих файл Makefile для следующего шага make.

Обычная практика:

Код: Выделить всё

./configure --help
Позволяет уточнить некоторые опции сборки от автора проекта (т.е. в разных проектах - это по-разному).

Наиболее часто:

Код: Выделить всё

./configure --prefix=/path/to/c-ares/tree

Код: Выделить всё

./configure --prefix=$HOME
Это обычная практика определить куда вы хотите инсталлировать проект.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 03 мар 2023, 20:01

Olej писал(а):
03 мар 2023, 19:55
в). AutoTools Build - один из самых старых
г). следующая практика (более поздняя) - 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 — кроcсплатформенная утилита для автоматической сборки программы из исходного кода. При этом сама CMake непосредственно сборкой не занимается, а представляет из себя front-end. В качестве back-end`a могут выступать различные версии make и Ninja.
С Cmake связаны некоторые неприятности - в некоторых новых дистрибутивах Cmake не устанавливается из-за проблем с зависимостями, см. Linux Mint 21:
Настолько, что я не советовал бы спешить переходить с Mint 21 на Mint 21.1

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

установка приложений в Linux

Непрочитанное сообщение Olej » 03 мар 2023, 20:20

Olej писал(а):
03 мар 2023, 19:55
б). использование make ...
д). Модной альтернативой make является новый мнструмент сборки Ninja, см. Ninja.
Предложена Google взамен много десятилетней системе make.
Аргументация: значительное ускорение сборки крупных проектов (первоначально была применена в сборке Chromium/Chrome, компиляция-сборка которого может идти и часы).
Файл скрипта сборки для Ninja умеет создавать Cmake:
Olej писал(а):
03 мар 2023, 20:01
В качестве back-end`a могут выступать различные версии make и Ninja.
Всё тот хе проект 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

Непрочитанное сообщение Olej » 03 мар 2023, 20:24

Olej писал(а):
03 мар 2023, 20:20
см. Ninja.
Там же сравнение по скорости сборки проекта glmark2 (тесты OpenGL):
Olej писал(а):
18 июл 2022, 14:42
Старая, более традиционная сборка:
Olej писал(а): ↑
18 июл 2022, 13:42
real 9m0,221s
user 0m2,848s
sys 0m0,436s
Сборка с Ninja:
Olej писал(а): ↑
18 июл 2022, 14:10
real 4m49,134s
user 6m43,434s
sys 0m28,591s
Разница существенная (особенно для крупных проектов).

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя