sudo를 사용할 수 없는 원격 서버에 Fish를 설치하는 방법은 무엇입니까?

sudo를 사용할 수 없는 원격 서버에 Fish를 설치하는 방법은 무엇입니까?

SSH 연결 시 사용할 수 있도록 sudo 권한 없이 원격 서버에 Fish 쉘을 설치하고 싶습니다.

답변1

홈디렉토리에 설치하시면 됩니다.

이렇게 하려면 fishGitHub에서 셸의 소스 코드 저장소를 보고 "빌드" 섹션 아래의 설치 지침을 따라야 합니다.README.md서류, 또한 대체 설치 디렉터리를 사용하고 싶다고 CMake에 알립니다.

git clone --depth=1 https://github.com/fish-shell/fish-shell
cd fish-shell

mkdir build
cd build

cmake -DCMAKE_INSTALL_PREFIX=$HOME/local ..

make
make install

여기에 .executable이 있을 것 fish입니다 (이것을 귀하의 파일에 추가할 수도 있습니다 ).$HOME/localfish$HOME/local/bin$PATH

이는 모든 필수 도구( gitmake) 를 cmake사용할 수 있고 빌드 시스템이 모든 필수 종속성을 찾는다고 가정합니다1 .

예를 들어 특정 버전 태그 3.0.2(작성 당시 최신 버전) 를 확인하고 싶다면 git clone --branch=3.0.2 --depth=1 ...저장소 복제 시 사용한다. 릴리스 태그를 지정하지 않으면 불안정한 최신 개발 버전의 코드를 받게 됩니다.

그런 다음 대화형 셸을 시작할 때 일반 셸을 시작해야 합니다 ( 수동으로 시작 fish하지 않으려는 경우 ). fish쉘이 이면 다음을 bash추가하여 이를 수행할 수 있습니다.

if [ -x "$HOME/local/bin/fish" ]; then
    exec "$HOME/local/bin/fish"
fi

또는 그런 것 $HOME/.bashrc. 이 특별한 접근 방식은바꾸다대화형 쉘을 시작할 때마다 bash프로세스가 있습니다 .fishbash

1Linux가 아닌 일부 시스템에서는 헤더 를 포함 하도록 수동으로 패치해야 합니다. 그렇지 않으면 파일이 선언되지 않아 컴파일되지 않을 수 있습니다. 이것은src/fallback.cpplocale.huselocale()코드의 확인 오류, 이 문제로 인해 버전 3.1.0에서 수정될 예정입니다.


항상 그렇듯이 또 다른 옵션은 시스템 관리자에게 문의하여그들을미리 컴파일된 패키지에서 설치합니다. 그런 다음 시스템에서 사용 가능한 유사한 명령을 fish사용 하도록 로그인 쉘을 변경할 수 있습니다 .chsh

답변2

루트 없이 소프트웨어를 설치하는 것은 많은 솔루션에서 전형적인 문제입니다.
커널 버전 <3.X의 경우에만 권장합니다리눅스브루, brew install fishcmake와 같은 종속성을 처리하면 됩니다.
더 높은 것에 대해서는 참조훌륭한 Linux 컨테이너

관련 정보