루트 액세스없이 시스템에서 개발 파일을 로컬로 설치 하시겠습니까?


11

이전 버전의 Linux를 실행하는 서버가 있습니다. 시스템에 대한 루트 액세스 권한이 없으므로 많이 사용하는 최신 버전의 도구를 만들고 싶었습니다 (Vim 7.3). 그냥 빌드하고 ~ / bin에 설치한다고 생각했습니다. 그러나 시스템 전체에 설치되지 않은 ncurses 개발 파일이 필요합니다. ncurses-devel rpm을 발견하고 'lib'및 'include'폴더를 추출했습니다.이 폴더를 어디에 배치하고 패키지를 로컬로 올바르게 구성하고 빌드 할 수 있도록 ./configure 스크립트에 폴더를 찾으려면 어떻게해야합니까?

편집 : 나는 Virtualbox에 동일한 OS를 설치하고 거기에 패키지를 빌드하고 바이너리를 복사 하여이 문제를 해결했습니다.


serverfault.com/questions/23734 는 도움이 될 정도로 유사 할 수 있습니다. 대부분의 답변은 homedir 내에 전체 시스템을 효과적으로 설치하는 것과 관련이 있지만 Gentoo Prefix 및 Rootless Gobo에서 해결할 수 있습니다.
ephemient

답변:


14

마지막 작업 에서이 작업을 매우 자주 수행했습니다. 가장 효과가 좋은 것으로 보인 솔루션은 ~ / usr 디렉토리를 만들고 --prefix 인수를 사용하여 ./configure 스크립트를 올바른 방향으로 지정하는 것입니다. 단계는 다음과 같습니다.

  • ~ / usr 디렉토리를 작성하고 그 아래에 lib 및 bin 디렉토리를 포함하십시오.
  • .profile, .bashrc 또는 기타 쉘 초기화 스크립트에서 다음을 추가하십시오 (또는 쉘의 방언에서 동일 함).
    export PATH=$PATH:~/usr/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/usr/lib
    export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/usr/include
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/usr/include
  • 패키지를 만들 때 사용 ./configure --prefix=/home/<username>/usr

이 배열은 사용자 공간에서 물건을 만들어야하는 대부분의 상황에서 나에게 효과적이었습니다. 가장 어려운 부분은 일반적으로 필요한 모든 종속성을 찾아서 작성하는 것이지만 패키지 관리자의 '소스 가져 오기'기능을 인터넷 검색 또는 신중하게 사용하면됩니다.


나를 위해 일하지 않았다. configure 스크립트가 ~ / usr
postfuturist

나는 @postfuturist와 같은 문제가있었습니다. 모든 내보내기 호출 ${HOME}대신 에 사용하여 문제 를 해결 ~한 후 pkg-config가 기뻤으며 사용자가 설치 한 라이브러리 및 패키지를 찾을 수있었습니다.
phyatt

3

일반적으로 홈 디렉토리 또는 모든 라이브러리 및 프로그램의 다른 경로에 새 위치를 정의하기 위해 코드를 재구성하고 변경할 수 있어야합니다.

그러나 가장 많은 공간이있는 경우 가장 쉬운 방법 인 IMHO는 모든 Linux 배포판이 설치된 하위 디렉토리에서 chroot를 사용하는 것입니다. 일반적인 사용자로서 curoot는 chroot를 사용할 수 없지만 fakechrootfakeroot 와 같은 훌륭한 도구를 사용할 수 있습니다.

chroot 파일 시스템을 만들려면 debootstrap 유틸리티를 사용하여 데비안 (또는 우분투와 같은 데비안 파생) 디렉토리를 배포하고 싶습니다 .

따라서 절차가 쉽습니다 (기술 정보를 입력하지 않고 명령 매뉴얼을 읽으십시오).

  • 가져 오기 및 설치 : fakeroot, fakechroot 및 debootstrap 도구
  • debootstrap을 사용하여 하위 디렉토리를 만듭니다 (이것은 루트로만 실행할 수있었습니다. 다른 컴퓨터에서이를 수행하고 필요한 경우 바이너리를 복사 할 수 있습니다)
  • 실행 : fakechroot fakeroot chroot mydebian-dir

더 자세한 정보가 필요하면이 작업을 수행 할 수있는 스크립트가 있다고 생각합니다.


2

이 문제에 대한 또 다른 해결책은 MacOSX 사용자 및 기타 플랫폼 (Solaris, AIX)이 수행하는 것처럼 Gentoo Prefix를 사용하는 것입니다.

http://www.gentoo.org/proj/en/gentoo-alt/prefix/

$ PREFIX 위치에서 젠투 스택 (포티지 포함)을 컴파일합니다. 젠투 패키지를 사용하며 대부분의 패키지는이 설정의 사용을 지원합니다.

포티지는 모든 의존성을 추적하고, 소프트웨어의 마지막 버전을 갖게 될 것이며, 커뮤니티에서 테스트했습니다 ...


1

경우 prefix=/home/foo/usr없는 작업을 수행, 시도 :

CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.