Как установить far manager на windows 10

Упражнение №9. Администрирование и обслуживание системы (пакеты, пакеты, процессы)

Введение в Linux (NSWI177)

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

Большинство описанных здесь вещей требуют собственной установки Linux, потому что им нужен правильный супервизор. Они не будут работать на общих машинах в IMPAKT.

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

Кожа до тренировки

Пользователь и root

Мы уже несколько раз затрагивали эту тему, но рекомендуем подвести итог один раз.

Среди учетных записей пользователей в Linux у меня есть одна созданная. Этот пользователь называется root (часто называется superuser или superuser), имеет пароль 0 и практически неограниченные права доступа к текущей машине. Например, разрешения для пользователя root фактически игнорируются (т. е. процесс, работающий под root, игнорирует любые разрешения rw и может читать/записывать любой файл).

Ѕ

В отличие от других систем, Linux устроен так, что пользовательские программы всегда могут находиться под обычным (обычным) пользователем и не требуют root-авторизации. На самом деле некоторые программы (часто IRC-клиенты) отказывались запускаться под root.

Root требуется для внесения изменений в систему в целом. Это включает в себя обновление системы, форматирование жесткого диска или, возможно, изменение конфигурации системы.

Очень строгое разделение бывших (рабочих) и руководителейОн основан на том факте, что Linux был разработан как многопользовательская система. Этой философии более 50 лет, и она восходит к тому времени, когда компьютером пользовались многие пользователи, и только один из них — root — был администратором. Сегодня, когда типичная установка ноутбука является действительно однопользовательской, это разделение все еще искусственно, но все еще существует.

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

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

Для таких ситуаций одним из вариантов является sudo (домашняя страница). Как следует из названия, он выполняет одну команду ( superuser do ) с разрешениями суперпользователя. Преимущество sudo заключается в том, что администратор может определить, какую команду запустить с правильным выводом. Поэтому не давайте избранным пользователям полный контроль надкомпьютера, но позволяет им работать только с выбранным набором команд. Например, можно дать одному пользователю возможность перезапустить определенный сервис (например, мы хотим разрешить тестировщику перезапустить веб-сервер), но мы не хотим давать ему контроль над машиной.

Обратите внимание, что гранулярность sudo находится на уровне программы. Он не ограничивает поведение программы uvnitЕ™ . Например, можно ограничить, что пользователь alice может запускать опасную_команду только с параметром —harmless-switch . Но, если вопасная_команда еще и выдает конфигурацию из файла

/.nebezpecnyrc , Алиса может добавить через него —dangerous-option. И sudo не может предотвратить это. Другими словами: после завершения проверки вычислений (перед запуском) программа ведет себя так, как если бы она была запущена пользователем root.

Это очень важно для компьютеров с общим доступом, где администратор обычно хочет максимально ограничить доступ других пользователей. С другой стороны, при установке на настольном компьютере (ноутбуке) обычная настройка заключается в том, что первый созданный пользователь (обычно создаваемый во время установки) может запускать любую программу с помощью sudo . Причина в том, что только один (физический) пользователь знает один и тот же пароль root. По этой же причине веб-руководства обычно перечисляют команды системного администрирования, включая sudo в начале каждой команды.

Вы должны но всегда знать, почему вы используете sudo . Попадитесь в ловушку привычки, если это не сработает, я попробую запустить его с помощью sudo . Кстати, есть много способов получить рут-шелл (например, sudo bash ).

sudo — не единственный механизм безопасности. Не будем подробно останавливаться на остальномзанят, но мы хотя бы добавим ссылки на SELinux или AppArmor. Краткое изложение механизма теперь доступно в Википедии.

Управление пакетами

