Linux에 여러 버전의 프로그램을 설치하는 방법이 있습니까?

Linux에 여러 버전의 프로그램을 설치하는 방법이 있습니까?

php-5.3Arch Linux에 설치 하려고 하는데 bison너무 새롭기 때문에 소스에서 이전 버전을 빌드했습니다 bison. /usr/local기본적으로 설치되어 있는 것 같습니다 . (이것은 일종의 규칙입니까?) 이제 bison기본 시스템 버전과 방금 설치한 버전과 함께 여러 버전의 IE를 나란히 설치할 수 있는지 궁금합니다. 이런 종류의 일은 아마도 거의 필요하지 않을 것입니다. 그냥 궁금해서요. 이게 힘든 일인가요? 나는 무엇을 해야 합니까?

답변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_pre_pending을 통한 PATH보다 선호합니다 .

$ export PATH="/opt/bin:$PATH"

또는 다음 /opt/bin/에 추가합니다 PATH(동일한 이름의 바이너리를 다른 곳에서 찾을 수 없는 경우에만 선택됨 PATH).

$ export PATH="$PATH:/opt/bin"

답변3

업데이트된 답변을 드리자면 다음과 같습니다.

네, 오늘은 확실히 가능합니다.
배포가 그렇지 않은 한 종속성 지옥은 과거의 일입니다. :)

아치는 그것을 자르지 않습니다. 소스 기반 배포가 필요합니다. 종속성은 하드코딩되고(하드코딩의 일부 정의에 대해) 두 설치 모두 동일한 라이브러리 등을 가리킵니다.
하지만 소스에서 빌드하는 경우 매번 다른 경로를 사용하여 빌드할 수 있습니다.

Gentoo에는 모든 것을 간단하게 만드는 "슬롯팅"이라는 기능이 오랫동안 있었습니다. 패키지 버전에 대한 종속성을 다른 패키지의 "슬롯"으로 지정할 수 있습니다. 슬롯은 다른 슬롯과 충돌하지 않는 일련의 버전입니다. (내가 본 대부분의 패키지의 경우 모든 버전이 자체 슬롯이 될 수 있습니다. 특히 라이브러리의 경우 더욱 그렇습니다. 그러나 때로는 패키지 자체가 하나만 있는 항목에 의존하기 때문에 패키지가 이를 처리할 수 없거나 패키지 관리자 작업에서 무언가가 필요하기 때문에 처리할 수 없습니다. [설치 시 설치된 구성 파일 수정 등])

하지만 다른 전체 소스 배포판에도 비슷한 내용이 있을 것이라고 확신합니다.

그렇지 않은 경우 해결 방법은 항상 유지 관리자가 릴리스 패키지를 빌드할 때와 동일한 빌드 시스템을 설정하고 필요한 패키지를 새 이름으로 복제한 다음 빌드 프로세스를 다른 버전의 종속성을 가리키도록 변경한 다음 이를 빌드하는 것입니다. 배포판의 패키지 관리자와 마찬가지로 소스가 아닌 패키지의 새로운 기능입니다. (솔직히 저는 Gentoo가 설치하기 더 쉽다고 생각합니다. :)

관련 정보