2015-01-16 5 views
1

시스템을보다 깨끗한 상태로 유지하려면 rpm 스펙 파일의 % preun 섹션에서 PATH 항목을 제거하려고합니다. rpm을 제거하는 동안 PATH에서 항목을 제거합니다.

은 내가 수동으로 터미널에서 실행할 때 이러한 링크가 완벽하게 작동 모두에

What is the most elegant way to remove a path from the $PATH variable in Bash?Linux: Remove path from $PATH variable

답변을 시도 유래에 대한 스레드의 몇 가지를 발견했다. 그러나 rpm -e xx 명령을 실행하면 작동하지 않습니다. 내 PATH이 후 성공적으로 설치처럼 보였다 경우

/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin 
: 경로를 제거하려면 회전 후

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lpp/mmfs/bin 

내가는/usr/LPP/MMF의/빈을 제거하기 위해 노력하고,

의 모습

질문 : 1) 이전 링크에서 언급 한 명령을 spec 파일에서 실행할 때 다른 작업을 수행해야합니까?

2) rpm 제거 중에 PATH 항목을 제거하는 몇 가지 권장 방법은 무엇입니까? 내가 사양 파일에 시도

명령은 다음과 같습니다

PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;') 

PATH=${PATH/:\/home\/user\/bin/} 
+0

더 나은 사용 :'PATH = $ (echo $ PATH | sed -e ';/home/user/bin ;;'-e ';;; :;')' –

+2

일반적으로 공명은 없습니다 RPM 패키지가 처음부터 표준 시스템 PATH 외부에 바이너리를 설치합니다. – tripleee

+2

일반 사용자가 스스로 실행해야하는 바이너리가 아니라'$ PATH '를 수정하는 것이 좋습니다.사실 RPM을 통해 시스템이나 사용자의'$ PATH '를 수정하는 것은 거의 항상 잘못된 것입니다 (매우 특정한/제어 된 배포 시나리오 제외). –

답변

3

RPM을 %preun 스크립트 가 실행중인 쉘의 PATH 변수에 영향을 미칠 수 없습니다. 그건 불가능합니다.

새로운 쉘의 변수 중 하나 인 PATH에 (직접적으로) 영향을 줄 수 없습니다.

변경할 수있는 것은 시스템에 변경된 내용 (또는 사용자 shudder)을 쉘 시작 파일로 제거하면 PATH 변수가 추가됩니다.

변경 사항을 제거하면 새로운 셸이 변경되지 않으므로 추가적으로 PATH 항목이 포함되지 않습니다.

+0

의견과 답변에 감사드립니다. 그래서, Etan, 당신이 제안하는 것은 내가 .bashrc 또는 유사한 파일을 수정하려고 시도하는 것입니다/설치 중에 완료된 변경 사항을 제거하십시오. –

+0

RPM이 설치 중에 '$ PATH' 수정을 한 경우 예, 잠재적으로 적절할 것입니다. 내가 방공호에 대한 코멘트에서 말했듯이,'$ PATH'를 수정 한 RPM은 내가 아는 한 나쁜 생각이다. –

1

(나중에 제거 및 후속)는 PATH에 추가하는 적절한 방법은, /etc/profile.d에서 파일 및 yourpackage.shyourpackage.csh을 드롭 할 것이다.

나는 또한 나쁜 아이디어라고 생각하지만, 이 필요하다면 그렇게 할 수 있습니다.