Программное обеспечение в Linux обычно устанавливается через менеджер пакетов ( менеджер пакетов ). Менеджер пакетов — это специальная программа, которая занимается установкой, обновлением и удалением пакетов. Пакет может быть чем угодно, что можно установить; это включает:

  • программы (например, пакет ranger устанавливает программу ranger),
  • файлы данных и настройки (например, libreoffice-langpack-cs для поддержки иврита в LibreOffice),
  • библиотека (например, gmp или gmp-devel предоставляет библиотеку GNU для вычислений произвольной точности),
  • или так называемые метапакеты (например, xfce включает xfce4-terminal, xfwm4-themes и т. д.).

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

Читайте также:  Как установить windows с раздела recovery

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

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

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

  • Стабильная и тестовая , где последняя предлагает более новую версию программного обеспечения, но с небольшой вероятностью ошибок (обычно уже есть этот репозиторий™, обычно называемый нестабильной , которая является последней, часто продвинутой, версией).
  • Бесплатный и небесплатный , где первый содержит только программное обеспечение без каких-либо юридических сюрпризов. Несвободное программное обеспечение может быть защищено патентами или правами собственности (обычно в соответствии с законодательством США) или лицензиями, ограничивающими его распространение.

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

Большинство дистрибутивов также предлагают своего рода пользовательские репозитории, где практически каждый может опубликовать свое программное обеспечение. Есть копр.

для Fedora

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

Компенсации классических пакетов услуг

Наличие разных менеджеров пакетов тоже имеет свои недостатки — если вы используете несколько дистрибутивов, вамуметь пользоваться многими программами. Кроме того, разные дистрибутивы должны создавать свои собственные пакеты (совместимые с их менеджерами пакетов), что опять же требует дополнительной работы.

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

В качестве проблематичного примера можно попробовать установить PyCharm. PyCharm — это IDE для Python, которая (к сожалению) предназначена для пользователей Windows, а также предлагает платную профессиональную версию. Пакета PyCharm для Fedora не существует.

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

Итак, есть два способа установить PyCharm:

Второй вариант не очень популярен. Это требует от пользователя запуска загруженного им скрипта, что потенциально опасно — вы всегда должны проверять наличие подобных скриптов. (Конечно, менеджер пакетов также загружает и запускает скрипты, но параметры потока немного меньше.)

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

Что использовать

Snap — не единственная альтернатива классическим менеджерам пакетов.

Есть также Flatpak или AppImage. Они могут существовать бок о бок, и выбор остается за пользователем.

На решение об использовании влияет множество факторов. В общем, лучше предпочесть установку обычным инструментам вашего дистрибутива.

И последнее замечание: если нужное вам программное обеспечение недоступно в виде пакета, вы всегда можете создать такой пакет самостоятельно. Процедура не по теме, но не такая сложная.

Управление процессами и сигналами

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

Чтобы получить список запущенных процессов на вашем компьютере, вы можете запустить ps -e (или ps -axufw для более подробной информации). Однако htop.

гораздо лучше подходит для интерактивного просмотра.

htop можно использовать для отображения основных свойств процесса. Чтобы проиллюстрировать, вот пример вывода ps (с параметром —forest, чтобы показать, как процессы сравнивались друг с другом).

Раньше у каждого процесса был свой идентификатор, часто обозначаемый просто PID (не путайте с этим). PID — это код, загружаемый ядром операционной системы и используемый инструментами управления процессами. PID 1 предназначен для первого процесса, запущенного в системе (0 зарезервирован для специальных ячеек — нажмитеfork(2), если вас интересуют подробности). Когда этот процесс завершится, система выключится. Другие процессы получают (для простоты) постепенно увеличивающиеся PID, иногда PID повторно используются.

Помните, что эта информация содержится в /proc/PID .

Сигналы

Системы Linux используют сигналы для асинхронной связи между запущенными программами (процессами). Слово асинхронный означает, что сигнал должен быть отправлен (и доставлен) независимо от состояния процесса. Сравним стандартный ввод, где программа (явно) Е™ГдГ, когда она будет ДЅГст.

Сигналы, однако, не предлагают очень богатых возможностей для общения: единственная информация (помимо того, что она вообще была отправлена) — это их пароль. По сути, ядро ​​определяет, какие сигналы существуют (их количество), а какие вообще присутствуют (обычно это означает принудительное завершение процесса). Некоторые сигналы могут быть перехвачены приложением и среагировать на них. Если приложение не отвечает на него, ядро ​​завершит его (за исключением некоторых сигналов, которые по умолчанию игнорируются).

Читайте также:  Как выбрать способ переустановки windows

Это решается еще и тем, что программа, которой посылаются сигналы, называется kill (потому что обычно она убивает процесс — выход).

Без дополнительных параметров kill отправит сигнал 15 (называемый TERM ), чтобы сообщить приложению о завершении. Приложение может решить, является ли сигнал так называемым захватом, т.е. закрывает открытые файлы и затем выходит. Но он может делать практически все, даже игнорировать сигнал. В дополнение к TERM мы также можем отправить сигнал KILL (пароль 9), который всегда перехватывается ядром и немедленно (и принудительно) завершает программу). Сигнал 9 является так называемым немаскируемым и никогда не может быть примененодчицен.

VД›тЕЎина сигнЎлЕЇ je poslЎna procesu v reakci na specialkou ud’lost. Накладка, знак PIPE je poslón, pokud proces zkouЕЎG zapsat do roury, jejGЕѕ ДЌтек конец был узавэн. (Взломите си на проблему з лабу 04.) Укончать программу помощи Ctrl-C в терминальной точке ските польного знака INT (прерывание). Покудь вЎс зайГмай и остатні знаки, мркнешь на сигнал(7) .

Як на сигнэлы реаговать увидимэ на cвидЌенГ.

Чтобы попробовать sudo , попробуйте запустить fdisk -l . Как правило, fdisk — это инструмент для разбиения дисков. С помощью -l он считывает информацию обо всех дисках в вашей системе и отображает информацию о разделах на них.

Без sudo скорее всего будет отображаться только следующее сообщение:

Запуск с помощью sudo отображает актуальную информацию.

Обратите внимание, что sudo обычно запрашивает пароль (хотя его можно настроить). Это пароль текущего пользователя, а не root. (Если вы хотите аутентифицироваться с использованием пароля root, вы можете вместо этого использовать su.)

днф (тж. спрэвце балГДЌкЕЇ про Федору)

Примечание : Раньше в Fedora в качестве менеджера пакетов использовался yum, и его можно найти во многих руководствах в Интернете (даже в совсем недавних). Он считается устаревшим, и вам лучше его избегать. Если вы привыкли использовать yum из старых версий Fedora или других дистрибутивов на основе RPM, вы обнаружите, что dnf очень похож и во многих случаях быстрее, чем yum.

Диспетчер пакетов для Fedora называется DNF.

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

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

Обратите внимание, что поиск очень общего термина может дать сотни результатов.

Вывод имеет следующий формат:

Строки .noarch и .x86_64 описывают характер пакета. noarch обычно относится к пакету данных или пакету, использующему интерпретируемые языки, а .x86_64 обозначает пакет с двоичными файлами для архитектуры x86-64 (например, написанный на C или Rust, а затем скомпилированный в машинный код).

Чтобы установить программный пакет, запустите dnf с подкомандой install, указав имя устанавливаемого пакета. Здесь требуется sudo, так как мы модифицируем систему.

Некоторые приложения не являются частью какого-либо репозитория программного обеспечения, но вы все равно можете загрузить их в формате, понятном вашему диспетчеру пакетов. Это лучше, чем установка файлов вручную, потому что ваш менеджер пакетов знает о файлах (хотя и не может обновить его автоматически). Одним из таких примеров является клиент Zoom, который необходимо установить следующим образом:

Чтобы обновить всю систему, просто запустите sudo dnf upgrade . DNF запросит подтверждение, а затем обновит все доступные пакеты.

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

Если вы хотите установить целую группу пакетов, вы можете использовать dnf grouplist для просмотра их списка и sudo dnf install @GROUP_NAME для его установки.

