tar 파일을 "전역적으로" 설치하는 방법은 무엇입니까? [폐쇄]

tar 파일을 "전역적으로" 설치하는 방법은 무엇입니까? [폐쇄]

"sudo apt-get install XYZ"(종속성이 없다고 가정)를 사용한 것처럼 명령줄에서 즉시 사용할 수 있는 방식으로 로컬 tar 파일을 설치하고 싶습니다.

tar의 압축을 풀고 구성/make를 사용하여 컴파일하는 방법을 알고 있지만 나중에 경로를 추가해야 하는 실행 파일만 남습니다.

/bin에 복사해서 끝낼 수 있을 것 같지만 여기서 표준 관행이 무엇인지 궁금합니다.

보너스로 RPM과 다른 유형의 패키지를 사용하여 이를 수행하는 방법을 아는 것이 좋을 것입니다.

답변1

이 답변은 다음을 기반으로 합니다.여러 채팅 메시지이제 이를 확장된 요약으로 게시했습니다.

환경 $PATH변수

"명령줄에서 즉시 사용 가능"이라는 말은 또는 같은 name것을 입력하지 않고도 실행할 수 있다는 뜻이라고 가정합니다 ./path/to/name/home/galahad/bin/name./name

당신의$PATH환경 변수구분된 디렉토리 이름 목록을 포함합니다 :. 쉘에서 문자가 포함된 명령을 실행하면 /실행할 실행 파일의 정확한 위치와 이름으로 해석됩니다. 하지만 명령을 실행하면아니요를 포함하면 /쉘은 $PATH디렉토리에서 해당 이름의 실행 파일을 검색하고 찾은 첫 번째 파일을 실행합니다. (이전에 실행한 실행 파일의 위치도 기억할 수 있으므로 실제로 매번 검색할 필요가 없습니다.)

그렇기 때문에 현재 디렉터리에 있는 실행 파일을 ./name실행하는 것이 일반적인 방법입니다. 대신 name런타임은 .name$PATH

실행하면 echo "$PATH"다음과 같은 내용이 표시되지만, 정확히 다음과 같지는 않을 수도 있습니다.

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

의 디렉토리를 반드시 $PATH호출할 필요는 없지만 bin이는 일반적입니다.

빌드 구성

./configure를 실행하고 컴파일하는 소스 코드가 있는 경우 일반적으로 (또는 )을 make사용하여 설치합니다 . 그러면 빌드 디렉터리의 파일이 설치 위치로 복사됩니다. 설치하려는 항목이 실행 가능한 명령을 제공하는 경우 해당 실행 파일은 일반적 으로 .make installsudo make install$PATH$PATH

소프트웨어 빌드 및 설치는 , ./configure, make때로는 make check또는 을 실행 make test한 다음 또는 을 실행하는 것처럼 make install간단 하지만, 빌드를 구성하기 위해 스크립트 sudo make install에 옵션을 전달하려는 경우가 있습니다 . configure특히,pfnuesel이 말했듯이, 이것이 구성 방법입니다어디소프트웨어가 곧 설치될 예정입니다. 이 make install단계에서는 실제로 소프트웨어를 설치하지만 일반적으로 ./configure모든 것이 설치되는 위치를 설정합니다.

가장 일반적인 옵션은 입니다 --prefix. 무엇을 사용해야 할지 모를 때 configure기본 접두사는 일반적으로 입니다 /usr/local. (때때로 프로그램이나 라이브러리의 소스 코드가 다른 접두사로 기본 설정되는 경우가 있습니다. 다행히도 이런 경우는 드뭅니다.)

따라서 ./configure일반적으로 해당하는 것은 입니다 ./configure --prefix=/usr/local. 홈 디렉토리에 소프트웨어를 설치하려면 ./configure --prefix=/home/galahad( /home/galahad홈 디렉토리인 경우) 또는 를 사용할 수 있습니다 --prefix="$HOME". 물론 를 사용하여 소프트웨어를 빌드하고 설치해야 합니다 make. 소스 코드 형태로 배포되는 모든 소프트웨어가 이런 방식으로 구축되는 것은 아닙니다. 항상 추출된 소스 코드 아카이브에서 문서를 찾아야 합니다.

무슨 --prefix뜻 인가요?

실행하면 소프트웨어가 다음 위치에 설치되어야 함을 나타냅니다../configure --prefix=directorydirectory목차. 그러나 이것이 느슨한 파일을 다음 위치에 넣는 경우는 거의 없습니다.directory. 대신, 다른 목적으로 사용되는 파일을 다른 하위 디렉터리에 배치합니다.directory. 이러한 하위 디렉터리가 없으면 생성됩니다.

