No Description

yozh.sh bc7af360af pravki 1 week ago
DOCKER.md bc7af360af pravki 1 week ago
README.md eedfd03231 fix packege manager 1 month ago

README.md

ОС(Операционная Система)

Операционная система - программный комплекс, который предназначен для управления аппаратурой компьютеров и предоставления стандартного набора возможностей (API) приложениям.

Задачи, которые берет на себя ОС

  • Управление аппаратурой, драйвера устройств, предоставление программных интерфейсов для работы с аппаратурой.

Программное обеспечение с помощью которого ОС получает доступ к аппартному обеспечению(памяти, подключенным устройствам, процессору, сетевой карте и т.д)

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

  • Совместный доступ к ресурсам компьютера для разных одновременно работающих приложений

В ОС работает большое количество программ одновременно и всем надо выделять ресурсы(память, дисковое пространство и т.д) для корректной работы этих самых программ.

Основные ресурсы которые выделяются для работы программ:

  • Место на жестком диске

  • Оперативная память

  • Вычислительная мощность процессора

  • Сетевой канал для обмена данными

Основные уровни абстракции ОС на упрощеном примере Unix подобных систем

alt text

Файловая система

Файловая система - древовидная база данных, предназначенная для хранения файлов и директорий. Файловые системы обычно работают с энергонезависимыми носителями (HDD, SSD), однако в UNIX-системах файловые системы бывают еще виртуальные или, например, в ОЗУ, что, временами, очень удобно. Файловые системы бывают разные, но обычно они привязаны к одному носителю (диск, память, удаленный доступ по сети), имеют лимитированный объем, хранят в себе полезную информацию (в файлах) и, собственно, информацию о структуре файловой системы (имена файлов, права доступа, дерево директорий и т.д.)

alt text

Пользовательский интерфейс

GUI

На текущий момент на рынке интерфейсов победили GUI (Graphical User Interface) - те или иные графические интерфейсы, ориентированные на работу с тачскрином или мышью. Удобные и интуитивные для пользователя, они плохо подходят для автоматизации действий, так как предполагают наличие оператора, который будет находить и нажимать нужные кнопки на экране.

Gnome and Unity(Linux)

gui linux

Windows XP

win xp

KDE(Linux) kde hz

CLI (Command Line Interface)

CLI (Command Line Interface) - интерфейс командной строки, который предполгает взаимодействие с программами путем ввода команд и получение текстового результата работы команды. Данный способ не так интуитивен, как GUI, однако у него есть огромный плюс - команды могут вводится вслепую, а значит для запуска нескольких команд подряд вовсе не обязателен человек, смотрящий в экран. По этой причине задачи, выполняемый в CLI легко автоматизируются - достаточно предусмотреть механизм, который позволит запускать несколько команд последовательно из текстового файла или иного источника. Более того, современные командные интерфейсы (bash, zsh, powershell) являются вполне полноценными языками программирования. sh и bash вообще стояли у истоков многих языков программирования наподобие perl и php.

mac os

open cv

windows

Linux VS Windows

Плюсы Linux:

- Бесплатно
- Секурно(99% вирусов не запускаются под линуксом)
- Расширяемо(может работать распределенно на больших кластерах)
- Сужаемо(работает даже на вашем домашнем роутере)
- Переносимость
- Открытый исходный код
- Большое количество открытого и бесплатного софта
- Все можно настроить. Да-да, Все!
- Выпрямляет руки
- После установки ready to use

Минусы:

- Нет игр
- Популярный графический мультимедиа софт не работает(Adobe, Autodesk, VegasPro, etc)
- Бывают баги и что то падает
- Все нужно настраивать!
- Со старту не такой уж и user friendly
- Слишком большое количество дистрибутивов в котором можно запутаться
- Не прощает ошибок

Плюсы Windows:

- Много софта для любых мультимедиа задач(Adobe, Autodesk, Kompas3D, etc)
- Большое количество игр
- Работает даже на самом экзотическом железе
- Огромный набор графического софта под любые задачи
- Ее можно крякнуть :)
- Даже бабушка осилит

Минусы:

- Зависимость от одной компании
- Занимает много памяти и ресурсов
- Нет CLI(CMD.exe и Powershell не в счет)
- Привязаность к графическому окружению
- Большое количество вредноносного ПО
- Со старта даже браузера нормального нет
- Не переносимая от слова совсем
- Ограничена в настройке
- Файловая система(NTFS) закрытая и в разы медленнее чем линуховая(ext4)
- Не оставляет шансов старым компьютерам

