우리 회사는 숫자 분석(더 구체적으로 말하면 유한 요소 계산)을 수행하기 위해 오래된 작은 클러스터(CentOS 5.4)를 사용합니다. 그들은 상용 패키지를 사용하고 있으며 Linux에 대해 전혀 모릅니다. 그들은 컴퓨터가 실행되는 동안에는 컴퓨터의 어떤 것도 변경하고 싶어하지 않습니다. 저는 이를 시간 효율적인 정책으로 받아들입니다. 그래요~ 아니다관리 권한이 있습니다.
더 작은 패키지를 설치하도록 할 수는 있지만 Python 버전을 2.4에서 2.6+로 변경할 수는 없습니다. 그래서 현재 버전( ./configure --prefix=/home/mysuser/root2
)을 컴파일하기로 결정하고 종속성과 관련된 몇 가지 문제에 부딪혔습니다(예: readline, zlib,curses의 잘못된 버전). , bz2 ... 또는 패키지를 찾을 수 없음). 또한 누락에 대해 불평하는 gcc 를 업데이트해야 합니다 GMP
.MPFR
MPC
이렇게 하는 이유는 이 컴퓨터에서 실행되도록 다른 테스트 소프트웨어를 컴파일하고 싶기 때문입니다. 작업에 필요한 소프트웨어를 컴파일하기 위해 필요한 패키지를 효과적으로 설치하려면 어떻게 해야 합니까? 나는 다른 곳에서 사용하고 있습니다아치리눅스라인을 따라 뭔가를 할 수 있다는 것이 매우 편리하다는 것을 알게 될 것입니다
pacman --root /home/myuser/root2 -S <package>
그러나 이것이 가능한지 영리한지는 전혀 모르겠습니다.
답변1
경영진은 독점 패키지를 기반으로 중요한 기능을 수행하는 작업 클러스터를 업그레이드하지 않는 것이 현명합니다.
패키지를 백포트하는 것은 시간이 많이 걸리고 위험합니다. 즉, 항상 가능한 것은 아닙니다. 원래 CentOS 5.4 저장소 또는 일부 CentOS 5.4 백포트 저장소에 설치하려는 패키지를 찾을 수 있으면 시간 패널티를 피할 수 있습니다. 하나의 호스트에 동시에 여러 버전의 GCC를 가질 수 있지만(임베디드 시스템/크로스 컴파일 사람들은 항상 이 작업을 수행함) 단일 런타임 환경에서 둘 이상의 glibc를 갖는 것은 쉽지 않습니다.
따라서 필요한 패키지가 있는 별도의 최신 환경에서 작업하고 새 환경에서 이전 환경의 출력을 테스트할 수 있는 방법을 찾는 것이 가장 좋습니다. 어떤 경우에도 이전 환경에서 무엇이든 깨질 위험을 감수하지 마십시오. 그렇지 않으면 다음 직업을 찾는 데 얻을 수 있는 stackexchange.com 평판 포인트가 모두 필요할 수 있습니다 ;-)
답변2
배포판에서 패키지를 설치하는 것은 루트 권한이 없을 때 어려운 경우가 많습니다. 왜냐하면 루트 권한은 고정된 디렉터리 레이아웃을 가정하고 종속성 시스템은 루트가 아닌 사용자로 설치할 수 없는 setuid 또는 setgid 프로그램이 포함된 일부 패키지를 요구하는 경향이 있기 때문입니다.
소스에서 컴파일하는 것이 가장 쉬운 방법인 경우가 많습니다. (그리고 속도를 중시한다면 특정 프로세서 모델에 가장 적합한 컴파일 옵션을 선택할 수 있습니다.)
컴파일하는(또는 타르볼을 추출하여 설치하는) 패키지를 구성하려면 다음을 사용하는 것이 좋습니다.집어 챙겨 넣다또는 더 강력하지만 더 복잡한 것xstow. 기본 작동 모드는 각 패키지를 별도의 디렉토리에 설치한 다음 심볼릭 링크를 만들어 모두 함께 묶는 것입니다. 다음은 stow를 사용한 일반적인 컴파일 및 설치 세션입니다.
tar xzf foobar-42.tar.gz
cd foobar-42
./configure --prefix=~/software/stow/foobar-42
make
make install
cd ~/software/stow
stow foobar-42
마지막 명령은 아래의 파일과 디렉터리에서 심볼릭 링크를 ~/software/stow
만듭니다 ~/software
. 예를 들어, 디렉토리와 파일 및 가 ~/software/stow/foobar-42
포함되어 있으면 심볼릭 링크로 끝납니다.lib/foobar
bin/foobar
man/man1/foobar.1
~/software/bin/foobar -> ../stow/foobar-42/bin/foobar
~/software/lib/foobar -> ../stow/foobar-42/lib/foobar
~/software/man/man1/foobar.1 -> ../../stow/foobar-42/man/man1/foobar.1
프로그램을 제거하려면 해당 디렉터리 stow -D foobar-42
에서 실행하고 . 프로그램을 일시적으로 사용할 수 없도록 하려면(예: 다른 버전을 시도하기 위해) 해당 부분을 실행하기만 하면 됩니다.~/software/stow
~/software/stow/foobar-42
stow -D
또한보십시오루트가 아닌 패키지 관리자;Ubuntu 10.04에서 vim/gvim을 7.3으로 업그레이드하는 가장 좋은 방법은 무엇입니까?