Часто используемые команды yum

# Как настроить статический IP-адрес в CentOS 7

Итак, вы хотите посмотреть настройки сети, но вы устанавливали сборку «minimal» то по привычному запросу ifconfig вы в ответ получите вот такое:

-bash: ifconfig: command not found

Это говорит нам о том, что у нас нет такого пакета. Для работы  его работы  и прочими сетевыми утилитами нужно установить пакет net-tools. Для этого выполним следующую команду:

# yum -y install net-tools.x86_64

Теперь попробуем снова ввести ifconfig:

# ifconfig
eno16777736: flags=4163 mtu 1500
inet 172.16.0.160 netmask 255.255.255.0 broadcast 192.168.146.255
inet6 fe80::250:56ff:fe24:ccd6 prefixlen 64 scopeid 0x20
ether 00:50:56:24:cc:d6 txqueuelen 1000 (Ethernet)
RX packets 210 bytes 19072 (18.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 71 bytes 11531 (11.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 4 bytes 340 (340.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 340 (340.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Если вы не хотите устанавливать дополнительные пакеты или на данном этапе у вас не работает сеть/интернет, то можно воспользоваться командой ip с параметром addr:

# ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:24:cc:d6 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.160/24 brd 192.168.146.255 scope global dynamic eno16777736
valid_lft 1672sec preferred_lft 1672sec
inet6 fe80::250:56ff:fe24:ccd6/64 scope link
valid_lft forever preferred_lft forever

Тут мы увидели наши параметры, название нашей сетевой карты. В моем случае — eno16777736, и IP адрес.

# cat ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=dc1636be-5281-4a07-8681-fcdc8b161c8c
DEVICE=eno16777736
ONBOOT=no
PEERDNS=yes
PEERROUTES=yes

Для установки статического IP адреса нам необходимо на строчке BOOTPROTO  установить BOOTPROTO=none

и дописать:

Указать ДНС:DNS1=8.8.8.8

Прописываем IP:IPADDR0=172.16.0.30

Указываем нужную маску:PREFIX0=24

Прописываем шлюз по умолчанию:GATEWAY0=172.16.0.1

И чтобы у нас сетевая карта «поднималась» при запуске ОС, необходимо в этом файле найти параметр ONBOOT и прописать ему yes.

В итоге у нас должно получится что то типа этого:

Для немедленного применения изменений перезапустим сеть:

# /etc/init.d/network restart

Проверяем, все ли мы сделали верно:

# ifconfig
eno16777736: flags=4163 mtu 1500
inet 172.16.0.30 netmask 255.255.255.0 broadcast 172.16.0.255
ether 00:50:56:24:cc:d6 txqueuelen 1000 (Ethernet)
RX packets 5039 bytes 360189 (351.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1015 bytes 181656 (177.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Видим что наши параметры применились.  Значит все было сделано верно.

Защита репозиториев

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

В Ubuntu по умолчанию доверенными являются репозитории на установочных дисках и основные интернет репозитории — archive.ubuntu.com. При наличие на пользовательском компьютере нескольких подключенных репозиториев, предпочтение отдается доверенным.

При подключении репозитория, защищенного цифровой подписью Вам нужно скачать (обычно с ресурса, рассказывающего про этот репозиторий, или с сервера ключей, что является более предпочтительным в любом случае) открытый ключ и добавить его в систему. Иногда для скачивания предоставляется доступный для установки пакет, который в свою очередь при своей установке сам прописывает ключ репозитория. Если вы скачиваете ключ с сайта репозитория, то вы получите обычный файл с расширением .key, .gpg или другим. Добавить его в систему можно так:

sudo apt-key add repo.key

Где — полученный вами ключ репозитория.

Или при помощи графического интерфейса — запустите «Источники приложений» (Система→Администрирование→Источники приложений), перейдите на вкладку «Аутентификация» и нажмите на кнопку «Импортировать файл ключа…» — откроется диалог выбора файла. Выберите файл ключа и нажмите ОК.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0x12345678

Где вместо keyserver.ubuntu.com можно подставить адрес другого сервера ключей, а вместо 12345678 необходимо написать идентификатор нужного вам ключа.

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

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo aptitude update 2>&1 | grep -o '\{16\}$' | xargs`

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

Хотите верьте, хотите нет, но это даже быстрее, чем искать приложение в магазине. Нужно всего лишь скопировать команды с сайта разработчика (ищите в разделе «Установка») и поочерёдно вставить их в терминал, нажимая Enter.

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

  1.  — добавляем в систему адрес репозитория, откуда будут качаться программа, а в дальнейшем обновления для неё. Последует предложение ввести пароль — сделайте это.
  2.  — приказываем системе обновить список пакетов.
  3.  — начинаем установку.

Прежде чем вводить команды в терминал, убедитесь, что они относятся к вашему дистрибутиву. Посмотреть, какая команда к какому дистрибутиву подходит, можно в руководстве Лайфхакера.

Получение и пересборка пакета, не будучи при этом root-ом

Иногда вам просто необходимо пересобрать определенный пакет — возможно, лишь добавить конфигурационные опции, которые просто не существуют в основном пакете. Или потому, что вы нашли необходимый пакет, который отсутствует в репозитории, а на сайте разработчика RPMs для другого дистрибутива. Таким образом, вы должны получить src.rpm и востановить его под себя. Но в действительности вы не хотите делать этого в качестве суперпользователя. Итак, как пересобрать свои пакеты в вашей домашней директории под собственной учетной записью.

13.1 Метод А

Для начало необходимо настроить каталог для работы. Он имеет довольно полное сходство по структуре с каталогом /usr/src/redhat:

$ cd
$ mkdir -p redhat/{SRPMS,RPMS,SPECS,BUILD,SOURCES}
$ ls redhat/
BUILD RPMS SOURCES SPECS SRPMS
$

С помощью rpm макроса произведем подмену, для того чтобы rpmbuild узнал о нас и о том что нужно собрать:

$ echo "%_topdir /home/testuser/redhat" >> .rpmmacros
$ echo "%packager Test User " >> .rpmmacros
$ cat .rpmmacros
%_topdir /home/testuser/redhat
%packager Test User 
$

Именно так. Следующее действие — задание rpmbuild-у —rebuild foo.src.rpm, результат работы будет в файле ~/redhat/RPMS/i386 (или та архитектура с которой вы строили пакет).

13.2 Метод Б

Для CentOS-4, настроить репозиторий kbs-Extras repo (опционально добавить kbs-Misk) со страницы репозиториев и ‘yum install fedora-rpmdevtools’ под root-ом используя ‘sudo’ или ‘su -‘. Завести юзера (возможно вы захотите использовать специальный аккаунт для того, чтобы избежать проблем в своей обычной домашней директории) и выполнить «fedora-buildrpmtree» и ~/rpmbuild/…в дереве каталогов и ~/.rpmmacros файл будет автоматически создан. (Примечание «rpmbuild» против «RedHat» в методе А.)

Для CentOS-5 — пакет rpmdevtools отсутствует в наличии. В FC6 SRPM rpmdevtools-5.3-1.fc6.src.rpm собирается и работает.

Ниже представлен макрос для получения надлежащих имен некоторых пакетов (замените соответствующую версию дистрибутива для «el4» на свою):

$ echo "%dist .el4" >> .rpmmacros

Определяем версию CentOS

В версии CentOS указывается сразу несколько цифр, каждая из которых имеет свое значение, например, 7.6.1810. Здесь 7 — основная версия, 6 — второстепенная, а 1810 — код даты второстепенной версии. Благодаря этим значениям пользователь может запросто узнать необходимые сведения и применить их в нужной сфере

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

Способ 1: Команда lsb_release

Стандартизация внутренней системы CentOS осуществляется благодаря стандарту Linux Standard Base (LSB). Команда lsb_release, позволяющая узнать информацию о стандартной базе, поддерживается всеми версиями рассматриваемой ОС и может использоваться для вывода на экран текущей сборки платформы. Для этого:

  1. Откройте «Терминал» через основное или контекстное меню, которое вызывается нажатием ПКМ по свободной области рабочего стола.

Введите , а затем нажмите на клавишу Enter.

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

Поэтому придется прописать .

Подтвердите подлинность учетной записи суперпользователя, введя пароль от нее.

Примите загрузку новых компонентов, выбрав вариант y.

После успешной инсталляции повторно впишите , после чего увидите несколько строк с информацией, среди которых будет находиться и «Release».

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

Способ 2: Инструмент RPM

Опытные пользователи наверняка знают, что RPM (Red Hat Package Manager) — это инструмент управления пакетами в дистрибутивах, основанных на движке Red Hat. К таким платформам относится и CentOS. Дело в том, что у утилиты rpm имеется один специальный аргумент, позволяющий вывести на экран новую строку с данными по поводу текущей версии системы. Для этого требуется запустить консоль и вставить туда строку .

После активации команды отобразится новая строка с интересующими вас сведениями. Здесь будет выведена не только версия сборки, но и ее архитектура, например, centos-release-7-6.1810.2.el7.centos.x86_64.

Способ 3: Команда cat

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

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

Активировав команду, в следующей строке вы получите искомые данные.

Способ 4: Команда hostnamectl

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

Среди всех строк обратите внимание на «Operating System»: после двоеточия и будет указана версия ОС. Как можно заметить, там отображается только ветвь

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

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

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Как создать загрузочную флешку CentOS

Версии утилиты UNetbootin предлагаются для основных операционных систем:

  • Windows
  • Linux
  • macOS

Для загрузки щелкните мышью по версии для вашей ОС. Программа CentOS совместима с показанными иллюстрацией дистрибутивами Linux.

Запустите исполняемый файл и установите UNetbootin. Вставьте чистую флешку в USB-порт вашего ПК. Перед этим перенесите все важные файлы с нее на другие накопители, поскольку вся информация на данном носителе будет удалена. Откройте программу.

Из списка ввеху выберите дистрибутив: CentOS. Из списка версий выберите самую свежую. Щелкните мышью по кнопке «…». Выберите файл ISO-образа системы на жестком диске.

В главном окне UNetbootin нажмите кнопку «ОК» и дождитесь завершения создания загрузочного USB-накопителя.

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

  • Закройте утилиту и извлеките флешку из USB-разъема.
  • Выключите компьютер.
  • Снова вставьте USB-накопитель в разъем.
  • Включите ПК.
  • Зайдите в UEFI или BIOS. На экране будет показано, какая клавиша или сочетание клавиш применяется для этого в вашей модели. Чаще всего: «Delete» («Del»), «F2» или «F10».

Через файлы

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

Чтобы обратиться к файловому менеджеру, вернитесь на рабочий стол и активируйте его (по умолчанию — второй значок на панели GNOME или Unity). Для того, чтобы открыть папку, где хранятся все ярлыки программ, содержащихся в системе, перейдите по следующему адресу:

Рядовой пользователь здесь сможет выбрать любое приложение и запустить. Однако, если у него появится желание что-либо удалить, то ничего не выйдет. Чтобы навсегда удалить приложение из Nautilus’а, нужны права администратора (root или sudo — наиболее распространенный утилит, убирающий недостатки базовой системы), дающие определенные, устанавливаемые самим пользователем привилегии. Для этого нужно изначально открыть файловый менеджер с установленными правами администратора. Это возможно, есть ввести в терминале следующую команду:

sudo nautilus /usr/share/applications

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

“Групповые” субкоманды

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

О группах пакетов

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

Группа пакетов (иногда называемые также коллекциями) — это некий их набор, объединённый по назначению и имеющий собственное имя, например, Administration Tools, Web Server или GNOME Desktop Environment. В сущности, это то же самое, что метапакеты (или метапорты) FreeBSD или Tasks в deb-based дистрибутивах. Каждая такая целевая группа устанавливается одной командой и, при необходимости, одной же командой может быть удалена, вместе со всеми входящими в неё пакетами.

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

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

Состав же группы описывается во внешнем, так называемом comps-файле. Он лежит в каждом из основных репозиториев в каталоге и представляет собой простой xml-файл, сжатый утилитой (вида ).

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

Перечень группСписок пакетов группы Administration Tools

Производные продукты

  • Scientific Linux — дистрибутив, развиваемый FermiLab (разработка 8 версии свёрнута в пользу CentOS 8);
  • Rocks Cluster Distribution (англ.) v4.1 (Fuji) — дистрибутив для кластеров, основанный на CentOS 4.2;
  • SME Server;
  • Asterisk@Home переименован в TrixBox;
  • Boston University’s Linux 4.5 Server Edition (Zodiac);
  • NuOnce Networks CentOS / Blue Quartz CD;
  • Elastix — дистрибутив для организации сервера коммуникаций, основанный на CentOS 7;
  • ClearOS — маршрутизатор (комбайн), созданный для дома и небольших организаций, предоставляется на основе ежемесячной подписки;
  • госЛинукс — дистрибутив, ориентированный на использование в государственных учреждениях России. Основан на CentOS 6.4;
  • Янукс — российский дистрибутив, ориентированный на использование в информационных системах с повышенными требованиями к безопасности обрабатываемых данных.

Проверяем состояние SELinux

При настройке возникла ошибка

1
2
3
4
5
6
7

drbd(drbd_arraydata)16773ERRORmaildataExit code107

drbd(drbd_arraydata)16773ERRORmaildataCommand output

lrmd6058noticedrbd_arraydata_monitor_1500016552stderrError signing on tothe CIB serviceTransport endpoint isnotconnected

drbd(drbd_arraydata)16773ERRORmaildataCalledusrsbincrm_master-Q-lreboot-v10000

 
 

Файл конфигурации SELinux сообщает следующее

1
2
3
4
5

grep-v-E»#|^$»etcsysconfigselinux

SELINUX=disabled

SELINUXTYPE=targeted

 

Т.е. отключен, но при загрузке системы вижу

1
2
3
4
5
6
7
8
9
10
11
12

 
sestatus

SELinux statusenabled

SELinuxfs mountsysfsselinux

SELinux root directoryetcselinux

Loaded policy nametargeted

Current modepermissive

Mode from config fileenforcing

Policy MLS statusenabled

Policy deny_unknown statusallowed

Max kernel policy version31

 

Возможно данная ситуация связана с тем, что я пересобираю ядро, с определенными параметрами. Отключить удалось только добавлением параметра ядра при загрузке в файле /boot/grub2/grub.cfg – selinux=0

1
2
3
4
5

linux16vmlinuz-3.10.0-957.5.1.el7.x86_64root=devmappercentos_node-root ro rd.lvm.lv=centos_noderoot

zswap.enabled=1zswap.max_pool_percent=30elevator=noop transparent_hugepage=never LANG=ru_RU.UTF-8selinux=

 
 

После чего ошибка Error signing on to the CIB service: Transport endpoint is not connected ушла.

А потому что надо отключать в файле /etc/selinux/config

Просматриваем список установленных пакетов в Ubuntu

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

Способ 1: Терминал

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

  1. Откройте меню и запустите «Терминал». Делается это также зажатием горячей клавиши Ctrl + Alt + T.

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

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

Добавьте к dpkg -l еще одну команду, чтобы осуществить поиск определенного значения по таблице. Выглядит строка так: , где java — имя необходимого для поиска пакета.

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

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

Появится список всех файлов с их расположением в системе.

Если вы хотите узнать, каким пакетом был добавлен определенный файл, следует ввести , где /etc/host.conf — сам файл.

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

Способ 2: Графический интерфейс

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

Менеджер приложений

Подробнее: Установка Менеджера приложений в Ubuntu

  1. Откройте меню и запустите необходимый инструмент, нажав на его иконку.

Перейдите во вкладку «Установлено», чтобы отсеять тот софт, которого еще не имеется на компьютере.

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

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

Как видите, работа в «Менеджере приложений» проходит достаточно просто, однако функциональность этого инструмента все еще ограничена, поэтому на помощь придет более расширенный вариант.

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

Установка дополнительного менеджера пакетов Synaptic позволит получать детальнейшую информацию обо всех добавленных программах и компонентах. Для начала все же придется воспользоваться консолью:

  1. Запустите «Терминал» и введите команду для установки Synaptic из официального репозитория.

Укажите свой пароль для рут-доступа.

Подтвердите добавление новых файлов.

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

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

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

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

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Вывод

Если мы посмотрим на CentOS 8 то в нем много проблемных областей, которые мешают быть приятным из коробки. Большой проблемой является возможность управлять расширениями Gnome, без которых рабочий стол просто не может быть использован. Стоит отметить, CentOS, не предназначен для рабочего стола как таковой, все выглядит вполне достойно. Поскольку существует много специализированных систем для дома, которые управляют гораздо меньше, чем эта. Не забывайте стабильность и десять лет поддержки.

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

Ну и напоследок, самое важное достоинство дистрибутива – это стабильность

Ссылка на основную публикацию