You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 lines
11 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Задания
### 0.
Обновите список пакетов из настроенных репозиториев в `/etc/apt/sources.list` командой `apt`.
Пример содержимого файла для Debian 12
```
# main состоит из DFSG-compliant пакетов, которым не требуется другое ПО из других зон. Эти пакеты считаются частью дистрибуции Debian
# contrib пакеты содержат DFSG-compliant ПО, но у них зависимостей из зоны main (возможно упакованы в non-free).
# non-free содержит ПО, которое не соответствует DFSG.
# скомпилированные бинарные пакеты
deb http://deb.debian.org/debian/ bookworm main
# оригинальные исходные коды пакетов
deb-src http://deb.debian.org/debian/ bookworm main
# некоторые пакеты для следующего 12.X обнвления доступны только из следующих веток
deb http://deb.debian.org/debian/ bookworm-updates main
deb-src http://deb.debian.org/debian/ bookworm-updates main
# критические обновления пакетов для обнаруженных уязвимостей доступны из репозитория security.debian.org
deb http://security.debian.org/debian-security/ bookworm/updates main
deb-src http://security.debian.org/debian-security/ bookworm/updates main
```
### 1.
Установите пакет `apt-file` с помощью `apt`.
### 2.
Найдите с помощью `apt-file` пакет, содержащий команду `ar`.
### 3.
Определите с помощью команды `apt search`, какие варианты пакета содержащего команду `ar` доступны. Установите подходящий для вашей системы.
### 4.
Скачайте http://ftp.ru.debian.org/debian/pool/main/c/cmake/cmake_3.25.1-1_amd64.deb в отдельную папку. Перейдите в папку с пакетом и распакуйте `.deb` командой `ar -x путь-к-пакету`. В папке должны появиться: `control.tar.xz`, `data.tar.xz`, `debian-binary`.
### 5.
Создайте папку `control` и распакуйте в неё `control.tar.xz` с помощью команды `tar xfC путь-к-архиву control`. Изучите содержимое. Сравните с выдачей `dpkg --info ` для `.deb` файла.
### 6.
Создайте папку `data` и распакуйте в неё `data.tar.xz` с помощью команды `tar xfC путь-к-архиву data`. Изучите `data` с помощью команды `tree`. Сравните с выдачей `dpkg --contents ` для `.deb` файла.
### 7.
Попробуйте вызвать исполняемый файл `usr/bin/cmake` из папки. Сопоставьте информацию в control файле пакета с выдачей команды `ldd usr/bin/cmake`. Если исполняемый файл не работает, найдите и установите зависимости в систему. Воспользуйтесь формой поиска на сайте https://www.debian.org/distrib/packages, если поиск по настроенным репозиториям не даёт результата. Добавьте репозиторий в котором есть нужная библиотека командой `apt edit-sources`. Обновите базу данных пакетов командой `apt update`. Завершите установку зависимостей и проверьте, что `cmake` работает.
### 8.
Утилитой `dpkg-query` выведите список пакетов, зарегистрированных в `dpkg` базе данных. Есть ли среди них зависимости `cmake`, которые вы установили вручную?
### 9.
Утилитой `dpkg-query` выведите среди установленных локально пакетов пакет, начинающихся с `libc6`. Утилитой `apt-cache` выполните тот же поиск по кэшу `apt`. Утилитой `apt` выполните тот же поиск по кэшу `apt`. Сравните, чем они отличаются.
### 10.
Утилитой `dpkg-query` выведите статус пакета `sudo` и `gcc`. Чем выдача отличается от содержимого control файла `.deb`, скаченного ранее?
### 11.
Утилитой `dpkg-query` выведите список установленных файлов пакета `sudo` (не выводятся файлы созданные скриптами).
### 12.
Утилитой `dpkg-query` выведите список файлов с метаданными пакета `sudo` (control files).
### 13.
Утилитой `dpkg-query` выведите содержимое одного из файлов с метаданными пакета `sudo` (control files).
### 14.
Утилитой `dpkg-query` выведите пути к файлам с метаданными пакета `sudo` (control files).
### 15.
Утилитой `dpkg-query` выполните поиск пакетов, которые установили в систему файл `pam.conf`.
### 16.
Утилитой `dpkg` установите `cmake .deb` пакет, скаченный ранее. Ещё раз посмотрите на зависимости пакета. Как отреагировал `dpkg` на отсутствие зависимости `cmake-data` - установил или выдал ошибку?
### 17.
Скачайте `cmake-data` и его транзитивные зависимости https://packages.debian.org/sid/amd64/cmake. Завершите установку cmake, и проверьте, что команда cmake установлена в систему (например, командами `which`, `find`) и работает `cmake --version`.
### 18.
Проверьте файлы всех установленных пакетов в системе на наличие изменений/повреждений командой `dpkg`. Какие файлы не прошли проверку (`??5??????`)?
Формат выдачи:
```
SM5DLUGT c <file>
```
где
- S размер файла,
- M режим файла,
- 5 MD5 хэш файла,
- D мажорная и минорная версии файла,
- L содержимое символических ссылок файла,
- U владелец файла,
- G группа-владелец файла,
- T время модификации файла,
- c появляется только, если это конфигурационный файл. Как правило именно они меняются и с большей вероятностью не пройдут проверку.
- <file> полный путь к файлу, который не прошёл проверку.
Знак вопроса означает, что файл не может быть проверен по какой-то причине. Подробнее вы можете прочитать в мануале `man dpkg` в секции описывающей ключ `--verify-format`.
### 19.
Сохраните список выбранных действий и состояний (selections) для пакетов в системе утилитой `dpkg` в файл.
### 20.
Измените в сохранённом списке действие для пакета vim c текущего на deinstall (`man dpkg`, “Package selection states”).
### 21.
Запустите команду `apt-get dselect-upgrade`. Какие пакеты будут установлены или удалены?
### 22.
Настройте в `/etc/sudoers` конфигурационном файле для пользователя `stud` возможность выполнять команды от лица суперпользователя без запроса пароля:
```
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
```
Удалите, а затем установите пакет sudo командой `apt remove`. Проверьте содержимое конфигурационного файла на изменения. Проделайте то же самое, но c командой `apt purge`.
### 23.
Удалите `cmake` и `cmake-data` с помощью `apt`. Найдите в репозиториях, какая версия cmake доступна. Создайте файл в директории `/etc/apt/apt.conf.d/default-release` с следующим содержимым (`man apt.conf`):
```
APT::Default-Release "stable";
```
Повторите поиск. Установите `stable` версию. Проверьте работоспособность команды и её версию `cmake --version`. Вы можете узнать значения текущих конфигурационных переменных `apt` командой `apt-conf dump`.
### 24.
Заморозьте версию cmake командой `apt-mark` или с помощью `dpkg --get-selections`, `dpkg --set-selections`. Поменяйте умолчания `/etc/apt/apt.conf.d/default-release` на `"unstable"`. Проведите обновление пакетов в системе. cmake не должен сохранить stable версию.
### 25.
Удалите cmake для следующего упражнения в установке из исходного кода. Выполните `apt autoremove` для удаления ставших ненужными пакетов.
### 26.
Установите `git`, если он ещё не установлен. Перейдите в `/tmp` и вызовите:
```
git clone --depth=1 https://github.com/Kitware/CMake
```
Ваша цель установить пакет в директорию `/opt`.
Прочитайте README.md секцию "Building CMake from Scratch". Установите компилятор g++, make. Для поддержки openssl - libssl-dev заголовочные файлы. В качестве --prefix используйте `/opt/cmake/`. Выполните 3 этапа: конфигурация компиляции, компиляция проекта, и установка. Для использования многопоточной компиляции используйте флаг `-j` при вызове `make`.
### 27.
Используйте команду `dpkg-reconfigure`, чтобы перенастроить пакеты, связанные с локализацией `console-setup` и раскладкой клавиатуры `keyboard-configuration`.
# Справка
Ссылки:
- web страница со списком пакетов https://www.debian.org/distrib/packages
Релевантные команды:
- apt
- apt-get
- apt-cache
- apt-mark
- apt-config
- dpkg
- dpkg-query
- dpkg-reconfigure
Страницы документации:
- sources.list
- apt.conf
- dpkg.conf
- apt_preferences