LINUX.ORG.RU
ФорумTalks

Почему ущербный dpkg так и не исправился?

 ,


0

3

Уже месяц сижу на Дебиане. Вроде терпимо ем кактус. Но dpkg, как же он меня достал. Как же он меня уже 10 лет одним и тем же достает.

Хосспаде, да простая задача:

root@ntfs-a320mh:/home/ntfs# apt install make
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
make is already the newest version (4.3-4.1).
make set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
3 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up initramfs-tools (0.142) ...
update-initramfs: deferring update (trigger activated)
Setting up linux-image-6.1.0-10-amd64 (6.1.38-1) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-6.1.0-10-amd64
/etc/kernel/postinst.d/z50-raspi-firmware:
raspi-firmware: missing /boot/firmware, did you forget to mount it?
run-parts: /etc/kernel/postinst.d/z50-raspi-firmware exited with return code 1
dpkg: error processing package linux-image-6.1.0-10-amd64 (--configure):
 installed linux-image-6.1.0-10-amd64 package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of linux-image-amd64:
 linux-image-amd64 depends on linux-image-6.1.0-10-amd64 (= 6.1.38-1); however:
  Package linux-image-6.1.0-10-amd64 is not configured yet.
dpkg: error processing package linux-image-amd64 (--configure):
 dependency problems - leaving unconfigured
Processing triggers for initramfs-tools (0.142) ...
update-initramfs: Generating /boot/initrd.img-6.1.0-10-amd64
Errors were encountered while processing:
 linux-image-6.1.0-10-amd64
 linux-image-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@ntfs-a320mh:/home/ntfs# 

Это - следы после «обновления» того что надо было обновить согласно галочкам в synaptic, во время обновления он мне выдал то же самое, а apt install make я сделал просто для красоты. Или нет.

Че это за бред ?

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

Какое мне дело, что /etc/kernel/postinst.d/z50-raspi-firmware exited with return code 1 ? Я вообще не знаю что это такое, и зачем оно мне нужно на десктопном amd64.

Если уж этому идиотскому dpkg нужно по нескольку раз перегенерить initramfs в процессе апдейта - неужели так трудно проигнорировать зафейленный триггер и продолжать дальше ?

Или предложить мне несколько действий на выбор - там skip, ignore, cancel.

Получается что один кривой триггер (особенно если он будет ссылаться на какой-нибудь 3rdpaty-ресурс недоступный по тем или иным причинам) - может полностью парализовать установку пакетов в ОС.

Почему этих детских ошибок нет ни в yum, ни в pacman, ни даже в pkg ?

P.S. да, я ниасилятор. Еще какой. Не считаю должным асиливать очередную дебиановскую баш-портянку, поэтому просто прописал в ней второй строчкой сразу exit 0 и жизнь удалась.

Но dpkg все равно остался уродцем.

★★★★★

Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от MrCookie

Просто НЕЛЬЗЯ сравнивать

Атошто ёпта? Ну сравни с chocolatey. Сколько там бинарников?

скачивание и установка зависимостей

Не требует отдельных команд.

проверка целостности пакетов

В венде происходит незаметно на этапе установки, далее не нужна.

поиск пакетов в репах

Раз команда

отображение полного списка пакетов на компе

Два команда.

и т.д.

Ненужно.

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

installshield, можно и в пакет, и рядом, и с интернетов зависимости тягать если надо.
правда сложнее чем в linux, надо внимание на «далее», ждать, потом внимание на «готово».

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

Ну, справедливости ради, это все-таки не функция вендового пм, а отдельная программа, построенная с использованием винсталлеровского апи.

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

А-а, те самые знаменитые дебиановские мэйнтейнеры которые днями и ночами ловят баги в 100500 пакетов в репах, да ещё и на всех архитектурах?

Это те же самые люди, которые молниеносно фиксят багрепорты? /s

cocucka ★★★★☆
()
Последнее исправление: cocucka (всего исправлений: 1)
Ответ на: комментарий от thesis

проверка целостности пакетов

В винде происходит незаметно на этапе установки, далее не нужна.

А в вингет для этого есть команда верифай.

Просто в dpkg много команд для продвинутых пользователей, и это очень хорошо. Чем больше функций - тем лучше!

Почему они не могли сделать один-единственный dpkg и не делать кучу приблуд – наверняка просто всё это пилили абсолютно разные разрабы в разное время и не контактировали друг с другом

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

