나만의 표준 패키지 버전을 사용하는 방법

나만의 표준 패키지 버전을 사용하는 방법

Nautilus를 사용하면서 문제가 발생했는데 소스 코드를 다운로드하고 일부 변경한 후 직접 컴파일하는 것 외에는 해결책을 찾지 못했습니다. 이제 두 가지 버전의 노틸러스가 있습니다. 저장소의 공식 버전이고 일부 변경된 버전입니다. 나는 둘 다 지키고 싶다.

응용 프로그램 내에서 노틸러스를 시작할 때 응용 프로그램이 자체 컴파일된 노틸러스 버전을 사용하도록 지시하는 좋은 방법은 무엇입니까? (예를 들어 Firefox로 다운로드 폴더를 엽니다.)

나는 Firefox가 이를 수행한다는 것을 알았고 /usr/bin/nautilus이를 내 프로그램에 대한 심볼릭 링크로 대체할 수 있었습니다. 그러나 노틸러스 업데이트를 설치하면 이 심볼릭 링크가 덮어쓰여질 것이라고 생각합니다. 제가 할 수 있는 다른 일이 있나요?

답변1

처음에는 어려워 보일 수도 있지만 쉬운 Nautilus의 패키지 버전을 수정하겠습니다. 비록 패키지 업그레이드 후에는 살아남지 못하기 때문에 약간의 규율이 필요합니다. (바라보다월트의 대답더 알아보기. )

상황에 따라 가장 쉬운 방법은 전송을 추가하는 것입니다.

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

이는 패키지를 설치하려고 할 때 패키지 dpkg이름을 바꾸 도록 지시합니다 /usr/bin/nautilus. /usr/bin/nautilus.original그런 다음 자신만의 기호 링크를 추가할 수 있으며 Nautilus 패키지가 업그레이드되더라도 변경되지 않은 상태로 유지됩니다. 그것을 제거하려면 다음을 실행하십시오.

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

전송 시 올바르게 처리되지 않은 특정 구성 파일을 제외하고 비슷한 방식으로 바꿔야 하는 다른 파일에도 동일한 기술을 적용할 수 있습니다.

답변2

가장 장기적인 해결책은 노틸러스 개발자에게 연락하여 공식 노틸러스 코드에 대한 패치를 개발하는 것입니다. 그러면 새 버전의 노틸러스가 시스템에 설치된 후에 이 문제를 처리할 필요가 없습니다.

이 작업을 수행했다고 가정하면 변경 사항이 시스템에 적용되기 전에 자신이 패치한 노틸러스 버전을 사용하려는 노력을 계속해야 합니다.

가장 간단한 방법은 패치된 노틸러스 패키지를 생성하고 자동으로 업그레이드되지 않는 방식으로 설치하는 것입니다.

데비안에서(이 질문에 사용하는 태그에 따라) 이를 달성하는 가장 쉬운 방법은 다음과 같습니다.

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는 업데이트된 버전이 존재하지만 유지되고 있음을 알려줍니다. 그런 다음 위의 작업을 다시 수행해야 합니다.

관련 정보