sudo apt-get update не удалось создать временный файл

Вопрос или проблема

Пробовал выполнить sudo apt-get update, получаю этот ответ каждый раз, когда запускаю его:

Get:1 http://repo.radeon.com/rocm/apt/debian xenial InRelease [1814 B]
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Err:1 http://repo.radeon.com/rocm/apt/debian xenial InRelease
  Не удалось создать временный файл /tmp/apt.conf.RpjjUo для передачи конфигурации apt-key
Err:2 http://security.ubuntu.com/ubuntu bionic-security InRelease
  Не удалось создать временный файл /tmp/apt.conf.IvhgJr для передачи конфигурации apt-key
Get:4 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Err:4 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
  Не удалось создать временный файл /tmp/apt.conf.F98B6M для передачи конфигурации apt-key
Get:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Err:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
  Не удалось создать временный файл /tmp/apt.conf.WWtE1d для передачи конфигурации apt-key
Get:3 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]
Err:3 http://archive.ubuntu.com/ubuntu bionic InRelease
  Не удалось создать временный файл /tmp/apt.conf.TP8dgO для передачи конфигурации apt-key
Чтение списков пакетов... Готово
W: GPG ошибка: http://repo.radeon.com/rocm/apt/debian xenial InRelease: Не удалось создать временный файл /tmp/apt.conf.RpjjUo для передачи конфигурации apt-key
E: Репозиторий 'http://repo.radeon.com/rocm/apt/debian xenial InRelease' не подписан.
N: Обновление из такого репозитория не может быть выполнено безопасно, поэтому по умолчанию отключено.
N: Ознакомьтесь с мануалом apt-secure(8) для получения подробной информации о создании репозиториев и настройке пользователя.
W: GPG ошибка: http://security.ubuntu.com/ubuntu bionic-security InRelease: Не удалось создать временный файл /tmp/apt.conf.IvhgJr для передачи конфигурации apt-key
E: Репозиторий 'http://security.ubuntu.com/ubuntu bionic-security InRelease' не подписан.
N: Обновление из такого репозитория не может быть выполнено безопасно, поэтому по умолчанию отключено.
N: Ознакомьтесь с мануалом apt-secure(8) для получения подробной информации о создании репозиториев и настройке пользователя.
W: GPG ошибка: http://archive.ubuntu.com/ubuntu bionic-updates InRelease: Не удалось создать временный файл /tmp/apt.conf.F98B6M для передачи конфигурации apt-key
E: Репозиторий 'http://archive.ubuntu.com/ubuntu bionic-updates InRelease' не подписан.
N: Обновление из такого репозитория не может быть выполнено безопасно, поэтому по умолчанию отключено.
N: Ознакомьтесь с мануалом apt-secure(8) для получения подробной информации о создании репозиториев и настройке пользователя.
W: GPG ошибка: http://archive.ubuntu.com/ubuntu bionic-backports InRelease: Не удалось создать временный файл /tmp/apt.conf.WWtE1d для передачи конфигурации apt-key
E: Репозиторий 'http://archive.ubuntu.com/ubuntu bionic-backports InRelease' не подписан.
N: Обновление из такого репозитория не может быть выполнено безопасно, поэтому по умолчанию отключено.
N: Ознакомьтесь с мануалом apt-secure(8) для получения подробной информации о создании репозиториев и настройке пользователя.
W: GPG ошибка: http://archive.ubuntu.com/ubuntu bionic InRelease: Не удалось создать временный файл /tmp/apt.conf.TP8dgO для передачи конфигурации apt-key
E: Репозиторий 'http://archive.ubuntu.com/ubuntu bionic InRelease' не подписан.
N: Обновление из такого репозитория не может быть выполнено безопасно, поэтому по умолчанию отключено.
N: Ознакомьтесь с мануалом apt-secure(8) для получения подробной информации о создании репозиториев и настройке пользователя.

Пробовал sudo apt-get clean, ничего не произошло. sudo apt-get upgrade сообщает, что нет ничего, что нужно обновлять. sudo apt-get check тоже ничего не находит.

Использую Ubuntu на Windows 10.

Вы, вероятно, изменили разрешения файлов в вашей папке /tmp, проверьте с помощью

ls -lad /tmp

