Під час оновлення або перевстановлення пакету з dpkg
(і в кінцевому підсумку всього, що його використовує, наприклад, apt-get і т.д.), він створює резервну копію існуючих файлів, створюючи жорстке посилання на файл перед його заміною. Таким чином, якщо розпакувати не вдасться, можна легко повернути наявні файли. Це чудово, адже він захищає операційну систему від подій Bad Things ™.
За винятком ... працює лише у тому випадку, якщо ваша файлова система підтримує жорсткі посилання . Не всі файлові системи роблять - наприклад, файлові системи FAT.
Я працюю над дистрибутивом Debian для певної вбудованої платформи ARM, і середовище завантаження вимагає, щоб певні файли (включено ядро) були у файловій системі FAT, щоб код завантаження міг їх знайти та завантажити.
Коли ви переходите до оновлення пакета ядра (або будь-якого іншого пакета, який містить файли в цьому розділі FAT), установка не вдається:
dpkg: error processing archive linux-image3.18.11+_3.18.11.2.armadillian_armhf.deb (--install):
unable to make backup link of `./boot/vmlinuz-3.18.11+' before installing new version: Operation not permitted
І ціле оновлення не вдається.
Я переглянув Інтернет, і єдині посилання, які я можу знайти, - це конкретні люди з певними проблемами під час конкретних оновлень, відповідь на які, як правило, "Видалити /boot/vmlinuz-3.18.11+ і спробувати ще раз", і так, це виправляє конкретну проблему.
Але це не для мене відповідь. Я розповсюджувач ОС, а не користувач ОС, тому мені потрібен спосіб виправити це, що не передбачає, щоб кінцевий користувач видалив свої файли ядра вручну перед оновленням. Мені потрібен спосіб сказати dpkg "копіювати, не жорстке посилання" для файлів у / boot (або всіх файлів для всіх, що мені важливо, хоча це дещо уповільнить операцію оновлення), або ще краще "Якщо жорстке посилання не вдасться, не скаржись, просто скопіюй це замість ".
Я пробував такі речі, як прапорці --force-unsafe-io
і навіть , але нічого не має ефекту.--force-all
dpkg