실행 파일은 일반적으로 들어가지만, directory/bin일반적으로 시스템 관리에 사용되는 경우에도 들어갈 수 있고, 게임인 경우에도 들어갈 수 있습니다(현재는 거의 없음). 라이브러리를 또는 비슷한 이름의 다른 디렉토리(예: 헤더 파일)에 넣습니다. 매뉴얼 페이지를 입력하십시오. 소프트웨어에서 사용하는 데이터 파일은 .directory/sbindirectory/gamesdirectory/libdirectory/lib32directory/includedirectory/mandirectory/share

이게 무슨 뜻이야directory가 되다접두사. 다른 파일이 설치될 위치가 포함된 상위 디렉터리입니다.따라서 접두사로 나타납니다.내부에절대 경로make install대부분의 파일과 디렉토리는 sudo make install.

그러나 몇 가지 예외가 있습니다. 시스템 전체 구성 파일(때때로 이를 사용하는 소프트웨어가 설치될 때 생성되지만 항상 그런 것은 아님) /etc은 일반적으로 다른 접두사를 지정해도 영향을 받지 않습니다. 많은 소프트웨어를 설치하더라도 /usr/local여전히 대부분 사용되며 /etc디렉토리 /usr/local/etc가 존재하지 않거나 비어 있거나 파일이 거의 포함되지 않을 수 있습니다.

man hier많은 시스템에서 다음을 실행하여 일반적인 파일 시스템 레이아웃에 대한 자세한 정보를 찾을 수 있습니다. GNU/Linux 시스템을 사용한다면 다음에 관심이 있을 것입니다.파일 시스템 계층 표준.

시스템에 소프트웨어를 설치할 위치

대부분의 GNU/Linux 운영 체제에서 패키지 관리자가 설치한 프로그램을 포함하여 시스템에 있는 대부분의 프로그램(고보리눅스예외) 및 일부 다른 Unix 계열 시스템은 접두사로 설치됩니다 . 일반적으로 시스템 제공 소프트웨어와의 충돌을 피하고 싶기 때문에 /usr해당 접두사를 에 전달하는 경우는 거의 없습니다 ../configure

/usr부팅 프로세스 초기에 설치되지 않았을 네트워크 공유 또는 파티션에 있을 수 있습니다. 이 시점에서 액세스해야 하는 소프트웨어는 일반적 으로 에 설치 됩니다 /./usr/bin/binsh/bin/sh

패키지 관리

대부분의 패키지 관리자는 바이너리 설치를 지원합니다(예외도 있음). 일반적으로 패키지 관리자를 사용하여 GNU/Linux 시스템에 소프트웨어를 설치할 때 바이너리 패키지를 설치하게 됩니다. 이 경우 패키지 관리자 자체는 아무것도 컴파일하지 않습니다. 그러나 설치에는 여전히 파일 시스템의 위치에 파일을 복사하거나 추출하는 작업이 포함됩니다.

이것이 바로 패키지 관리자가 함께 제공되는 대부분의 명령을 설치한다는 의미입니다. 패키지 관리자가 반드시 실행된다는 뜻 은 /usr아닙니다 ../configure --prefix=/usr./configure

운영 체제마다 패키지 관리자가 다릅니다. , 및 dpkgapt-get의 유틸리티를 사용하도록 설계된 Debian 또는 Ubuntu와 같은 배포판을 사용하는 경우aptitude~해야 한다아니요대개, 및 를 사용하여 소프트웨어를 rpm설치해 보십시오 .yumdnf

그러나 다양한 패키지 관리자의 핵심 원칙은 동일합니다. 패키지 관리자가 명령을 설치하면 일반적으로 $PATH사용자의 환경 변수에 있을 것으로 예상되는 디렉터리로 이동합니다. GNU/Linux 시스템에서는 일반적으로 패키지 관리자가 관리합니다.모두시스템 - 달리 설치한 모든 항목에 추가하여 접두어가 있는 대부분의 소프트웨어를 설치하므로 /usr대부분의 실행 가능한 명령 이 /usr/bin.make installsudo make install

답변2

설치하려는 프로그램이 모범 사례를 따르는 경우 다음을 사용하여 설치할 수 있습니다.

./configure
make
make install

./configure시스템이 모든 요구 사항을 충족하는지 확인하고 설치 옵션을 구성합니다. make모든 것을 컴파일하고 make install필요한 모든 파일을 올바른 위치에 복사하십시오. 모든 라이브러리, 매뉴얼 페이지 등을 올바른 위치에 가져오는 것은 꽤 지루할 수 있으므로 이 마지막 단계를 수동으로 수행하고 싶지는 않습니다.

패키지가 설치되는 위치를 정의할 수도 있습니다. 예를 들어, 홈 디렉터리에 패키지를 설치하려는 경우(예를 들어 관리자 권한이 없기 때문에) 다음을 사용할 수 있습니다.

./configure --prefix="$HOME"/somefolder

make install그런 다음 해당 폴더에 설치하십시오. 하지만 일반적으로 이것이 필요하지는 않습니다.

관련 정보