LINUX.ORG.RU

Проблема с установкой самосборных deb-пакетов

 , ,


0

2

Приветствую. Имеется локальный сервер, на котором поднят репозиторий для Debian Buster. Репозиторий создан с помощью reprepro, используя стандартное руководство. Программы собираются на локальной машине через pbuilder и затем по ftp загружаются на сервер. Проблема заключается в следующем: я собрал более новую чем в Debian версию Mesa, загрузил её в репозиторий, обновил список пакетов на клиенте, но обновлённые версии не желают устанавливаться, как будто на них стоит какой-то запрет:

sudo apt install libegl-mesa0
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Некоторые пакеты не могут быть установлены. Возможно, то, что вы просите,
неосуществимо, или же вы используете нестабильную версию дистрибутива, где
запрошенные вами пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, вам поможет:

Следующие пакеты имеют неудовлетворённые зависимости:
 libegl-mesa0 : Зависит: libgbm1 (= 19.0.6-1) но 18.3.6-2+deb10u1 должен быть установлен
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.
Единственный момент: так как для сборки данной версии Mesa требуется LLVM 8, а он есть в Debian Backports, то во время сборки он был установлен из бэкпортов автоматически. На клиенте бэкпорты подключены, и по идее всё должно просто работать. Но не работает(. В чём может быть дело? Может стоит поднять локальному репозиторию приоритет в настройках APT?

Зависит: libgbm1 (= 19.0.6-1) но 18.3.6-2+deb10u1 должен быть установлен

вероятнее всего от libgbm1 зависит не только меса, но и какие-то еще пакеты у которых версия указана через ‘=’ или ‘<=’. Их тоже надо пересобрать (либо это какие-то dev пакеты и их надо удалить)

xgatron ()
Последнее исправление: xgatron (всего исправлений: 1)

…я собрал более новую чем в Debian версию Mesa…

но ведь есть 20.1.8 в репозиториях

╚> apt policy libegl-mesa0
libegl-mesa0:
  Установлен: 20.1.8-1
  Кандидат:   20.1.8-1
  Таблица версий:
     20.2.0~rc4-2 1
          1 http://ftp.ru.debian.org/debian experimental/main amd64 Packages
 *** 20.1.8-1 990
        990 http://ftp.ru.debian.org/debian testing/main amd64 Packages
        500 http://ftp.ru.debian.org/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status
     18.3.6-2+deb10u1 500
        500 http://ftp.ru.debian.org/debian stable/main amd64 Packages

А что выводит при apt policy libegl-mesa0 apt policy libgbm1 ?

Samamy ★★ ()
Последнее исправление: Samamy (всего исправлений: 2)
Ответ на: комментарий от Samamy
apt policy libegl-mesa0
libegl-mesa0:
  Установлен: 18.3.6-2+deb10u1
  Кандидат:   19.0.6-1
  Таблица версий:
     19.0.6-1 500
        500 http://debserver.local/debian buster/main amd64 Packages
 *** 18.3.6-2+deb10u1 500
        500 http://mirror.corbina.net/debian buster/main amd64 Packages
        100 /var/lib/dpkg/status


apt policy libgbm1
libgbm1:
  Установлен: 18.3.6-2+deb10u1
  Кандидат:   19.0.6-1
  Таблица версий:
     19.0.6-1 500
        500 http://debserver.local/debian buster/main amd64 Packages
 *** 18.3.6-2+deb10u1 500
        500 http://mirror.corbina.net/debian buster/main amd64 Packages
        100 /var/lib/dpkg/status

Sunderland93 ★★★★★ ()
Ответ на: комментарий от anonymous
dpkg -l libgbm-dev
Желаемый=неизвестно[u]/установить[i]/удалить[r]/вычистить[p]/зафиксировать[h]
| Состояние=не[n]/установлен[i]/настроен[c]/распакован[U]/частично настроен[F]/
            частично установлен[H]/trig-aWait/Trig-pend
|/ Ошибка?=(нет)/требуется переустановка[R] (верхний регистр
в полях состояния и ошибки указывает на ненормальную ситуацию)
||/ Имя              Версия           Архитектура  Описание
+++-================-================-============-==================================================
ii  libgbm-dev:amd64 18.3.6-2+deb10u1 amd64        generic buffer management API -- development files
Sunderland93 ★★★★★ ()
Ответ на: комментарий от anonymous
apt policy libgbm-dev
libgbm-dev:
  Установлен: 18.3.6-2+deb10u1
  Кандидат:   19.0.6-1
  Таблица версий:
     19.0.6-1 500
        500 http://debserver.local/debian buster/main amd64 Packages
 *** 18.3.6-2+deb10u1 500
        500 http://mirror.corbina.net/debian buster/main amd64 Packages
        100 /var/lib/dpkg/status
sunderland93@Debian-PC:/media/DATA
Sunderland93 ★★★★★ ()
Ответ на: комментарий от anonymous
dpkg -s libgbm1
dpkg-query: ошибка: --status требует корректное имя пакета, «libgbm1» таковым не является: неоднозначное имя пакета «libgbm1» с более чем одним установленным экземпляром

Используйте параметр --help для вывода справки по запросам пакетов.


dpkg -s libgbm-dev
Package: libgbm-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 85
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Architecture: amd64
Multi-Arch: same
Source: mesa
Version: 18.3.6-2+deb10u1
Depends: libgbm1 (= 18.3.6-2+deb10u1)
Description: generic buffer management API -- development files
 This package contains the GBM buffer management library.  It provides a
 mechanism for allocating buffers for graphics rendering tied to Mesa.
 .
 GBM is intended to be used as a native platform for EGL on drm or openwfd.
 .
 This package provides the development environment for compiling programs
 against the GBM library.
Homepage: https://mesa3d.org/

Sunderland93 ★★★★★ ()
Ответ на: комментарий от anonymous
sudo apt -f install
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 18 пакетов не обновлено.
Sunderland93 ★★★★★ ()
Ответ на: комментарий от Samamy
sudo apt upgrade
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Расчёт обновлений… Готово
Следующие НОВЫЕ пакеты будут установлены:
  libllvm8
Следующие пакеты будут оставлены в неизменном виде:
  libd3dadapter9-mesa libegl-mesa0 libegl1-mesa libgbm-dev libgbm1 libgl1-mesa-dri libglapi-mesa libglx-mesa0
  libosmesa6 mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers
Следующие пакеты будут обновлены:
  libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libxatracker2 mesa-common-dev mesa-opencl-icd
Обновлено 6 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 12 пакетов не обновлено.
Необходимо скачать 23,9 MB архивов.
После данной операции объём занятого дискового пространства возрастёт на 65,1 MB.
Sunderland93 ★★★★★ ()
Ответ на: комментарий от anonymous
Будут установлены следующие дополнительные пакеты:[cut]
  libgbm-dev mesa-common-dev policykit-1-gnome
Следующие пакеты будут УДАЛЕНЫ:
  acetoneiso akqml akregator appimagelauncher ardour ark audacity baloo-kf5 bluedevil breeze citra clementine
  debconf-kde-helper decaf-emu-qt dolphin dolphin-emu-master dolphin-megasync drkonqi ffmpegthumbs firetools
  frameworkintegration fs-uae-launcher gimp-gmic gir1.2-webkit2-4.0 gstreamer1.0-gl gstreamer1.0-plugins-bad
  gstreamer1.0-vaapi gwenview inventor-dev k3b kaccounts-providers kactivitymanagerd kamera kamerka kapptemplate kate
  kcalc kde-baseapps kde-cli-tools kde-config-gtk-style kde-config-mailtransport kde-config-screenlocker
  kde-config-sddm kde-plasma-desktop kde-runtime kde-spectacle kde-style-breeze kde-style-breeze-qt4
  kde-style-oxygen-qt5 kde-style-qtcurve-qt5 kdeconnect kded5 kdenetwork-filesharing kdevelop kdevelop53-libs kdialog
  keditbookmarks kfind kgamma5 khelpcenter khotkeys kimageformat-plugins kinfocenter kinit kio kio-extras kmenuedit
  kolourpaint konq-plugins konqueror konsole konsole-kpart konversation kpackagelauncherqml krita krita-gmic kronos
  kross kscreen ksshaskpass ksysguard ktexteditor-katepart kwalletmanager kwayland-integration kwin-common
  kwin-style-breeze kwin-x11 kwrite kwrited libavkys8 libcolorcorrect5 libdbusmenu-qt5-2 libdebconf-kde1
  libdirectfb-1.7-7 libegl-mesa0 libegl-mesa0:i386 libegl1 libegl1:i386 libegl1-mesa libegl1-mesa:i386 (и так далее)
Следующие НОВЫЕ пакеты будут установлены:
  policykit-1-gnome
Следующие пакеты будут обновлены:
  libgbm-dev libgbm1 mesa-common-dev
Обновлено 3 пакетов, установлено 1 новых пакетов, для удаления отмечено 485 пакетов, и 10 пакетов не обновлено.
Необходимо скачать 846 kB архивов.
После данной операции объём занятого дискового пространства уменьшится на 3 791 MB.
Хотите продолжить? [Д/н]
Sunderland93 ★★★★★ ()
Ответ на: комментарий от anonymous

Удалил сейчас все -dev пакеты какие зависели, ещё раз почистил кеш и обновил его. Всё также

dpkg -s libgbm1
dpkg-query: ошибка: --status требует корректное имя пакета, «libgbm1» таковым не является: неоднозначное имя пакета «libgbm1» с более чем одним установленным экземпляром

Используйте параметр --help для вывода справки по запросам пакетов.

Sunderland93 ★★★★★ ()

Я в обсуждение толком не вчитывался, поэтому сори, если ступлю. Вот ты отправил по фтп свой собранный пакет в репозиторий, а списки пакетов в репозитории тоже обновил?

rumgot ★★★★★ ()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от i-rinat
sudo aptitude full-upgrade
Следующие НОВЫЕ пакеты будут установлены:     
  libllvm8{a} 
Следующие пакеты будут обновлены:
  libd3dadapter9-mesa{b} libegl-mesa0{b} libegl1-mesa{b} libgbm-dev libgbm1{b} libgl1-mesa-dri{b} libglapi-mesa{b} 
  libglx-mesa0{b} libosmesa6{b} mesa-va-drivers{b} mesa-vdpau-drivers{b} mesa-vulkan-drivers{b} 
12 пакетов обновлено, 1 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 31,0 MБ архивов. После распаковки 66,1 MБ будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
 libegl-mesa0 : Ломает: libegl-mesa0:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 libegl-mesa0:i386 : Ломает: libegl-mesa0 (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 libglapi-mesa : Ломает: libglapi-mesa:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 libglapi-mesa:i386 : Ломает: libglapi-mesa (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 libegl1-mesa : Ломает: libegl1-mesa:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 libegl1-mesa:i386 : Ломает: libegl1-mesa (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 libgbm1 : Ломает: libgbm1:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 libgbm1:i386 : Ломает: libgbm1 (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 libgl1-mesa-dri : Ломает: libgl1-mesa-dri:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 libgl1-mesa-dri:i386 : Ломает: libgl1-mesa-dri (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 libosmesa6 : Ломает: libosmesa6:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 libosmesa6:i386 : Ломает: libosmesa6 (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 libd3dadapter9-mesa : Ломает: libd3dadapter9-mesa:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 libd3dadapter9-mesa:i386 : Ломает: libd3dadapter9-mesa (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 mesa-vdpau-drivers : Ломает: mesa-vdpau-drivers:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 mesa-vdpau-drivers:i386 : Ломает: mesa-vdpau-drivers (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 mesa-vulkan-drivers : Ломает: mesa-vulkan-drivers:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 mesa-vulkan-drivers:i386 : Ломает: mesa-vulkan-drivers (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 mesa-va-drivers : Ломает: mesa-va-drivers:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 mesa-va-drivers:i386 : Ломает: mesa-va-drivers (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
 libglx-mesa0 : Ломает: libglx-mesa0:i386 (!= 19.0.6-1) но установлен 18.3.6-2+deb10u1
 libglx-mesa0:i386 : Ломает: libglx-mesa0 (!= 18.3.6-2+deb10u1) но устанавливается 19.0.6-1
Следующие действия разрешат зависимости:

      Удалить следующие пакеты:                              
1)      mesa-va-drivers:i386 [18.3.6-2+deb10u1 (now, stable)]
2)      va-driver-all:i386 [2.4.0-1 (now, stable)]           

      Оставить для следующих пакетов их текущие версии:      
3)      libd3dadapter9-mesa [18.3.6-2+deb10u1 (now, stable)] 
4)      libegl-mesa0 [18.3.6-2+deb10u1 (now, stable)]        
5)      libegl1-mesa [18.3.6-2+deb10u1 (now, stable)]        
6)      libgbm-dev [18.3.6-2+deb10u1 (now, stable)]          
7)      libgbm1 [18.3.6-2+deb10u1 (now, stable)]             
8)      libgl1-mesa-dri [18.3.6-2+deb10u1 (now, stable)]     
9)      libglapi-mesa [18.3.6-2+deb10u1 (now, stable)]       
10)     libglx-mesa0 [18.3.6-2+deb10u1 (now, stable)]        
11)     libosmesa6 [18.3.6-2+deb10u1 (now, stable)]          
12)     mesa-vdpau-drivers [18.3.6-2+deb10u1 (now, stable)]  
13)     mesa-vulkan-drivers [18.3.6-2+deb10u1 (now, stable)] 



