Добавить в корзинуПозвонить
Найти в Дзене

ЛИН_3. Варианты установки ПО в линуксах (часть 1)

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

Итак, двигаемся дальше. Сегодняшняя тема - «Установка ПО в линуксах».

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

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

Также даю ссылку на публикацию-оглавление - (ссылка). Через нее можно найти другие публикации.

Давайте приступим к их рассмотрению.

Переносимые приложения

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

Это пакеты AppImage. К сожалению, не сильно распространены. Из полезностей - программа OpenShot. С помощью нее можно монтировать ролики. А ролики - это не только «развлекательные видосики», но еще и видеоинструкции, наличие которых может очень сильно помочь и при внедрении ПО, и при ее поддержке.

Скачать можно с официального сайта, а также с github или sourceforge. Возьму файл с github:

https://github.com/OpenShot/openshot-qt/releases

Нужно прокрутить страницу до ссылок на файлы и выбрать файл с расширением .AppImage:

-2

Кликаем, ждем загрузки файла:

-3

В принципе, его можно запускать из любой директории. Но сделаем по-уму.

С помощью проводника зайдем в домашний каталог, создадим там новый каталог:

-4

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

Переименуем созданный каталог в «repo» (кликнуть правой кнопкой мыши по «новая папка», в контекстном меню - «Переименовать...», указать название - repo):

-5

Заходим в созданный каталог, аналогичным образом создаем в нем еще один, переименовываем его в «openshot»:

-6