Приведенные выше команды содержат основы для поддержки вашей установки Fedora в отношении управления пакетами. Следующие ссылки содержат дополнительную информацию. Официальная страница Wiki является хорошим источником информации.если вы уже немного знакомы с системой.

Для начинающих это руководство по DNF и это руководство, вероятно, являются лучшей отправной точкой.

Процесс оценки

Выполните команду ps -ef —forest, чтобы просмотреть все процессы на вашем компьютере. Из-за вашего графического интерфейса список, вероятно, будет довольно длинным.

На практике небольшой сервер, предлагающий доступ к веб-страницам, календарю и SSH, может иметь около 80 процессов, для рабочего стола, на котором работает Xfce с браузером и несколькими другими приложениями, это число возрастет почти до 300 (это действительно сильно зависит от конфигурации). но это приблизительная оценка). Около 50–60 из них на самом деле являются внутренними потоками ядра. Другими словами, веб/календарному серверу нужно около 20 «настоящих» процессов, рабочему столу около 200 из них :-).

Вы можете просмотреть ту же информацию с помощью htop . Вы также можете легко настроить его для отображения информации о вашей системе, такой как объем свободной памяти или использование ЦП.

Это может выглядеть так (это для машины 32G/24CPU):

Как и в MidnightCommander, функциональные клавиши выполняют наиболее важные действия, а помощь отображается на нижней панели.

значительно

Сейчас откройте два терминала.

Выполните следующую команду в первом.

Во втором терминале найдите PID этого процесса. Подсказка.

Со второго терминала мы теперь убьем программу.

Оглядываясь назад на первый терминал, вы должны увидеть следующее сообщение.

Снова запустите команду сна, но на этот раз отправьте команду KILL.

Возможно, сообщение изменилось на Killed и процесс также был завершен.

Ответить на Pythonu

Ваша программа обычно реагирует на TERM (мягкое завершение по умолчанию), INT (Ctrl-C на клавиатуре) и, возможно, на USR1 или USR2 (единственные определяемые пользователем сигналы). Системные демоны (неинтерактивные программы, работающие с системными службами) часто реагируют на HUP, перезагружая свою конфигурацию.

Следующая программа Python реагирует на Ctrl-C завершением работы (импорт опущен):

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

Читайте также:  Как посмотреть com объекты windows 10

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

Командная ловушка получает в качестве первого аргумента команду для выполнения по сигналу. Другие аргументы перечисляют сигналы, на которые следует реагировать. Обратите внимание, что специальный сигнал EXIT означает обычное завершение скрипта. Следовательно, нам не нужно вызывать on_exit после завершения цикла.

Использование — вместо обработчика приводит к тому, что соответствующий обработчик устанавливается по умолчанию. Без этого сброса в on_exit обработчик будет вызываться дважды после того, как пользователь нажмет Ctrl-C (сначала для INT, вызванного самим Ctrl-C, а затем явным вызовом exit ).

Отныне ваши сценарии оболочки должны всегда включать обработчик сигналов для очистки временных файлов .

Обратите внимание на использование $$, которое печатает текущий PID. В качестве альтернативы вы можете использовать pgrep

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

Запустите приведенный выше скрипт, запишите его PID и запустите следующий код в новом терминале.

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

Запустите скрипт еще раз, но передайте -9, чтобы убить, чтобы указать, что вы хотитедля отправки сигнала девять (т. е. KILL ).

Хотя сигналы являются рудиментарным механизмом, который передает двоичные события без дополнительных данных, они являются основным способом управления процессами в Linux. (Если вам нужен более богатый канал связи, вы можете вместо этого использовать D-Bus.) Разумная реакция на основные сигналы является обязательной для серверных приложений (например, веб-сервер должен реагировать на TERM, выполняя ожидающие запросы, не принимая новые соединения, и прекращение после этого). Это сценарии оболочки, считается хорошим тоном всегда очищать временные файлы.

Спрёва уЕѕивательскЅч ГєДЌтЕЇ

