apt-get: На пристрої не залишилось місця (12.04)


42

Я прочитав кожну тему, яку я міг знайти - навіть ті, що говорять про те, що на це питання було дано відповіді в іншому місці, але жодна з них не стосується конкретного питання, яке у мене виникає. Менеджер оновлень працював і створював помилки, пов’язані з невиконанням залежності, і пропонував використовувати apt-get install -f, який не вдається з цим повідомленням:

Unpacking linux-headers-3.5.0-36 (from .../linux-headers-3.5.0-36_3.5.0-36.57~precise1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/linux-headers-3.5.0-36_3.5.0-36.57~precise1_all.deb (--unpack):
 unable to create `/usr/src/linux-headers-3.5.0-36/arch/arm/mach-iop32x/include/mach/glantank.h.dpkg-new' (while processing `./usr/src/linux-headers-3.5.0-36/arch/arm/mach-iop32x/include/mach/glantank.h'): No space left on device

Я підозрюю, що останні 5 слів, які не залишилися на пристрої, мають велике значення, але обидва df і du показують достатній простір. Тож мені цікаво, якому пристрою потрібно більше місця?

Вихід від df -h

Filesystem 
Size Used Avail Use% 
Mounted on /dev/sda1 5.5G 4.4G 786M 86% 
/ udev 996M 4.0K 996M 1% 
/dev tmpfs 402M 880K 401M 1% 
/run none 5.0M 0 5.0M 0% /run/lock none 1004M 156K 1004M 1% 
/run/shm /dev/sdb1 30G 1.4G 27G 5% 
/home /dev/sdc1 299G 31G 268G 11% /media/HD-PCTU2 

У вас є пробіл у кореневому розділі?
— don.joey

1
Будь ласка, вставте (i) вихід df -hта (ii) вихід mount. dpkg очистить файли після того, як він закінчить працювати, тому може здатися, що у вас є достатньо місця, коли насправді цього немає. Подумайте про запуск, apt-get cleanперш ніж починати dpkg.
— січня

1
стежити watch -n 1 df -hза терміналом під час виконання apt-get install(це трохи сповільнить вас, але ви знаєте, яка файлова система занадто мала)
— Еммануель,

Проблема, що виникає також з Ubuntu 14.04 та ядром версії 3.13.0.108 в одному з трьох комп'ютерів. Я почав з askubuntu.com/questions/223143/…, але відповіді, показані тут, знаходяться в тому ж рядку.
— XavierStuvw

Відповіді:


48

Я щойно стикався з цією ж проблемою. Я в іншому місці натрапив на згадку про inodes і побіг у своєму терміналі, щоб перевірити використання inode:

  df -i 

Це показало, що використання індексу становить 99%. Тож, поки на моєму диску залишилось багато місця, я не зміг створити більше файлів через обмеження кількості входів. Деяке очищення диска було вирішенням моєї проблеми.


6
У мене була така ж проблема, викликана оновленнями ядра, які не видаляють старі ядра автоматично. Linux заголовки кожного оновлення ядра займають значну кількість входів! --- Мій «безпечне» рішення було перемістити два заголовки ядра каталогів в іншу файлову систему: cd /usr/src ; cp -a linux-headers-3.2.0-3{2,3}* /home/tmp-hdr ; rm -r linux-headers-3.2.0-3{2,3}*, apt-get-install -f, видалити деякі інші заголовки правильного шлях: apt-get purge linux-headers-...перемістіть заголовки з TMP спини: cd /usr/src ; cp -a /home/tmp-hdr/* .. Видаліть більше старих ядер за допомогою apt-get purge.
— пабук

1
Будь ласка, врахуйте участь у звітах про помилки з низькою активністю: Помилка # 1089195 Linux-заголовки з'їдять ваші індекси на LTS. , Помилка # 690911 Встановлення без форматування не зможе видалити старі ядра
— pabouk

@pabouk Цікаво, чи можна було використовувати dpkg --purge linux-headers-3.2.0-3{2,3}*; apt-get -f installтак, щоб не потрібно було копіювати?
— jarno

@jarno Давно було, але я думаю, що всі команди, що використовують базу даних dpkg або apt, були невдалими. Я думаю, це було через зламані залежності та інші невідповідності, спричинені недостатньою кількістю входів під час автоматичного оновлення.
— pabouk

Необхідне очищення диска може бути виконано, sudo linux-purge --fixколи сценарій опублікується.
— jarno

37

Я думаю, що ваш завантажувальний розділ наповнений старими зображеннями ядра, не залишаючи місця для нового, який apt-getнамагаються встановити. Ви можете набрати

dpkg -l linux-headers-\* linux-image-\* | grep ^ii

у вікно терміналу. Коли я це роблю, я отримую

ii  linux-headers-3.8.0-18                    3.8.0-18.28                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-18-generic            3.8.0-18.28                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-19                    3.8.0-19.30                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-19-generic            3.8.0-19.30                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-21                    3.8.0-21.32                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-21-generic            3.8.0-21.32                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-22                    3.8.0-22.33                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-22-generic            3.8.0-22.33                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-23                    3.8.0-23.34                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-23-generic            3.8.0-23.34                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-25                    3.8.0-25.37                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-25-generic            3.8.0-25.37                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-generic                     3.8.0.25.43                            amd64        Generic Linux kernel headers

Оскільки у мене їх досить багато, я міг би видалити деякі найстаріші

sudo apt-get remove linux-headers-3.8.0-18

Якщо apt-getце не вдається, оскільки він пропускає деякі залежності від пакета (які ви не можете встановити через відсутність вільних вкладів), ви можете вдатися dpkgбезпосередньо до цього:

sudo dpkg --remove linux-headers-3.8.0-18

Зробіть це пару раз зі своїм найстарішим, linux-headers-*і вам слід мати місце.


4
Це виявляє інше питання. Кожен раз, коли я намагаюся запустити dpkg, він каже мені, що він має незадовільну залежність. Наступні пакети мають невиконані залежності: linux-headers-3.5.0-36-generic: Залежить: linux-headers-3.5.0-36, але це не буде встановлено, і це те, що не встановиться, оскільки не вистачає місця
— Дон А

Можливо, резервна копія ваших користувачів-файлів у порядку, перш ніж зіпсувати ваш завантажувальний розділ? У мене ніколи не виникало проблем з цим, але якби я мав, я мав би все, що потрібно для перевстановлення. Звичайно, я все-таки роблю резервну копію щодня.
— Марк

Я сподівався, що мені не потрібно буде возитися з завантажувальним розділом і що є спосіб вийти з нескінченного циклу залежності. Я бачу зараз, що, ймовірно, буде простіше створити резервну копію даних і почати спочатку. Тепер, коли я знаю важливість очищення старих предметів, я зроблю це звичкою. Дякую всім за допомогу.
— Дон А

Зовсім ні. . . резервне копіювання - це завжди хороша ідея, і ви насправді не дуже возилися з завантажувальним розділом, просто видаляючи деякі пакети з apt-get. Це повинен бути шматок пирога. Я просто запропонував створити резервну копію ваших даних, тому що я завжди пропоную створити резервну копію даних, якщо у вас є проблеми (або навіть якщо у вас немає!) Я фактично запускав ці команди в моїй власній системі, щоб перевірити їх. Щоб зняти, мені знадобилося три хвилини linux-headers-3.8.0-18.
— Марк

1
Якщо це не вдасться знову sudo dpkg --remove linux-headers-3.8.0-18, вийміть, sudo dpkg --remove linux-headers-3.8.0-18-genericі він візьме з собою інший заголовок.
— Тесон

16

Я використав sudo apt-get autoremoveі він видалив купу старих пакетів ядер-заголовків. Добре піти за цим.


У моєму випадку apt-get відмовився робити авторемонти, надаючи перевагу тому, що для розбору був зламаний пакет. Який зламаний пакет був викликаний насиченням індексу. Дивіться також цю тему
— AskUbuntu

Ну, це просто врятувало мене! Після оновлення мій сеанс x ніколи не входив, просто просив увійти ще раз, і у мене часто не залишилося повідомлення про місця. Я думав, що я повинен відформатувати свій hd, але твій трюк просто врятував мене :)
— user5193682

1
Лол, я не можу це запустити, бо у мене занадто багато файлів ...
— Брайан Лейшман

2

Наскільки мені відомо, обмеження вкладень у файлових системах Linux ext * становить близько 4 мільярдів, але не менше, що є величезною кількістю файлів. Тож ваша проблема полягає в тому, що щось генерує багато файлів. Я можу запропонувати вам спочатку перевірити це: http://blog.scoutapp.com/articles/2014/10/08/understanding-disk-inodes Отже, ви знайдете, що заповнює вставки вашого FS. Я можу запропонувати також очистити підходящий кеш:

sudo apt-get clean

і

sudo apt-get autoclean
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.