플래시 드라이브에 프로그램을 설치하여 내부에서 실행할 수 있도록 합니다.

플래시 드라이브에 프로그램을 설치하여 내부에서 실행할 수 있도록 합니다.

답을 읽을 때이 게시물, 나는 우리 컴퓨터에서 자주 사용하는 프로그램을 휴대용(Windows 의미에서)으로 만들어 플래시 드라이브에 복사할 수 있는지 궁금합니다. 다른 컴퓨터에서 우리가 좋아하는 프로그램에 액세스할 수 있나요?

이동식 설치가 가능한가요?

답변1

예, 그렇게 할 수 있습니다. 이는 패키지 관리자에 의존하는 것보다 더 많은 작업입니다. Windows에서 "이식 가능한" 설치의 주요 매력은 괜찮은 패키지 관리자가 부족하다는 점입니다.

프로그램이 종속성(데이터 파일, 라이브러리 등)을 찾도록 준비해야 합니다. 많은 프로그램이 환경 변수를 지원합니다. 일부는 바이너리가 있는 디렉토리나 관련 디렉토리(예: ../lib동반 파일이 있는지 확인)를 확인합니다.

루트 디렉터리에 소프트웨어를 설치합니다. 이 루트 디렉터리 아래에 일반적으로 사용되는 범주 디렉터리 를 만듭니다: bin, 등. 모든 소프트웨어를 관리하려면 각 소프트웨어를 독립적으로 설치한 다음 다음과 같은 프로그램을 사용하십시오.libman집어 챙겨 넣다카테고리 디렉토리에 연결하기 위해 심볼릭 링크 포리스트를 생성합니다. 바라보다추적 프로그램Stowe에 대해 간략하게 소개합니다. 그래서 당신은 다음과 같은 심볼릭 링크를 갖게 될 것입니다

bin/foo -> ../stow/foo-1.42/bin/foo
bin/foobar -> ../stow/foo-1.42/bin/foobar
man/man1/foo.1 -> ../../stow/foo-1.42/man/man1/foo.1

환경변수를 설정하려면 스크립트가 필요합니다. 이를 설치의 루트 디렉터리에 놓고 이를 사용하여 $0스크립트를 찾습니다. 스크립트는 상위 스크립트에 영향을 미칠 수 없으므로 일반적인 접근 방식은 스크립트가 호출 셸에서 평가할 수 있는 출력을 생성하도록 하는 것입니다. 이 스크립트를 이라고 부르자 setup.sh.

#!/bin/sh
set -e
root=$(dirname -- "$0")
cd -- "$root"
printf "PORTABLE_ROOT='%s'\\n" "${PWD}" | sed "s/'/'\\\\''/g"
prepend () {
  eval "set -- \"\$1\" \"\$2\" \"${$1}\""
  case :$3: in
    *:$PORTABLE_ROOT/$2:*) :;; # already there (at any location)
    :: echo '$1=$PORTABLE_ROOT/$2; export $1';; # the path was empty
    *) echo '$1=$PORTABLE_ROOT/$2:$3; export $1';; # prepend
  esac
}
prepend PATH bin
prepend MANPATH man
prepend LD_LIBRARY_PATH lib
prepend PERL5LIB lib/perl
prepend PYTHONPATH lib/python

(경고: 테스트되지 않은 코드)

셸에서 휴대용 설치를 사용하려면 를 실행하세요 eval "`/path/to/setup.sh`".

답변2

틀림없이. 일부 언어(예: Java 또는 Python)는 어느 정도 이식성을 달성하지만 운영 체제별 시스템 호출을 포함하면 이식성이 떨어질 수 있습니다.

관련 정보