Принять данное решение? [Y/n/q/?] 
Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

Приоритет репозиторию пробовал поднимать? Какой он у тебя сейчас? Интерактивный режим aptitude пробовал? Там есть автоматический решатель, но мне обычно проще вручную версии подобрать, чем перебирать решения, которые решатель предлагает.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Да, приоритет поднял до 900. В интерактивном режиме не понял ничего, но решение которое предлагает aptitude - это оставить пакеты неизменными. Я уже не знаю что ещё попробовать. Нашёл у MX Linux репу AHS, со свежей месой. И там у них много чего ещё собрано. Может мне тоже нужно собрать всё это? http://mxrepo.com/mx/repo/pool/ahs/

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

В интерактивном режиме не понял ничего, но решение которое предлагает aptitude - это оставить пакеты неизменными.

Там же справка есть. На где-то пяти страницах перечислены все основные команды.

Сам по себе он ничего не сделает, ты же не указал, что нужно. Там находишь пакет, который тебе нужен, нажимаешь «+». Если есть проблемы, либо строчка с самим пакетом пометится красным, либо что-то из его зависимостей. Проходишь по зависимостям и помечаешь их для установки. Если они не ставятся, ищешь, в чём проблема, и так далее.

Может мне тоже нужно собрать всё это?

Если они нужны, то да. Если не нужны, то нет. Вслепую никак же нельзя сказать.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Да, видимо это совсем неблагодарная тема - ручной бэкпорт стека открытых видеодрайверов. Подключил репозиторий AWS от MX Linux - тут всё в порядке, хотя судя по скриптам версии пакетов (точнее эпоха) не тронуты

