# Пакеты

Какой менеджер пакетов используется в настоящее время?

Dnf, являющийся, в свою очередь, форком Yum.

### Могу ли я использовать Yum в Fedora?

Начиная с Fedora 24, yum присутствует в Fedora лишь как символическая ссылка на dnf, сохранённая для обратной совместимости.

### База RPM оказалась повреждена. Как восстановить?

Для запуска пересборки базы данных RPM следует выполнить:

```
sudo rpm --rebuilddb
```

Настоятельно рекомендуется сделать резервную копию каталога `/var/lib/rpm` перед этим действием.

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

#### **Обновление пакета с использованием DNF**

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

```batch
sudo dnf update systemd
```

#### **Проверка наличия обновлений системы с помощью DNF.**

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

```batch
dnf check-update
```

#### **Обновление всех системных пакетов**

Вы можете обновить всю систему, включая все установленные пакеты, с помощью следующих команд:

```batch
sudo dnf update
```

&#x20;Или же:

```batch
sudo dnf upgrade
```

&#x20;Обновление с принудительной проверкой метаданных:

```batch
sudo dnf update --refresh
```

ключ `--refresh` установить метаданные, как истекшие перед запуском обновления

#### **Синхронизация установленных пакетов со стабильной версией**

Команда «**dnf distro-sync**» предоставит необходимые параметры для синхронизации всех установленных пакетов с самой последней стабильной версией, доступной из любого включенного репозитория. Если не выбран какой-то конкретный пакет, то синхронизируются все установленные пакеты:

```batch
sudo dnf distro-sync
```

### **Установка пакета с DNF**

Чтобы установить пакет с именем **nano**, просто запустите приведенную ниже команду, она автоматически разрешит и установит все необходимые зависимости для пакета **nano**:

```batch
sudo dnf install nano
```

#### **Установка пакетов из определенного репозитория**

**DNF** позволяет установить любой конкретный пакет (скажем, phpmyadmin) из определённого репозитория (к примеру, epel) так же просто, как:

```batch
dnf --enablerepo=epel install phpmyadmin
```

#### **Переустановка пакета**

Команда «**dnf reinstall nano**» переустанавливает уже установленный пакет:

```batch
sudo dnf reinstall nano
```

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

#### **Удаление пакета**

Чтобы удалить любой нежелательный пакет (например, nano), вы можете использовать опцию «**remove**» или «**erase**» вместе с командой **dnf**:

```batch
sudo dnf remove nano
```

#### **Отакат версии пакета**

Опция «**downgrade**» откатывает версию указанного пакета до предыдущей версии, если это возможно:

```batch
sudo dnf downgrade acpid
```

***Пример вывода***

```batch
Using metadata from Wed May 20 12:44:59 20152No match for available package: acpid-2.0.19-5.el7.x86_643Error: Nothing to do.
```

#### &#x20;**Удаление “осиротевших” пакетов**

Те пакеты, которые были установлены исключительно для удовлетворения зависимостей, могут быть бесполезными, если они не используются другими приложениями. Чтобы удалить эти “осиротевшие” пакеты, выполните следующую команду:

```batch
sudo dnf autoremove
```

#### Удаление кэшированных пакетов

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

```batch
sudo dnf clean all
```

### **Получение информации по пакетам**

#### **Вывод списка всех доступных и установленных пакетов, используя DNF**

Команда «**dnf list**» выведет список всех доступных пакетов из всех репозиториев и установленных пакетов в вашей системе **Linux**:

```batch
dnf list
```

#### **Вывод списка всех установленных пакетов**

В то время как команда «**dnf list**» показывает все доступные/установленные пакеты из всех репозиториев. Однако у вас есть возможность перечислить только установленные пакеты, используя опцию «**list** **installed**», как показано ниже:

```batch
dnf list installed
```

#### **Вывод списка всех доступных пакетов**

Аналогичным образом, опция «**list available**» выводит список всех пакетов, доступных для установки из всех включенных репозиториев:

```batch
dnf list available
```

#### **Поиск пакета с использованием DNF**

Если вы не знаете, какой пакет вы хотите установить, в такой ситуации вы можете использовать опцию «**search**» вместе с командой **dnf** для поиска пакета, который соответствует слову или строке поиска (к примеру – nano):

```batch
dnf search nano
```

#### **Просмотр описание файл/субпакет, к какому пакету принадлежит файл, что он делает?**

Опция **dnf provides** ищет имя пакета, к которому принадлежит определенный файл/подпакет. Например, если вы хотите найти к какому пакету принадлежит ‘**/bin/bash**‘ в вашей системе, выполните:

```batch
dnf provides /bin/bash
```

#### **Просмотр деталей пакета**

Предположим, что вы хотите узнать информацию о пакете до его установки в системе, вы можете использовать опцию «**info**» для получения подробной информации о пакете, как показано ниже:

```batch
dnf info nano
```

### Работа с репозиториями

#### **Вывод списка включенных репозиториев DNF**

Опция «**repolist**» с командой **dnf** отобразит все включенные репозитории в вашей системе:

```batch
dnf repolist
```

#### **Просмотр всех включенных и отключенных репозиториев DNF**

Опция «**repolist all**» выведет все включенные/отключенные репозитории в вашей системе:

```batch
dnf repolist all
```

### **Работа с групповыми пакетами**

#### **Вывод всех групповых пакетов**

Команда «**dnf grouplist**» выведет все доступные или установленные пакеты, если не упомянуто никаких опций, она выведет список всех известных групп:

```batch
dnf grouplist
```

#### **Установка группы пакетов**

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

```batch
sudo dnf groupinstall 'Educational Software'
```

#### **Обновление групповых пакетов**

Давайте обновим групповой пакет, выполнив приведенную ниже команду:

```batch
sudo dnf groupupdate 'Educational Software'
```

#### **Удаление групповых пакетов**

Мы можем удалить групповой пакет:

```batch
sudo dnf groupremove 'Educational Software'
```

### **Использования команды dnf**

**1.Проверка версии DNF**

Проверьте версию **DNF**, установленную в вашей Системе:

```batch
dnf --version
```

&#x20;**17. Получение справки по определенной команде DNF**

Вы можете получить помощь по любой конкретной команде **dnf** (скажем, clean), просто выполнив приведенную ниже команду:

```batch
dnf help clean
```

&#x20;**18. Вывод всех команд и опции DNF**

Чтобы получить справку по всем доступным командам и опциям **dnf**, просто введите:

```batch
dnf help
```

&#x20;**19. Просмотр истории DNF**

Вы можете вызвать **dnf history**, чтобы посмотреть список уже выполненных команд **dnf**. Таким образом, вы можете быть в курсе того, что было установлено/удалено и также узнать в какой именно промежуток времени это было выполнено:

```batch
dnf history
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://andrey-ivantsov.gitbook.io/linux/fedora/pakety.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