Какой же линукс выбрать?!

distros

Мейнстрим:

Для любителей экзотики:

Семейства Дистрибутивов

Эти дистрибутивы стали базой для других не менее известных дистрибутивов:

Debian based Red Hat based ArchLinux based Gentoo based
Ubuntu Fedora ArchBang Calculate Linux
Linux Mint CentOS Arch Hurd Sabayon
Kali Linux Scientific Linux Elegance Zentoo
Elementary OS Oracle Linux Chakra Chromium OS

полный список дистрибутивов можно найти на сайте Distrowatch а так же на Педивикии

Общая структура файловой системы linux/unix/posix.

linux tree

Директория Описание
/корень
/bin(binaries) бинарные файлы пользователя
/sbin(system binaries) системные исполняемые файлы
/etc(etcetera) конфигурационные файлы
/dev(devices) файлы устройств
/proc(proccess) информация о процессах
/var(variable) Переменные файлы
/var/logФайлы логов
/var/libпеременные библиотеки
/var/mailпочта
/var/spoolпринтер
/var/lockфайлы блокировок
/var/runPID процессов
/tmp(temp) Временные файлы
/usr(user applications) Программы пользователя
/usr/bin/Исполняемые файлы
/usr/sbin/Системные исполняемые файлы
/usr/lib/Библиотеки
/usr/localФайлы пользователя
/homeДомашняя папка
/bootФайлы загрузчика
/lib(library) Системные библиотеки
/opt(Optional applications) Дополнительные программы
/mnt(mount) Монтирование
/mediaСъемные носители
/srv(server) Сервер
/runпроцессы
/sys(system) Информация о системе

Дерево каталогов включает в себя несколько файловых систем, которые монтируются в те или иные директории. Обычно структура приблизительно следующая:

Корень (/) - раздел на физическом диске /dev, /proc - виртуальные файловые системы, обеспечивают работу ОС /boot - зачастую отдельный раздел с загрузчиком ОС /media - флешки всякие /mnt - что хотите, то и примонтируете. Несмотря на то, что дерево в целом выглядит как единая сущность, каждая ФС в дереве обычно отличается по физическому носителю, размеру и особенностям работы.

UNIX CLI _>

CLI - очень крутая штука, особенно в UNIX-системах. Все это благодаря простоте, гибкости и мощности возможностей shell.

asmer

Вы видите текст приглашения, и курсор для ввода команд.

Команды

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

Команды запускаются следующим образом:

comands

Удобство CLI

Несмотря на то, что для среднего мышевоза нажимать кнопки на клавиатуре - непосильная задача, командно-строковой интерфейс обладает удобством, если знать его возможности. Не зря же многие мощные программные продукты имеют CLI в том или ином виде (q3, hl, cs, autocad, linux, so on...)

Клавиатурные комбинации:

TAB - святая кнопка, которая дополняет ваш текст. Не надо писать всё, надо жать TAB. Иногда два раза. CTRL-W - стереть слово до курсора CTRL-R - поиск по истории команд. Достаточно ввести любую часть другой команды что бы её выдернуть для использования сейчас. СТРЕЛКА ВВЕРХ - история Alt-B - слово назад. Более того, современная библиотека readline, которая используется в bash и других консолях (например mysql), умеет работать в режиме vi или emacs.

Команда history выводит историю ваших команд.

Создание и удаление файлов и директорий. touch, mkdir, rm, ls, cat, ...

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

pwd - (present working directory) показывает где мы сейчас находимся cd - (change directory) сменить дерикторию mkdir - (make dir) создать дерикторию rmdir - (remove dir) удалить дерикторию cp - (copy) копировать что либо mv - (move) переместить что либо rm - (remove) - удалить

Туда и обратно

cd ~/tmp # change directory: зайти в папку tmp в домашней папке текущего пользователя
cd       # идем в домашнюю папку
cd ./    # зайти в эту же папку
cd ../   # выйти на папку выше.

А есть че?

ls -la   # list подробно и с правами
ls       # list неподробно
ls -lah  # list подробно и с понятными размерами файлов

Я хочу создать!


