| Summary: | librpm не смотрит на окружение $TMPDIR | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vadim Gusev <kopilo4ka> |
| Component: | librpm | Assignee: | placeholder <placeholder> |
| Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P2 | CC: | arseny, glebfm, imz, ldv, placeholder, vt |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
Это делает не 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)
|
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