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.