touch filename           # создает пустой файл filename, или обновляет время доступа к файлу ("касается" его)
mkdir ~/newFolder        # создаем папку в домашнем каталоге
mkdir newFolder          # создаем папку в текущем каталоге
mkdir ../newFolder       # создаем папку рядом с текущим (т. е. на уровень выше)
mkdir -p ~/newFolder/1/2/3/4/5/6 # создадим сразу несколько папок друг в друге

Переименовать или перенести:

mv ~/newFolder/1/2/3/4/5/6 ~/newFolder # перенесем папку 6 из папки 5 в папку ~/newFolder
mv filename otherFilename              # переименуем файл в другое имя файла.

Копировать

cp otherFilename filename             # копируем один файл из otherFilename в filename
cp -vrf ~/newFolder/1/2/ ~/newFolder  # copy verbose recursive force папку ~/newFolder/1/2 в ~/newFolder

delete

Удалить

rm otherFilename      # remove file otherFilename
rm -rf ~/newFolder/1  # remove files and directories recursively forced.

А что в файле?

cat /etc/resolv.conf # conCAT /etc/resolv.conf

Как выйти из Vim или о текстовых редакторах

Все мы в той или иной степени знакомы с редакторами текста. Однако в мире UNIX редакторы изначально более мощные и гибкие, ориентированные на работу с кодом или конфигурационными файлами.

nano

nano - блокнот под CLI. имеет простой и понятный интерфейс, внизу есть подсказочки, все как вы ожидали в обычном простом редакторе. Символ ^ значит кнопку CTRL

nano

vim

ViM - (vi improved) - мощный редактор, который построен не на идее редактирования текста, а на идее программирования редактирования текста. Благодаря этому вы при редактировании оперируете не отдельными символами, а сущностями, имеющими отношение к структуре программного кода (слова, параметры, парные тэги/скобки и так далее)

Режимы работы ViM;
  • Нормальный. Это режим, в котором собственно происходит программирование текста

vim keys

Каждая клавиша на клавиатуре в этом режиме отвечает за то или иное действие: перемещение, изменение, удаление, вставку, копирование блока текста и так далее.

Выход из ViM
  • Esc:q! - выйти не сохраняясь
  • Esc:wqa - выйти, сохранив все файлы
  • ZZ - выход с сохранением.
  • Esc:x - эквивалент Esc:wq

Абсолютные и относительные пути, ~ и проч.

Пути бывают абсолютные и относительные, а так же относительно домашней папки(/home/username). Для этого используется следующий синтаксис:

/etc/ - Путь, начинающийся со слеша - абсолютный tmp - Путь без слеша означает путь относительно текущей папки. Иногда надо поставить ./ перед именем папки или файла (./tmp) ~/ - домашняя папка. Обычно /home/username. ~username - домашняя папка пользователя. .., ../ - папка уровнем выше ./ - текущая папка.

Потоки, конвейеры и черная магия

Стандартные потоки ввода-вывода в системах типа UNIX (и некоторых других) — потоки процесса, имеющие номер (дескриптор), зарезервированный для выполнения некоторых «стандартных» функций. Как правило (хотя и не обязательно), эти дескрипторы открыты уже в момент запуска задачи (исполняемого файла).

STDIN

Поток номер 0.

Зарезервирован для чтения команд пользователя или входных данных. При интерактивном запуске программы по умолчанию нацелен на чтение с устройства текстового интерфейса пользователя (клавиатуры). Командная оболочка UNIX (и оболочки других систем) позволяют изменять цель этого потока с помощью символа «<». Системные программы (демоны и т. п.), как правило, не пользуются этим потоком.

STDOUT

Поток номер 1.

Зарезервирован для вывода данных, как правило (хотя и не обязательно) текстовых. При интерактивном запуске программы по умолчанию нацелен на запись на устройство отображения (монитор). Командная оболочка UNIX (и оболочки других систем) позволяют перенаправить этот поток с помощью символа «>». Средства для выполнения программ в фоновом режиме (например, nohup) обычно переназначают этот поток в файл.

STDERR

Поток номер 2.

Зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде. Чаще всего цель этого потока совпадает с stdout, однако, в отличие от него, цель потока stderr не меняется при «>». То есть, отладочные сообщения процесса, вывод которого перенаправлен, всё равно попадут пользователю. Командная оболочка UNIX позволяет изменять цель этого потока с помощью конструкции «2>». Например, для подавления вывода этого потока нередко пишется 2>/dev/null

Фильтры(магия) (sort, uniq, grep, sed, cut, wc, tail, head, find ...)

