저는 /usr/bin/
주로 /usr/sbin/
. 일부 Linux 배포판과 같은 기본 패키지 관리자가 없기 때문에 /usr/local/<package_name>/
.
이렇게 하면 시스템에서 패키지를 완전히 제거할 수 있지만 PATH
파일의 및 변수를 수동으로 업데이트해야 합니다.MANPATH
.bashrc
간단한 예는 다음과 같습니다.
/usr/bin
맥 OS/usr/local/apache-ant-1.8.2
.bashrc
# Mac OS X original PATH
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
# Apache Ant 1.8.2
PATH="$PATH:/usr/local/apache-ant-1.8.2/bin"
export PATH
/usr/bin/
덮어쓰고 싶지 않은 바이너리 외에도 일반적으로 다른 바이너리가 있기 때문에 및 이전 버전을 반드시 내보내야 합니다 ./usr/sbin/
ant/bin/
ant
문제는 입력하면 가 which ant
나온다는 것입니다. 그래서 최신 버전을 사용 하도록 /usr/bin/
이름을 바꿨습니다 ./usr/bin/ant
/usr/bin/ant-old
이것이 작동하는 동안 시스템 바이너리를 교체하는 더 좋은 방법이 있는지 궁금합니다(주로 마지막 이름 바꾸기를 피하기 위해).
답변1
시스템 바이너리 교체는 최후의 수단이어야 합니다.
내 제안은 다음과 같습니다
- 다른 시스템 디렉토리와 함께 배치하십시오
/usr/local/bin
./usr/bin
PATH
/usr/local/bin/ant
에 대한 심볼릭 링크를 만듭니다/usr/local/apache-ant-1.8.2/bin/ant
./usr/local/apache-ant-1.8.2/bin
아예 포함하지 마세요 .PATH
이 방법:
- 사용자 정의(의
/usr/local/bin
)는 시스템 기본값을 재정의합니다. - 심볼릭 링크는
/usr/local/bin/ant
해당 버전을 어디서 얻었는지 알려줍니다ant
. - 기본 설정으로 무언가를 테스트하려면 테스트 중에
/usr/local/bin
설정에서 해당 설정을 제거 하면 됩니다.PATH
답변2
시스템 바이너리를 덮어쓰는 일반적인 방법은 /usr/local/bin
(또는 )에 새 바이너리를 설치한 다음 해당 바이너리 가 경로 앞에 있는지 sbin
확인하는 것입니다 ./usr/local/bin
/usr/bin
일반적으로 각 패키지에 대한 디렉터리를 생성하는 --prefix=/usr/local
대신 바이너리를 설치하도록 하는 config packages 를 사용하여 이를 달성할 수 있습니다 ./usr/local/bin
/usr/local
/usr/local/apache-ant-1.8.2/bin
사용하고 싶지 않은 바이너리가 있다는 말씀이신가요 ? 이 경우 (지금 하고 있는 것처럼) 아래에 설치하고 /usr/local/apache-ant-1.8.2
(경로를 입력하는 대신) 그 안에 심볼릭 링크를 만드는 것이 좋습니다 ./usr/local/bin
../apache-ant-1.8.2/bin/ant
/usr/local/apache-ant-1.8.2/bin