Далее перемещаем скаченный файл из каталога «Загрузки» в каталог openshot (как и в виндоусе ctrl+x = «вырезать», ctrl + c = «вставить»), после перемещения нужно сделать файл программы исполняемым (кликнуть по нему правой кнопкой мыши, в контекстном меню выбрать пункт «Свойства»; откроется окно свойств файла, перейти на закладку «Права» и выставить галку «Позволить выполнение файла как программы». После этого - закрыть окно свойств.

-7

Далее сделаем ярлык на рабочий стол. Для этого надо:

  • кликнуть в свободном месте рабочего стола, в контекстном меню выбрать пункт «Создать кнопку запуска...», откроется окно создания ярлыка:
-8

  • в данном окне ввести имя ярлыка, нажать кнопку «Просмотреть», откроется окно выбора программы, для которой мы делаем ярлык. Заходим в /home/[имя пользователя]/repo/openshot/, кликнуть по нашему файлу, далее кликаем кнопку «Открыть», в результате в окне создания ярлыка, в поле «Команда» будет прописан путь к нашему файлу. Далее нажать кнопку «ОК»:
-9

В результате на рабочем столе будет создан ярлык. Кликаем по нему - открывается программа для видеомонтажа OpenShot:

-10

Пакетная установка

Пакетная установка - это основной способ установки ПО. Имеется 3 варианта пакетов:

  1. Системные пакеты (и в Debian, и в Linux Mint - это deb-пакеты).
  2. Пакеты Snap.
  3. Пакеты Flatpak.

Установка системных пакетов

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

Однако какой бы вы способ не выбрали - на уровне ОС все равно будет использоваться менеджер пакетов(и в Debian, и в Linux Mint - это apt).

Менеджер пакетов APT

Давайте рассмотрим основные функции пакетного менеджера apt:

  • поиск пакетов
  • установка пакетов
  • обновление пакетов
  • удаление пакетов

Поиск пакетов

Поиск пакетов осуществляется одновременно в 2 направлениях - в подключенных репозитариях и среди установленных пакетов. Для поиска явно (в терминале) или неявно (через графические приложения) используется команда:

sudo apt search [имя пакета]

Примечание!!! Есть нюанс - если у вас помимо «обычных» репозитариев подключены snap и/или flatpak репозитарии, то в графических приложениях указанная выше команда дополняется командой (-ами) поиска в этих репозитариях. Но о snap и flatpak поговорим ниже.

Соответственно, есть 3 возможных варианта:

  • пакет установлен;
  • пакет может быть установлен;
  • пакет не установлен и его нет в связанных репозитариях.

Давайте посмотрим, как это выглядит в Linux Mint Mate.

Посмотрим результат, который выдаст команда:

sudo apt search mintinstall

-11

Как видно из скриншота - пакет обнаружен (1), статус пакета - установлен (2).

Теперь попробуем то же самое в графической программе «Менеджер приложений»:

-12

Результат, само-собой, тот же самый. Пакет обнаружен (2) - соответствующая плашка есть, статус пакета «установлен» (3) - на плашке присутствует зеленая галка.

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

sudo apt search ksnip

-13

То есть, терминал обнаружил пакет(1), этот пакет не установлен, но может быть установлен(2).

То же самое в «Менеджере приложений»:

-14

Пакет найден и может быть установлен(2) -  плашка есть, этот пакет не установлен (3) - зеленая галка отсутствует.

Ну и третий случай скриншотить не буду. Там ничего не выдаст ни терминал, ни «Менеджер приложений». Если есть желание, можно попробовать ввести какое-либо абсурдное название пакета, например:

sudo apt search 1234567890qwertyuiopasdfghjkl

Кроме того, можно посмотреть подробную информацию о том или ином пакете. Для этого в терминале надо выполнить команду:

sudo apt show [имя_пакета]

-15

Установка пакетов

С установкой пакетов также сталкивались в предыдущих публикациях. За установку отвечает команда:

  • sudo apt install [название пакета] - для установки из репозитариев;
  • sudo apt install [путь к пакету и название пакета] - для установки предварительно скачанных пакетов;

Соответственно, тут может быть 5 основных вариантов ответа. Давайте их рассмотрим, а заодно поставим еще пару полезных программ для Linux.

Вариант 1. Если пакет есть в связанных репозитариях, все все системные зависимости удовлетворены (об этом поговорим чуть ниже, будет отдельный подраздел) то просто начинается скачивание и развертывание пакета; то же самое, если вы ставите предварительно скачанный пакет. В качестве примера рассмотрим еще раз установку libreproject из скаченного deb-пакета:

-16

Как видно система устанавливает указанный нами пакет без дополнительных вопросов

Вариант 2. Если пакет есть в связанных репозитариях, часть зависимостей не удовлетворено, но соответствующие пакеты есть в связанных репозитариях, то система предупредит о том, что для установки пакета нужно поставить еще n пакетов и запросит разрешение на данную операцию; соответственно, абсолютно то же самое, если ставите предварительно скачанный пакет. В качестве примера рассмотрим установку программы для записи видео (интересный вариант для создания видеоинструкций):

-17

Как видно после ввода команды(1) система указывает какие пакеты и в каком количестве будут установлены на компьютер(2) и спрашивает разрешение на данную операцию. Положительный ответ - либо «Д», либо «Y» (латиница), любой другой - отрицательный. В случае положительного ответа система начинает установку всех указанных пакетов.

Для демонстрации аналогичного сценария в графическом интерфейсе «Менеджера программ» установим полезную утилиту «Alien» (позволяет конвертировать установочные пакеты в нужный формат, например rpm в deb):

-18

То есть при нажатии кнопки «Установить» (1), будет открыто еще одно окно (2), в котором будет указан список пакетов, которые будут также установлены (3). Подтвердить установку можно кнопкой «Продолжить» (4).

Вариант 3. Если вы ставите предварительно скачанный пакет, часть зависимостей не удовлетворено и хотя бы 1 пакет от наличия которого зависит работоспособность устанавливаемого пакета отсутствует в репозитариях, тогда система откажет в установке и выдаст информацию о том, отсутствие какого или каких пакетов в репозитариях препятствует установке (соответственно надо либо их докачивать, либо отказываться от установки, пример будет ниже в разделе «системные зависимости»);

Вариант 4. Если вы пытаетесь поставить пакет, который уже установлен, система оповестит об этом (если будете использовать терминал):

-19

В графическом же «Менеджере приложений» исключена даже попытка повторной установки (можно либо удалить, либо запустить):

-20

Вариант 5. Если вы пытаетесь поставить пакет, который отсутствует в репозитарии (или ошиблись с названием файла при локальной установке), тогда система укажет, что такого пакета/файла нет:

-21

Соответственно, в «Менеджере приложений» просто не будет ни одной плашки приложения для установки:

-22

Есть и некоторые другие варианты ответов, но в 90% случаев вы столкнетесь именно с описанными выше.

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

sudo apt list --installed

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

sudo apt list --installed > ~/list_of_pack.txt

-23

При выполнении команды по указанному пути («~» = «/home/myname») создается файл «list_of_pack.txt» со списком установленных пакетов:

-24

Примечание!!! Знак «~» обозначает путь к домашней папке. В приводимом примере «~» соответствует «/home/myname».

Обновление пакетов

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

sudo apt update

-25

Т.е. формируется список подключенных репозитариев (2), затем проводятся операции (3). Далее система информирует о количестве пакетов, которые можно обновить, а также подсказывает, какой командой можно посмотреть перечень этих пакетов. Давайте ее выполним:

sudo apt list --upgradable

-26

Собственно, выводит список пакетов (2).

Также в ОС могут иметь место графические индикаторы наличии не уставленных обновлений. Так в Linux Mint индикатор обновлений входит в апплет «Системный лоток», который «из коробки» устанавливается на системную панель:

-27

В случае если есть обновления загорается оранжевая точка.

В терминале обновить пакеты можно обновить командой:

sudo apt upgrade

-28

При вызове команды (1), система проводит ряд операций (см.скриншот), далее выводит список пакетов к обновлению (2), также укажет количество пакетов и запросит разрешение на обновление (3). Соответственно если указать «Y» или «Д», начнется обновление. При указании любого другого значения операция будет отменена.

Также обновление можно проводить с использованием графического интерфейса. В Linux Mint (Mate) для этого нужно кликнуть по индикатору с желтой точкой (1), откроется окно «Менеджера обновлений»(2):

-29

Первым делом надо перечитать информацию об обновляемых пакетов (3), далее не следует пугаться, что в терминале было 11 обновлений, а здесь - всего 3(4), будут обновлены все 11. Если нужно обновить только часть пакетов - снять галки (5) с тех пакетов которые обновлять не надо. Для проведения обновления - нажать кнопку «Установить обновление» (6).

Удаление пакетов

Удаление пакетов осуществляется одной из 2-х команд:

  • sudo apt remove [имя_пакета]
  • sudo apt purge [имя_пакета]

Между ними следующая разница - remove оставляет конфигурационные файлы, а purge выполняет полное удаление.

Системные зависимости

Если кратко - структура линуксов отстроена иерархически. Допустим, при установке «пакета А», ОС проверила, какие пакеты необходимы «пакету А» для функционирования и выявила, что необходим пакет «Б». Мы соглашаемся с установкой «пакета А» и «пакета Б». Далее нам потребовался «пакет В», система проанализировала необходимые для него пакеты и выявила, что ему тоже потребуется «пакет Б». В этом случае, система не будет повторно устанавливать «пакет Б», а воспользуется уже установленным. При этом не имеет значение, «пакет Б» - системная библиотека или нет.

Это имеет как свои плюсы, так и минусы. Самый большой минус заключается в следующем. Допустим, для «пакета А» требуется «пакет Б» версии от 1.х до 2.х. А более поздние версии не подходят. А для «пакета В» требуется «пакет Б» версии 3.х и выше. Это порождает проблему - вы не можете на один компьютер установить и «пакет А» и «пакет В».

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

Другой вариант решения проблемы - это использование универсальных пакетов snap и flatpak. О них мы поговорим в текущей публикации. Кратко - они не зависят от системных пакетов, устанавливаются изолированно от системных пакетов, все зависимости включены в пакет. То есть допустим «пакет А» устанавливается deb-пакетом и «пакет Б» подтягивается той версии, которая необходима для «пакета А». А «пакет В» устанавливается как flatpak или snap-пакет.

Проблемы с системными зависимостями в подавляющем большинстве случаев возникает при локальной установке. Либо при установке скаченного deb-пакета (этот случай будем рассматривать в данном разделе), либо при установки из исходников (об этом способе установки поговорим в отдельной публикации). Теоретически еще может ситуация с некорректным изъятием пакета из репозитария, однако лично ни разу с такой ситуацией не сталкивался.

Итак, давайте еще раз проговорим, что делает менеджер пакетов при локальной установке пакета (то есть предварительно скаченного на компьютер):

1. Проверяет системные зависимости с другими пакетами.

Примечание! deb-пакет - это не бинарный файл, а файловый архив. Есть спецификация, которая описывает состав deb-пакета. В том числе deb-пакет содержит файл «control» (каталог DEBIAN), в котором в том числе содержится перечень пакетов, от которых зависит работоспособность устанавливаемого пакета, а также рекомендуемые к установке пакеты.

2. Перечисленные в зависимостях пакеты также проверяются, не зависят ли они от других пакетов. Если зависимости найдены, они в свою очередь также проверяется на зависимости. И так далее в рекурсии.

3. Если все системные зависимости удовлетворены (т.е. все установлены в системе), apt начнет установку пакета без дополнительных вопросов.

4. Если не все системные зависимости удовлетворены, но в подключенных репозитарях есть все пакеты для ее удовлетворения, то apt предложит установить недостающие пакеты, если и если вы согласитесь, то все необходимые пакеты будут подтянуты в процессе установки.

5. Если хотя бы 1 пакет не содержится в подключенных репозитариях, apt не станет устанавливать пакет, но укажет, какие пакеты не удалось найти. Ну а далее вы либо «ручками» находите пакеты и устанавливаете эти пакеты, либо отказываетесь от установки программы, либо ищите snap- или flatpak пакеты (об этом будет ниже).

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

С простыми случаями мы уже сталкивались в предыдущих публикациях (когда вводили sudo apt install [необходимый_пакет], а система вместо 1-го устанавливала целую кучу пакетов). Поэтому рассмотрим случай посложнее, когда надо «поработать ручками». Установим в Debian "Менеджер программ" для Linux Mint (mintinstall).

Итак, первым делом узнаем название пакета. Для этого заходим в Linux Mint и запускаем тот самый графический менеджер пакетов («Менеджер программ»):

-30

В менеджере приложений открываем настройки и выбираем пункт «о программе», откроется окно, в котором будет указано название пакета (такой подход не всегда работает, но довольно часто):

-31

Итак, пакет называется «mintinstall». Запоминаем и переходим в Debian. Там открываем браузер и заходим в репозитарий Linux Mint:

http://packages.linuxmint.com/pool/main/m/mintinstall/

и кликаем по файлу «mintinstall_8.4.0_all.deb»:

-32

Ждем, когда пакет скачается. В домашней директории делаем папку repo, в ней - папку «Mintinstall», переносим в нее из «Загрузок» скачанный файл (скринить не буду, делать по аналогии как делали выше).

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

cd /home/myname/repo/mintinstall

-33

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

sudo apt install ./mintinstall_8.4.0_all.deb

-34

Как можем видеть на скриншоте у нас 2 неудовлетворенных зависимостей:

  • mint-common
  • apt-install-data

То есть в репозитариях Debian таких пакетов нет. Ищем и скачиваем. Также удобным будет помечать зависимости по уровням (например, в электронных таблицах):

-35

Снова идем в репозитарий Linux Mint и скачиваем эти 2 пакета:

  • mint-common:

http://packages.linuxmint.com/pool/main/m/mint-common/

-36

  • apt-install-data:

http://packages.linuxmint.com/pool/import/a/app-install-data-ubuntu/

-37

Переносим скаченные пакеты в /home/myname/repo/mintinstall и пытаемся их установить:

-38

Как видим на скриншоте, пакет установлен. На зачеркнутое крестиками внимание не обращаем. Установленные пакеты удобно помещать в отдельную папку. Также помечаем установленный пакет в xls-файле:

-39

Пытаемся установить mint-common:

-40

Пока - неудачно. Нужны еще 2 пакета:

  • aptkit
  • mint-translation

Качаем из репозитария:

  • aptkit:

http://packages.linuxmint.com/pool/main/a/aptkit/

-41

  • mint-translation

http://packages.linuxmint.com/pool/main/m/mint-translations/

-42

Переносим пакеты в папку /mintinstall, записываем пакеты в электронную таблицу:

-43

Пытаемся установить aptkit:

-44

И снова пока неудачно. Нужен пакет python3-defer.

Пробуем установить пакет mint-translation:

-45

Этот пакет установить удалось. Помечаем результаты в электронной таблице:

-46

Докачиваем пакет python3-defer:

http://packages.linuxmint.com/pool/upstream/p/python-defer/

-47

Переносим его в папку /mintinstall/ и пытаемся установить:

-48

Пакет установился. А теперь открываем наши записи в электронной таблице и последовательно устанавливаем «белые» пакеты снизу-вверх:

-49

В итоге получаем:

-50

Пробуем что-нибудь установить, например, тот же Gimp:

-51

Устраняем ошибку:

-52

Повторяем попытку установки программы из mintinstall:

-53

Установка началась (скриншотить запрос на установку доп.пакетов и ввод пароля не буду):

-54

Программа установилась и запускается:

-55

Вот примерно так обрабатываются системные зависимости.

Тем не менее, как говорится, нужно быть не только находчивым и внимательным, но еще и логически мыслящим. Потому что есть аналог менеджера приложений, который мы устанавливали. А устанавливается всего в одну команду, давайте попробуем на новой копии виртуалки:

sudo apt install gnome-software

-56

В результате получим аналог устанавливаемого ранее менеджера программ, но только без заморочек «ручным» разрешением системных зависимостей:

-57

Так что прежде чем тратить полчаса на на удовлетворение зависимостей, было бы правильно посмотреть, а нет ли аналога, который по функциональности не уступал бы, но был бы проще в установке. А неудобств тут значительно больше. Например, после обновления ОС программа может не заработать. А может начать сыпать ошибками. Если обновленные связанные пакеты будут несовместимы с пакетами, установленными вручную.

Поэтому применительно к нашему примеру скажем следующее. То, что mintinstall нельзя запустить на других ОС семейства линукс - это неправда. Однако в виду наличия аналога, функционально не уступающего данной программе, но имеющего преимущество в скорости установки и простоте поддержки установка данного пакета в ОС Debian не является целесообразным. Тем не менее в качестве более глубокого понимания принципа работы с системными зависимостями можно рекомендовать данную установку в качестве обучающего материала на учебную площадку.

Эту публикацию также пришлось разделить на 2 части. Окончание публикации - в следующей части (здесь).