Как я могу заставить APT "игнорировать" пакет?
Я использую VPS с нестабильной Debian с этой версией ядра:
2.6.32-274.7.1.el5.028stab095.1
Я только что обновил свои пакеты и по какой-то странной причине APT хочет, чтобы я установил linux-image-3.2.0-3-amd64
, что странно, потому что я не могу изменить ядро, поскольку это VPS. Я попытался установить его в любом случае, но, как я подозревал, это не сработало:
root@youmu:~# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
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-3.2.0-3-amd64 (3.2.23-1) ...
Running depmod.
vmlinuz(/boot/vmlinuz-3.2.0-3-amd64
) points to /boot/vmlinuz-3.2.0-3-amd64
(/boot/vmlinuz-3.2.0-3-amd64) -- doing nothing at /var/lib/dpkg/info/linux-image-3.2.0-3-amd64.postinst line 268.
initrd.img(/boot/initrd.img-3.2.0-3-amd64
) points to /boot/initrd.img-3.2.0-3-amd64
(/boot/initrd.img-3.2.0-3-amd64) -- doing nothing at /var/lib/dpkg/info/linux-image-3.2.0-3-amd64.postinst line 268.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-3-amd64 /boot/vmlinuz-3.2.0-3-amd64
update-initramfs: Generating /boot/initrd.img-3.2.0-3-amd64
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.2.0-3-amd64 /boot/vmlinuz-3.2.0-3-amd64
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... Generating /boot/grub/default file and setting the default boot entry to 0
entry not specified.
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-3-amd64.postinst line 696.
dpkg: error processing linux-image-3.2.0-3-amd64 (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
linux-image-3.2.0-3-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@youmu:~#
Я попытался удалить его, но все равно не получилось.
Мне интересно, есть ли способ заставить APT игнорировать пакет, как если бы он не существовал, чтобы он не доставлял мне ошибок при каждой установке пакета. Я попытался поставить пакет на удержание, но он все еще хочет перенастроить его.
Какие-либо предложения?
Конец файла postinst:
## Run user hook script here, if any
if ($postinst_hook) {
&run_hook("postinst", $postinst_hook);
}
if (-d "/etc/kernel/postinst.d") {
print STDERR "Examining /etc/kernel/postinst.d.\n";
system ("run-parts --verbose --exit-on-error --arg=$version " .
"--arg=$realimageloc$kimage-$version " .
"/etc/kernel/postinst.d") &&
die "Failed to process /etc/kernel/postinst.d";
}
if (-d "/etc/kernel/postinst.d/$version") {
print STDERR "Examining /etc/kernel/postinst.d/$version.\n";
system ("run-parts --verbose --exit-on-error --arg=$version " .
"--arg=$realimageloc$kimage-$version " .
"/etc/kernel/postinst.d/$version") &&
die "Failed to process /etc/kernel/postinst.d/$version";
}
exit 0;
__END__
2 ответа
В качестве временного закомментируйте exec update-grub
в /etc/kernel/postinst.d/zz-update-grub
запустив:
$ sudo sed -i.bak '/exec update-grub/s/^/#/' /etc/kernel/postinst.d/zz-update-grub
затем запустите скрипт конфигурации:
$ sudo dpkg --configure -a
Если это работает, вы можете восстановить zz-update-grub
файл в исходное содержание.
Принятый ответ на игнорирование обновления загрузочных сценариев для apt больше не работает какupdate-grub
теперь завернут вif
блок, который терпит неудачу, когда между ними ничего нет. Вот более эффективный способ:
$ sudo mv /usr/sbin/update-grub /usr/sbin/update-grub.disabled
$ sudo mv /usr/sbin/update-initramfs /usr/sbin/update-initramfs.disabled
$ sudo mv /usr/sbin/cryptsetup /usr/sbin/cryptsetup.disabled
Это эффективный обходной путь, если вы используете NFS. Лучше было бы проверить официальную документацию Debian или улучшить сценарии apt, чтобы они не давали сбоев клиентам NFS.
Похожий ответ: Как мне заставить apt-get игнорировать некоторые зависимости?