Bug 4276

Summary: bad %postin
Product: Sisyphus Reporter: Denis Ovsienko <pilot>
Component: rp-pppoe-clientAssignee: Mikhail Efremov <sem>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: mike, rider, sem
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 7079    

Description Denis Ovsienko 2004-06-02 01:00:23 MSD
#/sbin/chkconfig --add adsl                                                    
                                                           
if [ -f /etc/ppp/resolv.conf ]; then                                           
                                                           
    rm -f /etc/ppp/resolv.conf && ln -s /etc/resolv.conf /etc/ppp/resolv.conf  
                                                           
else                                                                           
                                                           
    ln -s /etc/resolv.conf /etc/ppp/resolv.conf                                
                                                           
fi

1. %post_service
2. /etc/ppp/resolv.conf -> /etc/resolv.conf это неправильно. Цитирую из man
pppd/usepeerdns:
In addition, pppd
              will  create  an /etc/ppp/resolv.conf file containing one or two
              nameserver lines with the address(es) supplied by the peer.
Это приводит к тому, что имеем файл, не принадлежащий какому-либо пакету,
наличие которого ломает логику работы ip-up/ifup-post и постоянно портит
/etc/resolv.conf.
Comment 1 Aleksandr Blokhin 2004-06-02 13:22:40 MSD
1) При чём тут %post_service? Напротив строки запуска сервиса стоит комментарий.
2) Что значиет "портит"? А куда же тогда прописывать динамически получаемый DNS
провайдера? Если я не ошибаюсь, то pppd уже давно не пишет в
/etc/ppp/resolv.conf, по крайней мере у нас я такого не замечал. Мне наоборот
пришлось вводить эту систему ссылок в прошлом году для того, чтобы после
поднятия pppoe записи о правильных DNS попадали в chrooted резолвер. А до этого
три года всё спокойно писалось в /etc/ppp/resolv.conf, а /etc/resolv.conf был
ссылкой на него. Если необходимо "найти хозяина" для /etc/ppp/resolv.conf, то
это не проблема. Я это сделаю.
Comment 2 Denis Ovsienko 2004-06-02 13:38:11 MSD
(In reply to comment #1)
> 1) При чём тут %post_service? Напротив строки запуска сервиса стоит комментарий.
Согласен. Был сонный.

> 2) Что значиет "портит"? А куда же тогда прописывать динамически получаемый DNS
> провайдера? Если я не ошибаюсь, то pppd уже давно не пишет в
> /etc/ppp/resolv.conf, по крайней мере у нас я такого не замечал. Мне наоборот
Пишет-пишет. man не врёт.

> пришлось вводить эту систему ссылок в прошлом году для того, чтобы после
> поднятия pppoe записи о правильных DNS попадали в chrooted резолвер. А до этого
Если в rp-pppoe-client используется pppd и ему передаётся usepeerdns, то после
поднятия интерфейса при запуске /etc/ppp/ip-up нужные значения будут записаны в
/etc/resolv.conf

> три года всё спокойно писалось в /etc/ppp/resolv.conf, а /etc/resolv.conf был
> ссылкой на него. Если необходимо "найти хозяина" для /etc/ppp/resolv.conf, то
> это не проблема. Я это сделаю.
Этот файл создаст и сам pppd, если ему передан usepeerdns.
Comment 3 Aleksandr Blokhin 2004-07-08 12:01:52 MSD

*** This bug has been marked as a duplicate of 4249 ***
Comment 4 Dmitry Vukolov 2004-07-17 07:07:08 MSD
А ведь pppd действительно пишет в /etc/ppp/resolv.conf.
Опишу конкретную ситуацию. Поднят кэширующий DNS pdnsd. Это требует, чтобы в
/etc/resolv.conf находилась _лишь одна_ строчка nameserver 127.0.0.1. Реальные
DNS провайдера pdnsd получает от pppd (/etc/ppp/ip-up) через переменные DNS1 и DNS2.
Поскольку у нас rp-pppoe-client при установке, а также adsl-connect при запуске
делают /etc/ppp/resolv.conf ссылкой на /etc/resolv.conf, содержимое последнего
меняется каждый раз, когда запускается pppd.
На мой взгляд, подобная ссылка создаваться не должна.
Comment 5 Aleksandr Blokhin 2004-08-05 12:11:05 MSD
 .
Comment 6 Denis Ovsienko 2005-07-20 10:07:52 MSD
%postin
#/sbin/chkconfig --add adsl                                                    
                                                            
                                                                               
                                                            
#if [ -f /etc/ppp/resolv.conf ]; then                                          
                                                            
#    rm -f /etc/ppp/resolv.conf && ln -s /etc/resolv.conf /etc/ppp/resolv.conf 
                                                            
#else                                                                          
                                                            
#    ln -s /etc/resolv.conf /etc/ppp/resolv.conf                               
                                                            
#fi                                                                            
                                                            
                                                                               
                                                            
[ -h /etc/ppp/resolv.conf ] && rm -f /etc/ppp/resolv.conf && cat
/etc/resolv.conf > /etc/ppp/resolv.conf ||:

Предлагаю:
1. сервис добавлять
2. сделать не запускаемым по умолчанию
3. /etc/ppp/resolv.conf не трогать, но симлинк удалять
Comment 7 Aleksandr Blokhin 2005-07-29 11:53:58 MSD
Сервис и так добавляется, но не запускается.