Да в dpkg куча легаси и неудобных вещей, один только fsync() на все файлы при установке пакетов

Опять на помощь приходит ZFS со SLOG на SSD, если у вас основная часть накопителей на HDD.

sanyo1234
()

Адептам лечения поноса затыканием жопы удалением raspi-firmware посвящается.

Об этом и пост, что сломанный триггер влияет на все, включая удаление сломанного триггера, лол.

root@ntfs-a320mh:/home/ntfs# apt install linux-image-6.1.0-9-rt-amd64
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  linux-doc-6.1 debian-kernel-handbook
The following NEW packages will be installed:
  linux-image-6.1.0-9-rt-amd64
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 68,4 MB of archives.
After this operation, 408 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main amd64 linux-image-6.1.0-9-rt-amd64 amd64 6.1.27-1 [68,4 MB]
Fetched 68,4 MB in 19s (3 600 kB/s)                                                                                                                                                                                                                                                       
Selecting previously unselected package linux-image-6.1.0-9-rt-amd64.
(Reading database ... 207949 files and directories currently installed.)
Preparing to unpack .../linux-image-6.1.0-9-rt-amd64_6.1.27-1_amd64.deb ...
Unpacking linux-image-6.1.0-9-rt-amd64 (6.1.27-1) ...
Setting up linux-image-6.1.0-9-rt-amd64 (6.1.27-1) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-6.1.0-10-amd64
I: /initrd.img.old is now a symlink to boot/initrd.img-6.1.0-10-amd64
I: /vmlinuz is now a symlink to boot/vmlinuz-6.1.0-9-rt-amd64
I: /initrd.img is now a symlink to boot/initrd.img-6.1.0-9-rt-amd64
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-6.1.0-9-rt-amd64
W: mkconf: MD subsystem is not loaded, thus I cannot scan for arrays.
W: mdadm: failed to auto-generate temporary mdadm.conf file.
/etc/kernel/postinst.d/z50-raspi-firmware:
raspi-firmware: missing /boot/firmware, did you forget to mount it?
run-parts: /etc/kernel/postinst.d/z50-raspi-firmware exited with return code 1
dpkg: error processing package linux-image-6.1.0-9-rt-amd64 (--configure):
 installed linux-image-6.1.0-9-rt-amd64 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 linux-image-6.1.0-9-rt-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@ntfs-a320mh:/home/ntfs# apt install make
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
make is already the newest version (4.3-4.1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up linux-image-6.1.0-9-rt-amd64 (6.1.27-1) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-6.1.0-9-rt-amd64
W: mkconf: MD subsystem is not loaded, thus I cannot scan for arrays.
W: mdadm: failed to auto-generate temporary mdadm.conf file.
/etc/kernel/postinst.d/z50-raspi-firmware:
raspi-firmware: missing /boot/firmware, did you forget to mount it?
run-parts: /etc/kernel/postinst.d/z50-raspi-firmware exited with return code 1
dpkg: error processing package linux-image-6.1.0-9-rt-amd64 (--configure):
 installed linux-image-6.1.0-9-rt-amd64 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 linux-image-6.1.0-9-rt-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@ntfs-a320mh:/home/ntfs# apt purge raspi-firmware
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  raspi-firmware*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up linux-image-6.1.0-9-rt-amd64 (6.1.27-1) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-6.1.0-9-rt-amd64
W: mkconf: MD subsystem is not loaded, thus I cannot scan for arrays.
W: mdadm: failed to auto-generate temporary mdadm.conf file.
/etc/kernel/postinst.d/z50-raspi-firmware:
raspi-firmware: missing /boot/firmware, did you forget to mount it?
run-parts: /etc/kernel/postinst.d/z50-raspi-firmware exited with return code 1
dpkg: error processing package linux-image-6.1.0-9-rt-amd64 (--configure):
 installed linux-image-6.1.0-9-rt-amd64 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 linux-image-6.1.0-9-rt-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@ntfs-a320mh:/home/ntfs# 

Шаг 1. Ставлю что-нибудь такое, что возбуждает на перегенерацию initramfs;

Шаг 2. Оно фейлится;

Шаг 3. Ставлю что-нибудь другое, пасьянс косынку;

Шаг 4. При установке пасьянса косынки вызывается перегенерация initramfs.

Ну не удаляется программа, если при установке предыдущей программы произошла ошибка. Точнее если среди установленных программ есть сбойный триггер. Только чистить руками.

root@ntfs-a320mh:/home/ntfs# apt purge raspi-firmware
Do you want to continue? [Y/n] y
Setting up linux-image-6.1.0-9-rt-amd64 (6.1.27-1) ...

Что за млять Setting up linux-image в процессе purge raspi-firmware ?

Претензия к dpkg, а не триггерам, и не в том, что оно не может поставить программу со сбойным триггером, а в том что единоразовый сбой теперь тащится по всем инсталляциям.

windows10 ★★★★★
() автор топика
Последнее исправление: windows10 (всего исправлений: 2)
Ответ на: комментарий от windows10

Выхлоп апта невероятно доставляет. Представляю лицо юзера, который это читает и понимает только то, что пришло время переустанавливать дебиан!

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

Не аргумент это отрицание проблемы тем, что ты её не встречал.

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

Да в dpkg куча легаси и неудобных вещей, один только fsync() на все файлы при установке пакетов дделается лишь потому, что dpkg разрабатывался до изобретения журналируемых файловых систем, и за ~25 лет никто и не исправил его поведение.

Что? Без fsync() не гарантируется завершённость записи содержимого файлов. Те же ext4 и btrfs страдали потерей данных из-за механизма отложенной аллокации. Сейчас как минимум в первой есть несколько эвристик, которые запускают запись данных при некоторых типичных условиях (например, если rename() заменяет существующий файл, то происходит запись существующих отложенных аллокаций), но сами разработчики ext4 в лице Theodore Tso говорят, что эти механизмы существуют лишь для неправильно работающих приложений, что полагаться на них нельзя, и что приложения должны вызывать fsync().

И вообще, перекладывание здесь ответственности на dpkg — это с больной головы на здоровую. Проблема-то на самом деле в тормозной ext4, которая при вызове fsync(fd) синхронизирует не только данные файла, соответствующего fd, но и чуть ли не всех остальных файлов в системе, потому что журнал работает на уровне блоков, а не файлов. fast_commit должен помогать в этом случае.

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

У 12 деба получились кривые Live образы (по крайней мере я только там такое встречал): за каким-то хреном ставится raspi-firmware, и выдает такие приколы. Решение - удалять вручную все, на что ссылается dpkg.

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

Решение - удалять вручную все, на что ссылается dpkg.

Решение — использовать официальный установщик, а не Live-образы. Они и в 11 были кривыми. Скажем, после установки у вас будут почти 2 ГБ мусора а ля локализации для всех существующих языков, шрифты для них же, системы ввода, опять, для них же, и проч. Почистить, конечно, несложно, благо всё это устанавливается task-пакетами, но проще использовать нормальный установщик.

Live-образы раньше ещё имели другую конфигурацию системы. Скажем, официальный установщик делал preseed настроек, отключающий unattended-upgrades, а Calamares, разумеется, этого не делал. Как сейчас, не проверял.

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

Решение — использовать официальный установщик, а не Live-образы.

Если в официальном установщике стоит другой dpkg - то я готов.

Шутка.

Эту проблему я встречал на любом установщике любого deb-дистра.

Ну вот пару лет назад удалял третий пистон с raspbian - тоже зафейлился на скрипт и не смог удалить, и чо ? Снова неправильный дистрибутив ?

Покажешь мне правильный дистрибутив - я тебе воссоздам на нем эту ущербность пакетного менеджера.

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

Ну не удаляется программа, если при установке предыдущей программы произошла ошибка. Точнее если среди установленных программ есть сбойный триггер. Только чистить руками.

A разве apt autoremove это не решает?

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

У 12 деба получились кривые Live образы

Они и в 11 были кривыми.

Значит всё в порядке, стабильность не пострадала. Сколько помню, всегда там были неюзабельные лайвы.

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

Спрашивается, зачем вытаскивать эти Live-образы откуда-то из глубин веб-сайта, если можно просто скачать netinstall-образ по большой кнопке «Загрузить» прямо на главной странице.

Live-образы, конечно, нужно приводить в порядок, здесь вопросов нет.

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

Издеваешься?

Ubuntu 22.04.2 LTS

The latest LTS version of Ubuntu, for desktop PCs and laptops. LTS stands for long-term support — which means five years of free security and maintenance updates, guaranteed until April 2027.

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

cocucka ★★★★☆
()
Последнее исправление: cocucka (всего исправлений: 1)
Ответ на: комментарий от MrCookie

ЕМНИП, он тоже лишь распаковывает Live-образ в корневой раздел.

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

Не очень-то я доверяю другому софту кроме ZFS.

Кроме того ведь пакетник может что-то и не откатить, изменения в конфигах и т.п.?

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

Вот для того чтобы она была стабильной и важна правильная установка всех пакетов. Если что то не так, не надо закрывать глаза, но решать эту проблему.

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

Причём тут. Пакетник создаёт снапшот средствами ФС.

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

Если что то не так, не надо закрывать глаза, но решать эту проблему.

Можно было выдать предупреждение, что такой-то пакет сломан, нужна ручная зачистка. Вместо этого dpkg каждый раз устраивает цирк с пересборкой initrd, выплевывает тонну невнятного спама и все равно завершается с ошибкой. Какая же тупизна, и это в то время когда ИИ бороздит просторы интернетов. Лучше никакой автоматики, чем такая.

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

Нет, он идиот. Тыкает мне расширенной поддержкой LTS, для которой нужна подписка убунту про и рассказывает, что эта поддержка админам не нужна. А поддержка это не только индус на проводе, это ещё бекпорт бакфиксов и патчей уязвимостей. Да, подписка убунты бесплатна для личного пользования. Но фишка в том, что никто не будет по доброй воле использовать старую систему в личных целях, для этого тупо LTS достаточно, потом можно и обновится. И в этом плане Ubuntu LTS от CentOS Stream НИЧЕМ не отличается. Это и был мой изначальный посыл, а товарищ упёрся своим рогом и продолжает утверждать, что убунта поддерживается 10 лет для всех.

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

Ты идиот?

У меня к тебе встречный вопрос. Причем, что любопытно, аналогичный.

Там для личного использования все бесплатно, если не ставить несвободные пакеты, то зачем платить Канониклу? Думаешь, они могут как-то криминализировать такое использование?

Или лишить БЕСПЛАТНОЙ подписки физлица, которое сублицензирует GPL пакеты любой организации? LOL

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 3)
Ответ на: комментарий от bread

