저는 이전 버전의 Linux를 실행하는 서버에서 작업하고 있습니다. 시스템에 대한 루트 액세스 권한이 없기 때문에 자주 사용하는 도구(Vim 7.3)의 업데이트된 버전을 만들고 싶었습니다. 그냥 빌드해서 ~/bin에 설치하면 될 것 같아요. 그러나 시스템 전체에 설치되지 않은 ncurses 개발 파일이 필요합니다. ncurses-devel rpm을 찾아 "lib" 및 "include" 폴더를 추출했습니다. 이 폴더를 어디에 넣어야 하며, 로컬에서 패키지를 올바르게 구성하고 빌드할 수 있도록 ./configure 스크립트에 해당 폴더를 찾도록 지시하는 방법은 무엇입니까?
편집: Virtualbox에 동일한 OS를 설치하고 거기에 패키지를 빌드하고 바이너리를 복사하여 마침내 이 문제를 해결했습니다.
답변1
저는 지난 작업에서 이 작업을 많이 했습니다. 가장 효율적인 솔루션은 ~/usr 디렉토리를 생성하고 --prefix 매개변수를 사용하여 ./configure 스크립트를 올바른 방향으로 지정하는 것 같았습니다. 다음과 같이 진행하세요:
- ~/usr 디렉터리를 만들고 그 아래에 include, 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
이 배열은 사용자 공간에서 무언가를 구축해야 하는 대부분의 경우에 적합합니다. 가장 어려운 부분은 일반적으로 필요한 모든 종속성을 찾고 구축하는 것이지만 이를 위해서는 인터넷 검색이나 패키지 관리자의 "소스 가져오기" 기능을 현명하게 사용해야 합니다.
답변2
일반적으로 코드를 재구성하고 변경하여 홈 디렉터리의 새 위치나 모든 라이브러리 및 프로그램의 다른 경로를 정의할 수 있어야 합니다.
그러나 IMHO, 가장 쉬운 방법(공간이 충분한 경우)은 모든 Linux 배포판이 설치된 하위 디렉터리에서 chroot를 사용하는 것입니다. 물론 일반 사용자는 사용할 수 없습니다.chroot, 하지만 다음과 같은 훌륭한 도구를 사용할 수 있습니다.가근성그리고가근성
chroot 파일 시스템을 생성하려면 Debian(또는 ubuntu와 같은 Debian 파생 제품)을 사용하여 디렉터리를 배포하는 것을 좋아합니다.부팅 방지 프로그램유용.
따라서 프로세스는 간단합니다(기술적인 세부 사항은 다루지 않으므로 명령 매뉴얼을 읽어 보십시오).
- 획득 및 설치: fakeroot, fakechroot 및 debootstrap 도구
- debootstrap을 사용하여 하위 디렉터리를 만듭니다. (이 작업은 루트로만 수행할 수 있습니다. 다른 컴퓨터에서 이 작업을 수행하고 필요에 따라 바이너리를 복사할 수 있습니다.)
- 실행: fakechroot fakeroot chroot mydebian-dir
더 자세한 내용이 필요하다면 모든 작업을 수행하는 스크립트가 있다고 생각합니다.
답변3
이 문제에 대한 또 다른 해결책은 MacOSX 사용자 및 기타 플랫폼(solaris, AIX)처럼 Gentoo 접두사를 사용하는 것입니다.
http://www.gentoo.org/proj/en/gentoo-alt/prefix/
$PREFIX 위치에 젠투 스택(포티지 포함)을 컴파일합니다. 젠투 패키지를 사용하며 대부분의 패키지는 이러한 설정 사용을 지원합니다.
포티지는 모든 의존성을 추적할 것이며 커뮤니티에서 테스트한 최신 버전의 소프트웨어를 갖게 될 것입니다...
답변4
prefix=/home/foo/usr
그래도 문제가 해결되지 않으면 다음을 시도해 보세요 .
CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure