|
|
# Задания
|
|
|
|
|
|
### 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 |