Вместо этого dpkg каждый раз устраивает цирк с пересборкой initrd, выплевывает тонну невнятного спама и все равно завершается с ошибкой.

Триггеры легко отключаются переносом их файлов в подкаталог.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от cocucka

что убунта поддерживается 10 лет для всех.

Для некоммерческого использования есть бесплатный доступ?

Вася получает бесплатный ELTS и перелицензирует Нищебродинг Инкорпорайтид. Что нитаг?

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

Это как это ты перелиценщируешь, лицензиатор херов, ты там никаким боком ни к исходникам, ни к чему?

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

Нитаг то, что Вася не имеет на это права. Он имеет право на получение исходников, как пользователь продукта и может вносить в них изменения. Но без изменений прав у него не появится, а с изменениями он такой нахер никому не нужен.

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

И заканчивай вилять жопой уже. Для коммерческого использования нужно платить. А для личного использования тухлый LTS нафиг не нужен.

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

Это как это ты перелиценщируешь, лицензиатор херов, ты там никаким боком ни к исходникам, ни к чему?

Ты вообще хотя бы примерно представляешь, что такое лицензионный договор и в частности GPL?

Вася получает часть пакетов под GPL.

Дальше он лицензирует по тому же самому GPL кому угодно.

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

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

И заканчивай вилять жопой уже. Для коммерческого использования нужно платить.

За Шизндоуз нужно, а за Linux ненужно.

RHEL хотя бы может лишить доступа к будущим релизам и апдейтам,

а Canonical не может даже этого, потому что отключение бесплатной учетки приведет только к созданию новой учетки, LOL

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

Но без изменений прав у него не появится

Ты с дуба рухнул?

Откуда ты взял эту чушь? Галлюцинацию увидел и транслируешь ее сюда?

sanyo1234
()

dpkg

Он должен был пойти, пофиксить кривой пакет, закомитить в дебиановский реп и договориться чтобы фикс включили с следующий апдейт?

ya-betmen ★★★★★
()
Ответ на: комментарий от cocucka

но воровать уже готов.

Это про тех, кто не предоставляют сорцов ядра, btw.

sanyo1234
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)