[unix] 내 자신의 표준 패키지 버전을 사용하는 방법

노틸러스에서 소스 코드를 다운로드하고 일부 변경 사항을 작성하고 스스로 컴파일하는 것 외에 다른 해결책을 찾지 못한 문제가 발생했습니다. 이제 저장소의 공식 버전과 몇 가지 변경 사항이있는 두 가지 버전의 노틸러스가 있습니다. 둘 다 지키고 싶습니다.

응용 프로그램 내에서 Nautilus를 시작할 때 응용 프로그램이 컴파일 된 Nautilus 버전을 사용하도록 지시하는 좋은 방법은 무엇입니까? (예 : firefox로 Downloads 폴더 열기)

파이어 폭스 호출을 알아서 /usr/bin/nautilus내 프로그램에 대한 심볼릭 링크로 바꿀 수있었습니다. 그러나 노틸러스 용 업데이트를 설치하자마자이 심볼릭 링크를 덮어 쓰게됩니다. 내가 할 수있는 다른 일이 있습니까?



답변

패키지 업 그레 이드에서 살아남지 못하기 때문에 약간의 훈련이 필요하지만 처음에는 어려워 보일 수 있지만 충분히 쉬운 패키지 패키지 버전의 노틸러스를 고칠 것입니다. (자세한 내용은 Wouter의 답변 을 참조하십시오.)

상황에서 가장 간단한 방법은 기분 전환을 추가하는 것입니다.

sudo dpkg-divert --divert /usr/bin/nautilus.original --rename /usr/bin/nautilus

패키지를 설치하려고 할 때마다 dpkg이름을 바꾸 /usr/bin/nautilus도록 지시 /usr/bin/nautilus.original합니다. 그런 다음 고유 한 심볼릭 링크를 추가 할 수 있으며 노틸러스 패키지를 업그레이드 한 경우에도 그대로 유지됩니다. 제거하려면 다음을 실행하십시오.

sudo dpkg-divert --rename --remove /usr/bin/nautilus

전환 할 때 올바르게 처리되지 않는 일부 구성 파일을 제외하고 유사한 방식으로 교체해야하는 다른 파일에 대해 동일한 기술을 적용 할 수 있습니다.


답변

가장 장기적인 해결책은 노틸러스 개발자에게 연락하여 공식 노틸러스 코드 패치로 작업하는 것이므로 업데이트 된 버전의 노틸러스가 시스템에 충돌하면 더 이상이 문제를 처리 할 필요가 없습니다.

변경 사항을 시스템에 적용 할 때까지 자체 패치 된 노틸러스 버전을 사용하려는 문제를 해결해야합니다.

가장 쉬운 방법은 패치가 이미 적용된 상태에서 노틸러스 패키지를 생성하고 자동으로 업그레이드되지 않는 방식으로 설치하는 것입니다.

데비안에서 (이 질문의 태그에 따르면) 가장 쉬운 방법은 다음과 같습니다.

apt-get install devscripts
apt-get build-dep nautilus # note, this also pulls in build-essential
apt-get source nautilus
cd nautilus-*
# apply your patch
dch -i
# Set the version number of the new changelog entry to something like x.y.z-a.local,
# where "x.y.z-a" is the version of the package as it existed prior to your patch,
# add a description of the change after the '*', then save and exit the editor
debuild -uc -us -i && sudo debi --upgrade
echo "nautilus hold" | sudo dpkg --set-selections

패치로 새 패키지를 빌드하고 설치 한 다음 더 이상 자동 업데이트되지 않도록 dpkg로 표시합니다.

다음에 업데이트 된 버전의 패키지가 릴리스 될 때 apt는 업데이트 된 버전이 존재하지만 보류 중임을 알려줍니다. 그런 다음 위의 작업을 다시 수행해야합니다.


답변