Нормальные настройки для /tmp — 1777, что ls показывает как drwxrwxrwt. Это значит: широко открыто, за исключением того, что только владелец файла может его удалить (именно это означает дополнительный t бит для директории).

Если настройки неправильные, вы можете восстановить их с помощью:

chmod 1777 /tmp

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

Если вы не можете перезагрузить, проверьте ответы здесь: https://unix.stackexchange.com/a/71625/20661

Другой возможностью является то, что что-то смонтировано в /tmp. Проверьте с помощью

mount | grep /tmp

ПРИМЕЧАНИЕ: также проверьте /var/tmp так же, возможно, у вас там та же ошибка

У меня была такая ситуация, когда я использовал контейнер Docker и смонтировал директорию в /tmp в контейнере, что вызывало конфликт. Я удалил смонтированную директорию в /tmp, и это позволило apt update работать.

Я столкнулся с этой проблемой с Docker. Мне пришлось удалить несколько образов Docker и пересобрать их. Это произошло после того, как я изменил корневую директорию Docker.

У меня была эта проблема при создании образов Docker, начиная с образов Ubuntu на машине IBM Power9.

Когда я начал с образа ubuntu:focal с ID образа 0a648e725100, у меня не было этой проблемы. ls -ld /tmp (когда выполняется в образе) действительно показывает разрешения drwxrwxrwt, и инструкция сборки Dockerfile RUN apt-get update работает (как и остальное, не показано).

Однако есть другой образ под названием ppc64le/ubuntu:22.04, ID образа 5c1fccf2a735, в котором разрешения /tmp по какой-то причине были установлены на drwxr-xr-t, и RUN apt-get update завершался с сообщением об ошибке, показанным в OP.

Добавление RUN chmod 1777 /tmp в Dockerfile решило проблему.

ОБНОВЛЕНИЕ: Я столкнулся с такой же проблемой с образом jupyter/datascience-notebook:hub-3.1.1, архитектура X86_64, ID=f4ae5f5cf82a. Этот образ основан на образе Ubuntu. Должна была быть проблема с разрешениями /tmp в самом Ubuntu 22.04, которая не зависит от архитектуры или образа.

Я получил эту ошибку в контейнере разработки VS Code, потому что у меня был завершающий \ в моем Dockerfile. Это может вызвать другие проблемы, как здесь: https://github.com/microsoft/vscode-remote-release/issues/7319

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

ls -lad /tmp было в порядке, показывая drwxrwxrwt, как объясняется в этом ответе.

Так что, оказывается, мне пришлось запустить fsck на корневом каталоге.

Сначала выполните df -h, чтобы увидеть, какие диски у вас есть. Найдите тот, который смонтирован как ваш корневой диск в точке монтирования /. Мой — /dev/mapper/sda4_crypt. Итак, мне пришлось запустить это:

fsck /dev/mapper/sda4_crypt -y

как объясняется в этом ответе.

Я выяснил это, потому что перезагрузил, чтобы посмотреть, поможет ли это решить мою проблему с sudo apt update, и моя система не смогла загрузиться. Она загрузилась в меню initramfs вместо этого, как объясняется в Q&A, на которое я ссылался выше.

Затем, после следования этим инструкциям и перезагрузки из меню initramfs следующим образом:

fsck /dev/mapper/sda4_crypt -y
reboot
exit

…затем, когда снова вошел, sudo apt update снова заработал!

Ранее он показывал различные ошибки типа Не удалось создать временный файл /tmp/apt.conf.RpjjUo для передачи конфигурации apt-key, как показано в этом вопросе.

Как только sudo apt update снова заработал, мне нужно было сделать это, как цитируется в моем ответе здесь:

sudo apt update

sudo apt full-upgrade
# ...что сказало мне запустить `sudo apt --fix-broken install`, так что я и сделал:
sudo apt --fix-broken install

Затем снова запустите графический инструмент обновления ПО.

Смотрите также

  1. Мой комментарий здесь, где я ссылаюсь на этот ответ: https://askubuntu.com/questions/137655/boot-drops-to-a-initramfs-prompts-busybox/817660#comment2520181_817660

В моем случае по какой-то причине у меня было много папок в /, у которых был установлен флаг Immutable.

Проверьте с помощью

lsattr /

В моем случае я получал:

lsattr: Операция не поддерживается при чтении флагов на /sys
--------------e------- /tools_rsync
---------------------- /run
lsattr: Операция не поддерживается при чтении флагов на /vmlinuz.old
----i---------e------- /tmp
--------------e------- /mnt
lsattr: Операция не поддерживается при чтении флагов на /initrd.img
--------------e------- /boot
--------------e------- /config.sh
lsattr: Операция не поддерживается при чтении флагов на /initrd.img.old
----i---------e------- /root
-----------I--e------- /etc
lsattr: Операция не поддерживается при чтении флагов на /lib
----i---------e------- /usr
lsattr: Операция не поддерживается при чтении флагов на /vmlinuz
lsattr: Операция не поддерживается при чтении флагов на /bin
lsattr: Операция не поддерживается при чтении флагов на /proc
--------------e------- /media
--------------e------- /opt
--------------e------- /home
lsattr: Операция не поддерживается при чтении флагов на /sbin
---------------------- /dev
--------------e------- /lost+found
----i---------e------- /var
lsattr: Операция не поддерживается при чтении флагов на /lib64
----i---------e------- /srv

Исправьте проблемные папки с помощью

chattr -i /tmp

У меня была такая же ошибка при обновлении источников APT.

Если вам нечего терять, просто очистите директорию /tmp. У меня было тысячи директорий от tomcat, и хотя в разделе /tmp было свободное место, возникла проблема с этим временным файлом (/tmp/apt.conf.IqQJWO).

cd /tmp

rm -rf *

После этого процесс обновления сработал корректно.

Ответ или решение

Проблема: Невозможно создать временный файл при выполнении команды sudo apt-get update

Вы столкнулись с ошибкой, которая возникает при попытке обновить пакеты в Ubuntu с помощью команды sudo apt-get update. Шаблонно сообщение об ошибке звучит следующим образом: "Couldn’t create temporary file /tmp/apt.conf.RpjjUo for passing config to apt-key" и тем самым указывает на проблему с доступом или созданием временных файлов в директории /tmp.

Причины возникновения проблемы

Ошибки при создании временных файлов в директории /tmp могут быть вызваны несколькими факторами:

  1. Неправильные права доступа к каталогу /tmp: Права доступа для каталога /tmp должны быть установлены на 1777, что означает, что все пользователи могут создавать файлы в этой директории, но только их владельцы могут удалять эти файлы.

  2. Монтирование директории /tmp: Если /tmp замонтирован в другую директорию, это может привести к конфликтам и ошибкам.

  3. Ошибки на жестком диске: Вредимые сектора или другие проблемы с файловой системой могут мешать созданию файлов.

  4. Флаги на папках: Наличие "неизменяемого флага" на директории может допускать только чтение и вызывать ошибки при попытке создания, изменения или удаления.

  5. Переполнение директории /tmp: Слишком много файлов или директории в /tmp могут привести к ошибкам из-за нехватки места.

Решения проблемы

1. Проверка прав доступа к /tmp

Для начала проверьте права доступа к каталогу /tmp, выполнив команду:

ls -ld /tmp

Вы должны увидеть что-то подобное:

drwxrwxrwt 10 root root 4096 Oct 1 12:00 /tmp

Если права установлены неверно, восстановите их с помощью следующей команды:

sudo chmod 1777 /tmp

После изменения прав рекомендуется перезагрузить систему:

sudo reboot

2. Проверка на монтирование

Проверьте, не замонтирована ли директория /tmp на другую файловую систему:

mount | grep /tmp

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

3. Проверка ошибок на диске

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

df -h

Затем запустите утилиту fsck, чтобы проверить файловую систему (замените /dev/sda1 на ваш актуальный раздел):

sudo fsck /dev/sda1 -y

4. Изменение флага на /tmp

Если вы обнаружите, что директория /tmp или другие директории имеют установленный "неизменяемый флаг", уберите его:

sudo chattr -i /tmp

5. Очистка содержимого /tmp

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

sudo rm -rf /tmp/*

Заключение

После выполнения предложенных шагов, снова попробуйте запустить команду sudo apt-get update. Устранение проблем с временными файлами в директории /tmp обычно решает ошибки, связанные с работой пакетного менеджера APT. Если проблема сохраняется, возможно, вам стоит углубиться в системные журналы и логи, чтобы найти более конкретные причины.

Оцените материал
Добавить комментарий

Капча загружается...