До сих пор мы использовали /etc/passwd для прямого получения информации об учетных записях. На практике все может быть сложнее, поскольку информация может поступать из разных источников. Например, в лабораториях IMPAKT информация каким-то образом извлекается из CAS.

Как правило, может быть несколько источников учетных записей пользователей. Таким образом, лучше использовать getent для запроса их всех, а не полагаться только на /etc/passwd:

Вы также можете указать группу вместо пароля для запросов групп.

Обратите внимание, что выходные данные имеют тот же формат, что и /etc/passwd. Это сделано специально.

Без параметра входа в систему команда (обычно) выводит список всех учетных записей.

Сколько учетных записей учащихся на компьютере u-pl17.ms.mff.cuni.cz? Намекать. Решение.

ВытвГЎЕ™енГ новГЅч ГєДЌтЕЇ

Создать новую учетную запись в Linux довольно просто. Утилита useradd создает нового пользователя, добавляя соответствующую запись в /etc/passwd и создавая домашний каталог.

Технически больше ничего делать не нужно: запись в /etc/passwd означает, что идентификатору пользователя (числовому) назначается удобочитаемое имя, создание домашнего каталога гарантирует, что у пользователя есть доступный для записи каталог дляначните с.

Практически можно создать нового пользователя, отредактировав /etc/passwd вручную, но это не рекомендуется.

Оценено © Gєlohy (крайний срок: 24 апреля)

09/passwd.txt (20 баллов)

На машине linux.ms.mff.cuni.cz получите информацию о вашей игре.

Вставьте соответствующий код вашей учетной записи из базы данных passwd в файл 09/passwd.txt.

Автоматические тесты проверяют не фактическую правильность, а только формат ответов.

09/signals.txt (25 баллов)

Запустите команду nswi177-signals на странице linux.ms.mff.cuni.cz.

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

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

Скопируйте последнюю строку вывода (это будут две строки) из этой программы в 09/signals.txt.

Эта проблема только частично проверена с помощью автоматических тестов.

09/countdown.sh (35 баллов)

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

Можно предположить, что программа всегда будет работать корректно.

Если пользователь нажмет Ctrl-C во время выполнения (или после сигнала TERM), сценарий завершится со словом Aborted и кодом выхода 17.

Каждая строка появляется на секунду позже предыдущей. Используйте sleep 1 для ожидания между отпечатками и перед выходом. Первое слово печатается сразу, а после последней строки с 1 символом программа должна подождать минуту перед завершением.

Имейте в виду, что скрипт будет немного медленнее, потому что для перехода в спящий режим требуется некоторое время, но я не возражаю.

Пример выполнения, когда пользователь нажимает Ctrl-C ( ^C указывает, где была нажата Ctrl-C, и не является выходомиз программы). Сообщение FAILED печатается вне программы и выделяет только ненулевой код возврата программы.

09/dnf.txt (20 баллов)

Какая версия пакета (не версия программы!) msim-git установлена ​​на linux.ms.mff.cuni.cz?

Эта проблема только частично проверена с помощью автоматических тестов.

Используйте команду справки dnf, чтобы найти список подкоманд и найти правильную для решения проблемы (вам понадобится одна из основных команд: основные команды ).

Можно указать только версию или версию, включая выпуск ( версия , выпуск ).

Полезная информация

Знание концепции…

Знание концепции означает, что вы понимаете смысл и контекст заданной темы и способны поместить темы в осмысленные рамки. Итак, вы можете…

чтобы объяснить, какие проблемы существуют в Linux и от чего они зависят

объясните, зачем нужны такие механизмы, как sudo, и чем они лучше, чем работа под суперпользователем (root)

объясните, что такое пакет и как он используется в Linux

объясните, что такое сигнал (для процессов)

Практические навыки

Практические навыки обычно связаны с использованием этих программ для решения различных задач. Итак, пока…

используйте getent для получения информации о существующих кодах

используйте useradd для создания нового пользователя

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

Поделиться с друзьями
ОС советы