Bug 8204 - librpm не смотрит на окружение $TMPDIR
: librpm не смотрит на окружение $TMPDIR
Status: CLOSED NOTABUG
: Sisyphus
(All bugs in Sisyphus/librpm)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2005-10-12 18:07 by
Modified: 2005-10-14 14:31 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-10-12 18:07:43
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
------- Comment #1 From 2005-10-12 18:25:32 -------
Это делает не 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 по умолчанию чревато
неприятностями.

Если вы убеждены, что поведение по умолчанию неправильное, открывайте багу
снова, обсудим.
------- Comment #2 From 2005-10-14 14:31:34 -------
Соглашусь. Кстати по умолчанию у меня у всех: 
_tmppath   %{_var}/tmp 
это если почистить ~/.rpmmacros 
# cat /etc/altlinux-release 
ALT Linux Sisyphus (20051007)