apt-get игнорирует переменные окружения для временных файлов, пользователь root. Причем pam0_mktemp тоже не используется походу. # rpm -q apt pam0_mktemp apt-0.5.15cnc6-alt16 pam0_mktemp-1.0.1-alt1 # echo $TMP $TMPDIR /var/tmp /var/tmp Запускаем 'apt-get check', по strace получаем: open("/root/tmp/BDB05030", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 8 .. pwrite64(8, "\0\0\0\0\1\0\0\0X\0\0\0\0\0\0\0\0\0\0\0\2\0\340\3\2\3\360"..., 1024, 90112) = -1 ENOSPC (No space left on device) write(2, "rpmdb: ", 7rpmdb: ) = 7 write(2, "write: 0x80c6ab0, 1024: No space"..., 47write: 0x80c6ab0, 1024: No space left on device) = 47 Спасло только # ls -ald /root/tmp lrwxrwxrwx 1 root root 13 Окт 12 18:08 /root/tmp -> /var/tmp/root
Это делает не apt, а librpm. По умолчанию у обычного пользователя $ rpm --showrc |fgrep ' _tmppath' -14: _tmppath %{_var}/tmp По умолчанию у пользователя root # rpm --showrc |fgrep ' _tmppath' -14: _tmppath %homedir/tmp В качестве workaround'а сделайте один раз # echo "%_tmppath $TMPDIR" >>~/.rpmmacros Использование $TMPDIR в качестве значения %_tmppath по умолчанию чревато неприятностями. Если вы убеждены, что поведение по умолчанию неправильное, открывайте багу снова, обсудим.
Соглашусь. Кстати по умолчанию у меня у всех: _tmppath %{_var}/tmp это если почистить ~/.rpmmacros # cat /etc/altlinux-release ALT Linux Sisyphus (20051007)