Debian и его производные

Рассмотрено использование ряда средств, специфичных для варианта Debian системы GNU — и его производных.

Номинальный вклад этой работы в оценку — 10 единиц.

Система управления пакетами APT

  1. (1 ед.) Подберите критерии поиска для команды apt-cache search так, чтобы результат запроса состоял из ровно 7 ÷ 13 пакетов. Опишите два пакета из результирующего списка.

  2. (2 ед.) Изучите действия, которые будут выполнены при установке какого-либо из не установленных в данный момент в системе пакетов (apt-get -s install -- имя-пакета.) Объясните вывод команды — по одной строке Conf, Inst, а также по одному пакету из каждого «:-раздела».

  3. (1 ед.) Как правило, команда apt-get install выполняется администратором для установки и удаления пакетов. Однако, ее также можно применить для загрузки пакетов, что, при соответствующих изменениях в настройках, будет доступно и рядовому пользователю.

    Руководствуясь примером ниже, получите какой-либо набор пакетов общим объемом не более порядка 8 MiB.

    $ mktemp -d -- /tmp/archive.XXXXXXXX 
    /tmp/archive.7QhVc5oi
    $ apt-get -Vd -o Debug::NoLocking=true \
          -o Dir::Cache::Archives=/tmp/archive.7QhVc5oi \
          install -- имя-пакета1 
    

Низкоуровневые инструменты; dpkg

  1. (1 ед.) Выполните запрос к базе данных dpkg используя dpkg-query -l или dpkg-query -s. Опишите три строки вывода.

  2. (2 ед.) Изучите и опишите устройство какого-либо .deb-файла используя dpkg-deb.

  3. (1 ед.) Хотя пакеты Debian разрабатываются в предположении, что они будут установлены администратором в системе, для некоторых из них это не является строго необходимым — достаточно лишь распаковать их (вместе, быть может, с их зависимостями) под какой-либо директорией и соответствующим образом настроить пути поискаPATH, LD_LIBRARY_PATH, etc.

    Опираясь на пример ниже запустите какую-либо из неустановленных в системе программ.

    $ mktemp -d -- /tmp/deb.XXXXXXXX 
    /tmp/deb.wsOzrPco
    $ sh -Ceuc 'd=${1} ; shift ; 
    for f ; do dpkg-deb -x -- "$f" "$d" ; done ; ' dummy.sh \
          /tmp/deb.wsOzrPco /tmp/archive.7QhVc5oi/*_*_*.deb 
    $ PATH="$PATH"\
    :/tmp/deb.wsOzrPco/usr/bin\
    :/tmp/deb.wsOzrPco/bin \
          LD_LIBRARY_PATH=\
    /tmp/deb.wsOzrPco/lib/x86_64-linux-gnu:\
    /tmp/deb.wsOzrPco/usr/lib/x86_64-linux-gnu \
          /tmp/deb.wsOzrPco/usr/bin/hello 
    Hello, world!
    $ 
    
  4. (1 ед.) В некоторых случаях пакеты Debian содержат ошибочные (избыточные) зависимости (поле Depends:.) Установить такой пакет без фактической установки пакета, от которого он зависит, можно установив взамен последнего «фиктивный» пакет, содержащий описание зависимости в поле Provides:.

    Сформируйте такой пакет используя программу nope.sh. Объясните его устройство.

  5. (2 ед.) Выполните сборку пакета из исходного кода (например, используя debuild.) Опишите основные этапы сборки. Удостоверьтесь в работоспособности полученного «установочного» (англ. binary) пакета.

Оформление отчета

  1. (1 ед.) Оформите отчет в виде документа HTML.

    Обратите внимание на то, что документ должен не только корректно воспроизводится соответствующим программным обеспечением, но и успешно проходить формальную проверку с использованием http://html5.validator.nu/ и (или) иных подобных средств. Элементы и атрибуты HTML должны быть использованы семантически-обоснованно — сообразно смыслу, которым их наделяет текущая практика и актуальные спецификации.

  2. (1 ед.) Сообщите о ранее неизвестной ошибке в Debian опубликовав отчет в системе учета проблем (http://debbugs.debian.org/.) Получите подтверждение разработчика о том, что ошибка действительно обнаруживается.

  3. (2 ед.) Включите в отчет о проблеме возможное решение (patch.) Удостоверьтесь в том, что изменения было включено разработчиком в новую редакцию исходного кода пакета.