- Вопрос или проблема
- Смотрите также
- Ответ или решение
- Проблема: Невозможно создать временный файл при выполнении команды sudo apt-get update
- Причины возникновения проблемы
- Решения проблемы
- 1. Проверка прав доступа к /tmp
- 2. Проверка на монтирование
- 3. Проверка ошибок на диске
- 4. Изменение флага на /tmp
- 5. Очистка содержимого /tmp
- Заключение
Вопрос или проблема
Пробовал выполнить 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
Затем снова запустите графический инструмент обновления ПО.
Смотрите также
- Мой комментарий здесь, где я ссылаюсь на этот ответ: 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
могут быть вызваны несколькими факторами:
-
Неправильные права доступа к каталогу /tmp: Права доступа для каталога
/tmp
должны быть установлены на1777
, что означает, что все пользователи могут создавать файлы в этой директории, но только их владельцы могут удалять эти файлы. -
Монтирование директории /tmp: Если
/tmp
замонтирован в другую директорию, это может привести к конфликтам и ошибкам. -
Ошибки на жестком диске: Вредимые сектора или другие проблемы с файловой системой могут мешать созданию файлов.
-
Флаги на папках: Наличие "неизменяемого флага" на директории может допускать только чтение и вызывать ошибки при попытке создания, изменения или удаления.
-
Переполнение директории /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. Если проблема сохраняется, возможно, вам стоит углубиться в системные журналы и логи, чтобы найти более конкретные причины.