Короткий перечень что делают эти программы(команды)

  • sort -- Название говорит само за себя. Без параметров проводиться обычная сортировка по алфавиту. Например

Исходный файл

A
d
F
q
w
e
t
a
J
{
`
2
G
j
y
u
Z
0

С применением sort

`
{
0
2
a
A
d
e
F
G
j
J
q
t
u
w
y
Z

sort -r reverse сортирует по алфавиту задом наперед(реверсирует)

Например так

Z
y
w
u
t
q
J
j
G
F
e
d
A
a
2
0
{

  • uniq -- Программа для вывода или удаления из вывода повторяющихся строк

Исходный файл

I will use Google before asking dumb questions.
I will use Google before asking dumb questions.
I will use Google before asking dumb questions.
I will use Google before asking dumb questions.
I will use Google before asking dumb questions.
I will use Google before asking dumb questions.
I will use Google before asking dumb questions.
I will use Google before asking dumb questions.
I will use Google before asking dumb questions.

Success is one percent inspiration, ninety-nine percent perspiration.
Success is one percent inspiration, ninety-nine percent perspiration.
Success is one percent inspiration, ninety-nine percent perspiration.
Success is one percent inspiration, ninety-nine percent perspiration.
Success is one percent inspiration, ninety-nine percent perspiration.
Success is one percent inspiration, ninety-nine percent perspiration.

The mind is everything. What you think you become
The mind is everything. What you think you become
The mind is everything. What you think you become
The mind is everything. What you think you become
I am not coder. I am a programmer!

вывод файла и применением программы без параметров

user@hostname ~ $ >> uniq example.file

I will use Google before asking dumb questions.

Success is one percent inspiration, ninety-nine percent perspiration.

The mind is everything. What you think you become
I am not coder. I am a programmer!

  • uniq -c example.file - вывод информации о количестве дубликатов каждой из строк
9 I will use Google before asking dumb questions.
1 
6 Success is one percent inspiration, ninety-nine percent perspiration.
1 
4 The mind is everything. What you think you become
1 I am not coder. I am a programmer!
1
  • grep - расшифровывается как Global Regular Expression Printer. Иными словами grep выдрезает нужные вам строки из текстовых файлов которые содержат указаный пользователем текст.

Исходный файл

I love the smell of napalm in the morning(Apocalypse Now)

May the force be with you(Star Wars)

You Shall Not Pass!(The Lord of the Ring)

I'll be back(Terminator)

Houston, we had a problem(Apollo 13)

Everything begins with choice(The Matrix)

I'm going to make him an offer he can't refuse(The God Father)

Elementary, my dear Watson(Sherlock Holmes)

В отличии от вышеприведенных инструментов, grep - принимает первым параметром шаблон который следует искать, а потом файл к которому он применит этот шаблон и найдет в соответствии с ним

Например

user@hostname ~ $ >> grep Matrix example.file
Everything begins with choice(The Matrix)
user@hostname ~ $ >> grep term example.file

упс! Ничего не вывело т.к именно такого совпадения не обнаружено потому что grep чуствителен к регистру

Но это не проблема

  • grep -i -- параметр который заставляет нашу программу искать совпадения игнорируя регистр.
user@hostname ~ $ >> grep -i term example.file
I'll be back(Terminator)
  • wc - unix‐утилита, выводящая число переводов строк, слов и байт для каждого указанного файла и итоговую строку, если было задано несколько файлов. Если входной файл не задан, или равен ‘-‘, то данные считываются со стандартного ввода.

Используеться она так:

  • wc -l filename - вывести количество строк

  • wc -c filename - вывести количество байт

  • wc -m filename - вывести количество символов

  • wc -L filename - вывести длину самой длинной строки

  • wc -w filename - вывести количество слов

  • tail -- показывает хвостовую часть файла

В выдаче мы получим 10 последних строк syslog, после чего команда завершит свою работу.

Исходный файл

Hello I am the teapot : 06/19/18:02:42:59
Hello I am the teapot : 06/19/18:02:43:07
Hello I am the teapot : 06/19/18:02:43:09
Hello I am the teapot : 06/19/18:02:43:11
Hello I am the teapot : 06/19/18:02:43:13
Hello I am the teapot : 06/19/18:02:43:15
Hello I am the teapot : 06/19/18:02:43:17
Hello I am the teapot : 06/19/18:02:43:19
Hello I am the teapot : 06/19/18:02:43:21
Hello I am the teapot : 06/19/18:02:43:23
Hello I am the teapot : 06/19/18:02:43:23
Hello I am the teapot : 06/19/18:02:43:23
Hello I am the teapot : 06/19/18:02:43:23
Дальше очень много текста

Пример:

Hello I am the teapot : 06/19/18:08:03:04
Hello I am the teapot : 06/19/18:08:03:06
Hello I am the teapot : 06/19/18:08:03:08
Hello I am the teapot : 06/19/18:08:03:10
Hello I am the teapot : 06/19/18:08:03:12
Hello I am the teapot : 06/19/18:08:03:14
Hello I am the teapot : 06/19/18:08:03:16
Hello I am the teapot : 06/19/18:08:03:18
Hello I am the teapot : 06/19/18:08:03:20
Hello I am the teapot : 06/19/18:08:03:22

tail -n -- параметр через который можно регулировать количество выдачи строк

  • head -- выводит первые N количество строк файла, по умолчанию это 10

head -n -- выводит заданое количество строк собсна как тейл но только начало

  • Find - утилита поиска файлов по имени и другим свойствам, используемая в UNIX‐подобных операционных системах. Может производить поиск в одном или нескольких каталогах с использованием критериев, заданных пользователем.

Самый простой пример нахождения файла по имени с помощью команды find:

find . -name test

тот же поиск по имени, но без учета регистра в названии файлов

find . -iname test

Но, дело в том, что в примере выше мы не указали, что ищем именно файл, по тому, если в текущем каталоге или его подкаталоге существует папка из названием test, то она тоже попадет в результаты поиска. Для указания того, что мы ищем именно файл, и что названия папок в результаты поиска включать не надо, используем ключ «-type

find . -type f -name test

type f — мы указали, что ищем именно файл (f) Для того, чтобы в результат включить одни папки с названием test, а файлы не искать, используем -type d

find . -type d -name test

Все есть файл. Всмысле?

В данном случае, “всё” действительно означает всё. Жесткий диск, разделы на жестком диске, параллельные порты, подключение к web-сайтам, Ethernet карточка, все они являются файлами. Даже каталоги - это файлы. В GNU/Linux существует много типов файлов в дополнение к стандартным файлам и каталогам. Обратите внимание, здесь под типом файла, мы не подразумеваем содержимое файла: в GNU/Linux и любой другой UNIX системах, файл, будь это текст, или PNG картинка, или двоичный файл, или что-то подобное, является только потоком байтов. Разделение файлов согласно их содержанию оставлено приложениям.

Например просмотреть информацию о процессоре

cat /proc/cpuinfo

Информация о батарее

cat /sys/class/power_supply/BAT0/uevent

Права доступа, группы, пользователи. chmod, chown. root, sudo

Каждый файл или папка в UNIX ОС имеют права доступа, которые побиты на 3 восьмеричных цифры (3 бита x 3 блока).

Права доступа
- `r`- read
- `w`- write
- `x` -  eXecute/доступ к папке

Каждый из этих трех прав доступа назначаются:

  • Владельцу
  • Группе
  • Остальным. Для задания владельца используется команда chown (CHange OWNer):
chown username filename # меняем владельца
chown -R username:groupname ~/newFolder # меняем владельца и группу для папки ~/newFolder рекурсивно

Для задания прав доступа используется команда chmod

chmod 700 filename # полный доступ для владельца, ноль доступа группе и остальным
chmod -R a+x ~/newFolder # добавить всем доступ на запуск всем (владельцу, группе, и остальным) рекурсивно
Root

root

Так как Линукс это многопользовательская ОС то и должны быть определенные ограничения для пользователей

Таким ограничением являеться отстуствием прав root.

root это кроме как корень еще и пользователь системы

Пользователю root позволено все: удалять, копировать или записывать или запускать любой файл которые находиться в системе

Пользователь root имеет наивысшие привелегии на все.

То есть root это полноценный администратор машины(компьютера).

Если вам надо установить программу или поправить конфигурации вам нужно зайти под этим пользователем в систему.

Но это НЕ РЕКОМЕНДУЕТСЯ!!!

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

Выход есть!

sudo -- substitute user and do, дословно «подменить пользователя и выполнить»

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

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

Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле /etc/sudoers (для редактирования файла можно использовать специальный редактор visudo, запускаемый из командной строки без параметров, в том числе без указания пути к файлу); язык их написания и примеры использования подробно изложены в man sudoers(5).

Пакетный менеджер или как поставить софт

Софт в Unix подобных системах храниться в репозитории. Это такое интернет хранилище откуда вы можете скачать программу без яндекс баров и mail.ru спутников

В дистрибутивах семейства Debian ссылки на репозитории лежат в /etc/apt/sources.list.

Так же вы можете в файл с ссылками добавлять любые другие репозитории а так же можете создать свой.

Содержимое файла

deb http://security.ubuntu.com/ubuntu bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse

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

Первое слово в каждой строке, либо deb, либо deb-src, указывает тип архива: либо это двоичные (binary) пакеты (deb), которые являются пред-компилированными пакетами, которые готовы к использованию, либо пакеты с исходными текстами (deb-src), которые являются первоначальными исходными текстами программ с управляющим файлом Debian (.dsc) и файлом diff.gz, содержащим изменения, необходимые для `дебианизации' программы.

Второе слово то бишь ссылка это действительно ссылка на репозиторий где лежат разные пакеты готовые к установке

Третья строка это версия дистрибутива то бишь его кодовое название

и все остальное это ветки

deb http://адрес_репозитория версия_дистрибутива ветки

Так же можно добавлять сторонние репозитории

Например репозиторий Virtual Box:

deb https://download.virtualbox.org/virtualbox/debian bionic-security contrib

Так же добавлять в репозиторий можно с помощью команд

add-apt-repository 'deb http://packages.linuxmint.com/ julia main' 

add-apt-repository ppa:gnome-desktop

А так можно разместить свой собственный репозиторий -> яссылко

Теперь что бы скачать программу мы должны понять что такое пакетный менеджер

Пакетный менеджер

aptitude

В Линуксах программы распостроняются пакетами.

Под пакетами в Linux подразумевается программное обеспечение (ПО), которое Вы хотите установить на компьютер. Например, в Windows софт устанавливается с помощью мастера (программы) установки – setup.exe или install.exe. Вы запускаете этот мифический экзешный файл, и процесс установки начинается едва ли не мгновенно после выбора пути и мелких побочных настроек.

Пакет это специальный архив с вашей программой который распаковывается пакетным менеджером

В задачи пакетного менеджера входит слежение за состоянием пакетов в системе, а так же установка, удаление, обновление этих самых пакетов

Пакеты может устанавливать только администратор или человек с правами рута.

В каждом дистрибутиве есть свой пакетный менеджер.

Например:

  • apt - Debian (Ubuntu, Mint, Kali, etc)

  • yum, dnf - Red Hat (Fedora, CentOs, Red Hat Enterprise)

  • pacman - Arch Linux (Manjaro, Arch Bang, etc)

  • emerge - Gentoo Linux (Calculate Linux, Sabayon)

Так же многие Языки программирование имеют в своем арсенале собственные пакетные менеджеры:

  • npm - JavaScript

  • composer - PHP

  • pip - Python

  • RubyGem - Ruby

  • cargo - Rust

  • Maven - Java

APT

Для того что бы поставить какую то программу для начала нужно обновить список репозиториев

После внесения любых изминений в файл /etc/apt/sources.list нам необходимо обновлять список доступных пакетов для установки так как система кеширует список для более быстрого доступа.

Обновить список доступных пакетов:

sudo apt update

После чего можно поискать нужный нам пакет:

sudo apt search package_name

Когда вы нашли нужный пакет и хотите его установить:

sudo apt install package_name

Если нам необходимо избавиться от пакета:

sudo apt remove packege_name

Зависимости

dependency

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

Для разрешения зависимостей есть так же специальные утилиты:

sudo apt-get install -f

Имейте ввиду что если зависимости не будут разрешены нахождением пакетов то наш APT просто удалить пакет с сломаными зависимостями.

Так же стоит обратить внимание на то что при удалении так же удаляются все зависимые пакеты.

Читайте вывод иначе после удаления одного пакета у вас могут удалиться зависимости которые за собой тянут другие зависимости... Будьте бдительны!

Dependency solve practice

dpkg

Это основа системы управления пакетами в Дебиане. Это низкоуровневая утилита, с помощью нее можно работать с .deb пакетами.

APT тоже работает с пакетами но предоставляет более высокоуровневый интерфейс для манипуляции онными.

Класический пример использования dpkg это установка скачаного .deb пакета:

sudo dpkg -i package_name

Например таким образом можно поставить Skype, Chrome, Viber