많은 Linux 프로그램에서는 구성 파일의 위치가 배포판에 따라 다르다고 명시합니다. 다른 배포판에서 이 작업을 수행하는 방법을 알고 싶습니다. 실제로 소스 코드를 수정했나요? 이러한 위치를 설정하는 빌드 매개변수가 있나요? 이거 검색해봤는데 정보가 없네요. 거기 있다는 건 알지만 찾을 수가 없어요. 이에 대한 "리눅스 방식"은 무엇입니까?
답변1
이는 배포 및 원본("업스트림") 소스에 따라 다릅니다.
autoconf 및 automake를 사용하는 대부분의 패키지의 경우 인수를 사용하여 구성 파일을 찾을 디렉터리를 지정할 수 있습니다 --sysconfdir
. 다른 빌드 시스템(예: CMake)에도 비슷한 옵션이 있습니다. 소스 패키지가 이러한 빌드 시스템 중 하나를 사용하는 경우 패키저는 올바른 매개변수를 쉽게 지정할 수 있으며 패치가 필요하지 않습니다. 그렇지 않더라도(예를 들어 업스트림 소스가 일부 로컬 빌드 시스템을 사용하기 때문에) 일반적으로 업스트림 소스를 패치할 필요 없이 구성 파일을 특정 위치로 이동하기 위해 일부 빌드 구성을 지정하는 것이 가능합니다.
그렇지 않은 경우 일반적으로 배포판에서는 파일을 "올바른" 위치로 간주하는 위치로 이동할 수 있도록 소스에 패치를 추가해야 합니다. 대부분의 경우 배포 패키저에서는 소스를 위에 설명된 대로 구성하여 계속해서 유지 관리/업데이트할 필요 없이 업스트림 관리자에게 패치를 보낼 수 있는 패치를 작성합니다. 이는 구성 파일 위치의 경우이지만 bin
/ sbin
실행 파일(sysadmin 명령의 해석은 배포판마다 다름), 문서가 작성되는 위치 등의 다른 항목도 마찬가지입니다.
참고 사항: 일부 무료 소프트웨어를 유지 관리하는 경우제발포장업자가 귀하와 더 쉽게 대화할 수 있도록 하십시오. 그렇지 않으면 특별한 이유 없이 이와 같은 패치를 유지해야 할 것입니다...
답변2
위치를 조정하기 위해 소스 트리에 패치를 적용했습니다.
(개인) 선호도 및/또는 역사적 관행에 따라 각 배포판을 선택할 수 있는 충분한 "표준"이 있습니다. 해결책이 거의 없습니다오직장점이 있습니다. 이는 때때로 성가시거나 혼란스러울 수 있지만 배포판 내의 일관성이 가장 중요한 목표입니다. 프로그램 Y에 대한 유사한 것(예: 설정/구성 파일)이 어디에 있는지 이미 알고 있다면 혼란이 줄어들고 내용을 더 쉽게 추측할 수 있습니다. 프로그램 Y는 X입니다.
패치 적용 예시
내 Python 패키지는 ruamel.yaml
Debian Sid에서 사용할 수 있습니다. 한때는 이에 의존했으며 ruamel.base
, PyPI를 통해 설치하는 사용자는 여전히 이전의 호환되지 않는 버전이 설치되어 있을 수 있습니다 ruamel.base
. /PyPI를 사용하는 setup.py
것은 진정한 패키지 관리가 아니므로삭제종속성을 통해 이전에 설치된 패키지. 나는 ruamel.base
이전 패키지와 관련된 문제를 제거하고 ruamel.base
이 새 버전에 의존 하는 새 버전을 만들어 PyPI 사용자의 문제를 해결했습니다 ruamel.yaml
.
Sid의 경우 이는 문제가 되지 않습니다. ruamel.base
이전 버전이 설치되어 있지 않습니다(또는 패키지 관리를 통해 제거할 수 있습니다). 그래서 그들은 신청했다수리하다, 당신은 할 수 있습니다ruamel.yaml
시드의 정보 페이지ruamel.yaml
이렇게 하면 on 에 대한 종속성이 제거됩니다 ruamel.base
.
다른 배포판에도 비슷한 설정이 있습니다. 예를 들어, 소스 RPM 파일(예: RedHat/CentOS/SuSE)을 생성하기 위한 사양을 살펴보면 패키지의 원래 tarball을 구성/컴파일 전에 적용될 하나 이상의 패치와 결합한다는 것을 알 수 있습니다.