sudo apt full-upgrade
[sudo] пароль для sunderland93: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Расчёт обновлений… Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  libcrystalhd3:i386 libigdgmm5 libigdgmm5:i386 libllvm7:i386 x11proto-input-dev
Для их удаления используйте «sudo apt autoremove».
Следующие НОВЫЕ пакеты будут установлены:
  libigdgmm11 libigdgmm11:i386 libllvm10 libllvm10:i386
Следующие пакеты будут обновлены:
  dxvk dxvk-wine32-development:i386 dxvk-wine64-development ffmpeg firmware-linux-free i965-va-driver
  i965-va-driver:i386 intel-media-va-driver intel-media-va-driver:i386 libavcodec-dev libavcodec58 libavcodec58:i386
  libavdevice-dev libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 libavresample4
  libavresample4:i386 libavutil-dev libavutil56 libavutil56:i386 libd3dadapter9-mesa libd3dadapter9-mesa:i386
  libdrm-amdgpu1 libdrm-amdgpu1:i386 libdrm-common libdrm-dev libdrm-intel1 libdrm-intel1:i386 libdrm-nouveau2
  libdrm-nouveau2:i386 libdrm-radeon1 libdrm-radeon1:i386 libdrm2 libdrm2:i386 libegl-mesa0 libegl-mesa0:i386 libegl1
  libegl1:i386 libegl1-mesa libegl1-mesa:i386 libgbm-dev libgbm1 libgbm1:i386 libgl1 libgl1:i386 libgl1-mesa-dri
  libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libglapi-mesa libglapi-mesa:i386 libgles2 libglu1-mesa libglu1-mesa:i386
  libglvnd0 libglvnd0:i386 libglx-mesa0 libglx-mesa0:i386 libglx0 libglx0:i386 libmysofa0 libopengl0 libopengl0:i386
  libosmesa6 libosmesa6:i386 libpciaccess0 libpciaccess0:i386 libpostproc-dev libpostproc55 libsdl2-2.0-0
  libsdl2-2.0-0:i386 libswresample-dev libswresample3 libswresample3:i386 libswscale-dev libswscale5 libva-dev
  libva-drm2 libva-drm2:i386 libva-glx2 libva-wayland2 libva-x11-2 libva-x11-2:i386 libva2 libva2:i386 libvkd3d1
  libvkd3d1:i386 libx11-6 libx11-6:i386 libx11-data libx11-dev libx11-xcb1 libx11-xcb1:i386 libxcb-composite0
  libxcb-composite0-dev libxcb-damage0 libxcb-dpms0 libxcb-dri2-0 libxcb-dri2-0:i386 libxcb-dri3-0 libxcb-dri3-0:i386
  libxcb-glx0 libxcb-glx0:i386 libxcb-present0 libxcb-present0:i386 libxcb-randr0 libxcb-randr0:i386 libxcb-record0
  libxcb-render0 libxcb-render0:i386 libxcb-render0-dev libxcb-shape0 libxcb-shape0-dev libxcb-shm0 libxcb-shm0:i386
  libxcb-sync1 libxcb-sync1:i386 libxcb-xf86dri0 libxcb-xfixes0 libxcb-xfixes0:i386 libxcb-xfixes0-dev
  libxcb-xinerama0 libxcb-xinput-dev libxcb-xinput0 libxcb-xkb-dev libxcb-xkb1 libxcb-xv0 libxcb1 libxcb1:i386
  libxcb1-dev libxcomposite1 libxcomposite1:i386 libxdamage1 libxdamage1:i386 libxfixes3 libxfixes3:i386 libxi6
  libxi6:i386 libxvmc1 linux-compiler-gcc-8-x86 linux-libc-dev mesa-va-drivers mesa-vdpau-drivers
  mesa-vdpau-drivers:i386 mesa-vulkan-drivers mesa-vulkan-drivers:i386 v4l2loopback-dkms v4l2loopback-utils
  va-driver-all vulkan-tools x11proto-core-dev x11proto-dev x11proto-input-dev x11proto-xext-dev x11proto-xf86dga-dev
  x11proto-xf86vidmode-dev xserver-xorg-video-amdgpu xserver-xorg-video-intel
Обновлено 160 пакетов, установлено 4 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 132 MB архивов.
После данной операции объём занятого дискового пространства возрастёт на 524 MB.

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

Бекпорт всегда муторное занятие. Я так пробовал XFCE4 бекпортировать в Debian stable. Несколько дней провозился, большей частью даже получилось. Но сильно надоело, поэтому просто на testing перешёл.

i-rinat ★★★★★ ()

Решатель зависимостей в APT не умеет ожидаемым образом обрабатывать ситуацию, когда нужно установить пакет A, который зависит от B и C, причём B зависит от конкретной (но не последней) версии C.

Есть три варианта решения этой проблемы:

  1. Указывать конкретные версии пакетов при установке: apt install A C=0.9;

  2. Использовать aptitude;

  3. Положить нужную версию пакета B в репозиторий, у которого приоритет согласно apt preferences pinning будет выше.

При использовании способа 1 можно написать программу, которая будет превращать строку apt install A в apt install A C=0.9, вычитывая кеш apt и решая зависимости более тщательно, чем это делает сам apt.

kmeaw ★★★ ()
Ответ на: комментарий от i-rinat

Нихрена вообще понять не могу. Решил для верности попробовать залить сырцы на сборку в OBS, как делал раньше. Собираю из архивов с репозитория MX Linux - собирается и устанавливается, не предлагая выпилить полсистемы. Собираю из архивов, скачанных с Debian - сабж. Но при этом при помощи diff я сравнил файлы debian/control и debian/rules....они одинаковые, за исключением того что для MX'овских отключена сборка дебаг-пакетов. Это как вообще понимать? Версии одни и те же, абсолютно.

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

Нихрена вообще понять не могу.

Это ж дебиан, тут это всегда.

В тред приглашается @aureliano15 в качестве специалиста.

Это как вообще понимать? Версии одни и те же, абсолютно.

Списки зависимостей у созданных пакетов чем отличаются?

wandrien ()
Ответ на: комментарий от wandrien

Но не ясно, почему во всём вышеиспробованном нет ясной диагностики проблемы пакетным менеджером…

Это да. Не посмотри я описание в их репозитории, и не сравни через diff скрипты - в жизни бы не догадался что дело в дебаг-пакетах.

Sunderland93 ★★★★★ ()
Последнее исправление: Sunderland93 (всего исправлений: 1)