Bug 8204 - librpm не смотрит на окружение $TMPDIR
Summary: librpm не смотрит на окружение $TMPDIR
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: librpm (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-10-12 18:07 MSD by Vadim Gusev
Modified: 2005-10-14 14:31 MSD (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vadim Gusev 2005-10-12 18:07:43 MSD
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 Dmitry V. Levin 2005-10-12 18:25:32 MSD
Это делает не 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 Vadim Gusev 2005-10-14 14:31:34 MSD
Соглашусь. Кстати по умолчанию у меня у всех: 
_tmppath   %{_var}/tmp 
это если почистить ~/.rpmmacros 
# cat /etc/altlinux-release 
ALT Linux Sisyphus (20051007)