
php-5.3
Arch Linux에 설치하려고 하는데 bison
너무 새롭기 때문에 bison
소스에서 이전 버전을 빌드했습니다. 그리고 /usr/local
기본적으로 자체적으로 설치되는 것으로 보입니다 . (이것은 일종의 규칙입니까?) 이제 bison
기본 시스템 버전과 방금 설치한 버전과 함께 두 가지 이상의 버전을 설치할 수 있는지 궁금합니다. 이런 종류의 것들은 거의 필요하지 않을 것입니다. 그냥 궁금해서요. 이게 힘든 일인가요? 어떻게 해야 합니까?
답변1
일부 특정 소프트웨어는 으로 구성할 수 있습니다 --program-suffix=-my-version-suffix
. 다른 디렉터리 중 일부를 사용자 정의해야 할 수도 있지만 --prefix
기본값( /usr/local
) 으로 두면 /usr
.
에서일반적인그러나 임의 버전의 동시 설치를 허용하는 유일한 배포판은 다음과 같습니다.아니야, 그렇지만젠투대부분의 배포판이 귀찮게 하는 것보다 더 많은 패키지를 시도합니다(Bison의 경우 한 번에 하나의 버전만 허용하지만 적어도 선택은 제공합니다).
그러나 소스 코드가 최신 버전의 Bison과 충돌하는 경우 이는 일반적으로 소스 코드에 단순한 문제가 있음을 의미합니다. 일반적으로 이를 고칠 수 있는 %option
(또는 ) 것이 있습니다 .--argument
답변2
이 문제를 일관되게 치료하는 한 가지 방법은 다음을 사용하는 것입니다.modules
패키지. 이는 환경 변수(예: 바이너리 경로)를 변경하여 작동합니다.
환경 모듈 패키지는 모듈 파일을 통해 사용자 환경의 동적 수정을 제공합니다. 모듈은 깔끔한 방식으로 동적이고 원자적으로 로드 및 언로드될 수 있습니다.
예를 들어
$ module load gcc/3.1.1
$ which gcc
/usr/local/gcc/3.1.1/linux/bin/gcc
$ module switch gcc gcc/3.2.0
$ which gcc
/usr/local/gcc/3.2.0/linux/bin/gcc
귀하의 경우 환경 변수 bison
에서 먼저 나오는 버전이 PATH
선택됩니다. 현재 터미널에 대해 이 변수를 수동으로 검사하거나 변경하려면 다음을 실행하십시오.
$ echo $PATH
....
/opt/bin
PATH에 _pre_pending하여 우선순위를 지정하세요 .
$ export PATH="/opt/bin:$PATH"
또는 /opt/bin/
에 추가합니다 PATH
( 의 다른 곳에서 동일한 이름의 바이너리가 발견되지 않는 경우에만 선택됨 PATH
).
$ export PATH="$PATH:/opt/bin"
답변3
좀 더 업데이트 된 답변을 제공하려면 다음을 수행하십시오.
네, 요즘에는 확실히 가능합니다.
배포가 너무 이루어지지 않는 한 종속성 지옥은 과거의 일입니다. :)
아치는 그것을 자르지 않습니다. 소스 기반 배포가 필요합니다. 그렇지 않으면 종속성이 하드 코딩되고(하드 코딩의 특정 정의에 대해) 두 설치 모두 동일한 라이브러리 등을 가리킬 것입니다.
그러나 소스에서 빌드할 때는 매번 다른 경로로 빌드할 수 있습니다.
Gentoo는 이를 위해 오랫동안 "슬롯팅"이라는 기능을 갖고 있었는데, 이는 모든 것을 사소한 일로 만듭니다. 패키지 버전의 종속성을 다른 패키지의 특정 "슬롯"으로 지정할 수 있습니다. 슬롯은 다른 슬롯과 충돌하지 않는 버전의 범위입니다. (내가 본 대부분의 패키지의 경우 모든 버전이 자체 슬롯이 될 수 있습니다. 특히 라이브러리의 경우. 그러나 때로는 패키지 자체가 하나만 있는 것에 의존하기 때문에 패키지가 이를 처리할 수 없습니다. 또는 약간의 작업이 필요하기 때문에 패키지를 처리할 수 없습니다. 패키지 관리자에서 작업합니다(예: 설치 시 설치된 구성 파일 수정))
하지만 다른 전체 소스 배포판에도 비슷한 내용이 있을 것이라고 확신합니다.
그렇지 않은 경우 해결 방법은 항상 관리자가 배포 패키지를 빌드하는 것과 동일한 빌드 시스템을 설정하고 필요한 패키지를 새 이름으로 복제한 다음 빌드 프로세스를 변경하여 다른 버전의 종속성을 가리키도록 하는 것입니다. , 그런 다음 배포판의 패키지 관리자처럼 새로운 비소스 패키지로 빌드하면 됩니다. (솔직히 저는 Gentoo를 설치하는 것이 더 쉽다고 느꼈습니다. :)