나는 대부분의 코딩에 데비안을 사용하고 있으며, 작업 중인 프로그램을 컴파일하기 위해 특정 버전의 gcc가 필요한 숙제 프로젝트를 진행하고 있습니다.
gcc 소스 코드를 다운로드하고 컴파일/설치했지만 옵션을 변경하는 것을 잊어버렸기 때문에 기본 위치인 /usr/local/bin/gcc에 설치되었다고 가정합니다. 이 작업을 수행했을 때 저는 실제로 미리 계획을 세우지 않았으며 gcc 버전에서 숙제를 완료했다는 것을 깨달았을 때 이를 제거하는 방법을 전혀 몰랐습니다. 인터넷 검색을 한 후에 나는 checkinstall을 사용하지 않는 한 이것이 실제로 가능하지 않다는 것을 깨달았습니다. 그러나 이제 /usr/local/bin이 내 경로의 앞에 있기 때문에 기본적으로 최신 버전의 gcc로 컴파일됩니다. 이로 인해 gdb를 사용하여 이러한 버전의 애플리케이션을 디버깅하려고 하면 문제가 발생합니다. 또한 이로 인해 다른 응용 프로그램에서 원치 않는 동작이 발생하여 문제가 생길까 걱정됩니다.
참고: /usr/local/bin에 /usr/bin에 있는 응용 프로그램을 재정의하려는 일부 응용 프로그램이 있기 때문에 경로를 재구성할 수는 없습니다.
그래서 내 질문은: 저장소에서 패키지된 애플리케이션을 사용하여 자체 컴파일된 애플리케이션을 어떻게 관리할 수 있습니까? 내 말은, 충돌하지 않고 아무것도 망치지 않고 안전하게 제거할 수 있도록 이 문제를 해결하는 올바른 방법은 무엇입니까? 혼합 측면에서 자체 컴파일된 버전의 애플리케이션을 패키지 버전의 종속성으로 사용하는 등의 작업을 어떻게 수행할 수 있습니까? 나는 gdb 같은 것을 설치하면 내 로컬 버전의 gcc가 기준을 충족한다는 것을 데비안이 자동으로 인식하지 못할 것이라고 생각합니다.
또한 참고: 컴파일된 애플리케이션을 정확히 어디에 설치합니까? /usr/로컬/빈? /선택하다? /홈/사용자/빈? /자신의 디렉토리?
제가 글을 잘 못썼거나 잘못된 부분이 있다면 사과드리며, 필요하다면 더 자세히 설명하겠습니다.
답변1
make
-n
또는 옵션을 사용하여 gcc를 컴파일할 때 설치된 파일 목록을 얻을 수 있습니다 --dry-run
. 예를 들어 make -n install
gcc 소스 디렉터리에서 실행하고 출력을 파일로 리디렉션합니다.
일부 후처리(예 sed
: