시스템 바이너리를 교체할 때 가장 좋은 방법은 무엇입니까?

시스템 바이너리를 교체할 때 가장 좋은 방법은 무엇입니까?

저는 /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/binPATH
  • /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

관련 정보