RPM 패키지를 설치할 때마다 $PATH 변수에 새 경로를 자동으로 추가하고 싶습니다.
RPM에서 설치 후 스크립트를 사용하려고 합니다. 다음은 이 설치 후 스크립트가 포함된 RPM 사양 파일의 일부입니다.
%post
PATH=$PATH:/usr/app/mdg/bin
export PATH
그러나 설치가 성공한 후에도 $PATH는 변경되지 않았습니다. 이 문제를 해결하도록 도와주세요.
답변1
사용자의 환경을 그렇게 바꿀 수는 없습니다. 거기에 무엇인가를 추가하려고 시도할 수 있지만 /etc/profile
그것은 재앙이 될 것입니다. 파일을 에 넣을 수 있어 /etc/profile.d
더 좋지만 배포판이 이를 지원하지 않을 수 있습니다. 가장 좋은 해결책은 이미 경로에 있는 위치에서 심볼릭 링크를 배치하는 것입니다. 예를 들면 다음과 같습니다.
ln -s /weird/place/my-program /usr/bin/my-program
답변2
사용자가 해야 할 일은 설치 후 스크립트 기간 동안 변수를 설정하는 것뿐입니다. 이는 다른 곳의 경로에는 영향을 주지 않습니다.
시스템 경로는 여러 위치에서 설정되며 그 중 일부는 배포판에 따라 다릅니다. 어디에나 존재하는 한 가지 방법은 입니다 /etc/profile
. 그러나 /etc/profile
일반 배포 규칙에서는 패키지 설치 스크립트 수정을 허용하지 않습니다.
귀하의 질문에 대한 실제 대답은 다음과 같습니다. 하지 마십시오. 실행 파일이 해당 경로에 속하고 패키지에 의해 제공되는 경우 /usr/bin
실행 파일 자체를 거기에 넣을 필요는 없습니다. 일반적인 방법이지만 심볼릭 링크를 배치할 수 있습니다. 예를 들어 프로그램의 모든 실행 파일이 에 있으면 에 /usr/lib/myprogram/bin
있는 경로의 실행 파일과 연결해야 합니다 /usr/bin
. 패키지 관리자가 올바르게 추적할 수 있도록 rpm에 기호 링크를 포함합니다(설치 후 스크립트에서 기호 링크를 생성하지 마십시오). %install
RPM을 빌드할 때 실행되는 RPM 사양에서 이를 생성합니다(참조 :RPM 생성 시 /usr/bin에 심볼릭 링크 생성):
%install
…
ln -s ../../lib/myprogram/foo ../../lib/myprogram/bar ${RPM_BUILD_ROOT}%{_bindir}