직접 컴파일 한 소프트웨어를 어디에 두어야합니까?


답변:


89

최소한 데비안 풍미 시스템에서는 경험 법칙 :

  • /usr/local물건 "시스템 전체"- 즉 인 /usr/local배포판의 기본으로되는 경향이 $PATH하고있는 표준 UNIX 디렉토리 계층 구조 다음 /usr/local/bin, /usr/local/lib

  • /opt앱별 접두사 (예 : /opt/firefox-3.6.8, /opt/mono-2.6.7등) 를 사용하여 시스템 전체를 신뢰할 수없는 것들을 위해 . 여기에있는 내용은보다 신중한 관리가 필요하지만 시스템을 손상시킬 가능성이 적습니다. 폴더를 삭제하면 사라지기 때문에 제거하기가 더 쉽습니다.


흥미롭게도 많은 프로그램 / 애플리케이션은 설치하는 /opt경우 자동으로 설치하도록 제안합니다 sudo.
HongboZhu

50

실제로 방해하지 않으려면에 아무 곳에 나 두지 마십시오 $PATH.

당신이 그것을 원하는 경우 $PATH, 적어도에 설치하지 않도록해야합니다 /usr/local. 배포판에 의해 설치되어 있어도 많은 소프트웨어가 보입니다 /usr.

사용자 정의 컴파일 소프트웨어를 설치하는 가장 좋아하는 방법은 내 $HOME디렉토리에 있습니다. 그렇게하면 sudo아무것도 사용할 필요가 없으며 , 시스템의 나머지 부분과 아주 잘 분리되어 있습니다. 예를 들면 다음과 같습니다.

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

원하는 경우에 추가 /home/username/stage/bin할 수 있습니다 $PATH.


1
확실히, 홈 디렉토리를 사용하는 것이 가장 좋은 방법입니다. IMO.
bitek

1
+1 동의 함. bash / ruby ​​/ python 스크립트의 경우 ~ / sbin을 좋아하고 ~ / bin의 별칭을 사용하여 컴파일 된 설치의 경우 ~ / opt / ...를 사용합니다.
Kris

4
일이 더 간단 해지면서 홈 디렉토리를 사용하기 위해 +1; $ PATH를 피하기위한 제안 -1-실제로 표준 (예 :)에 따라 "로컬 설치를 위해 예약 된"디렉토리가 /usr/local있습니다.
Riccardo Murri

1
/ usr / local을 피하기위한 제 제안은 패키지 소프트웨어를 방해하지 않으려는 원래의 포스터 (약간의 모호한) 욕구에 근거한 것입니다. / usr / local 또는 $ PATH를 살펴보면 "도움이되는"패키지 소프트웨어가 많이 있기 때문에 방해가되는 것으로 생각했습니다. 그러나 그것은 실제로 개인의 필요와 목표에 달려 있습니다. / usr / local은 많은 상황에서 완벽한 선택이 될 수 있습니다.
Sandy

코멘트 # 2에서 문자 "s"를 완전히 오해 한 사람은 아무도 없었다. 삭제해야합니다
21 분 18 초에 영향

20

FHS는 배포판이 손대지 않아야하는 / usr / local에 넣었다고 말합니다 . 소스 및 라이브러리 /usr/local/bin의 바이너리 /usr/local/src에 사용 /usr/local/lib됩니다. 자세한 내용은 FHS 사양 을 참조하십시오


구성은 어떻습니까? 패키지 관리자를 사용하지 않고 MySQL을 설치했다고 가정해도 여전히 /etc/mysql구성에 사용해야 합니까?
Hubro

방금 /usr/local/etc기본적으로 폴더 가 있다는 것을 알았습니다 . 나는 그것을 사용해야한다고 생각합니다 ... :-)
Hubro

10

대부분의 경우, 나 자신의 컴파일 된 항목을에 배치하고 싶습니다 /opt. 그것은 일종의 의사 표준 장소입니다. 당신은 또한 고려할 수 /usr/local있지만, 나는 내 물건을 100 % 격리 된 상태로 유지하는 것을 선호합니다.


1
배포판의는 / 옵션 (일반적으로 독점적 인 패키지)에 꽤 몇 가지 넣어하는 경향이 / 옵션이 배포판은 만지지 수 있다고하지 않습니다. 그러나 그것은 / usr / local
xenoterracide

1
나는 배포판에 물건을 넣는 것을 본 적이 없지만, 배포판에서 나오는 쓰레기로 가득 찬 /opt곳을 여러 번 보았습니다./usr/local
Scott Anderson

distro 's는 Java를 / opt에 넣는 것을 좋아합니다. 거기에서도 Acrobat Reader를 보았습니다. 그들이 / usr / local에 물건을 넣는다면, FHS를 무시하고 시스템 업데이트에서 덮어 쓰기로부터 안전해야한다고 말합니다.
xenoterracide

그들 각자에게, 나는 추측한다. FHS는 훌륭하지만 때때로 무시되는 것 같습니다.
Scott Anderson

내가 지금까지 배포 패키지를 보았던 유일한 /usr/local것은 표준 트리의 디렉토리 계층과 비슷한 디렉토리 계층과 TeX와 같은 것들에 대한 색인 파일 일뿐입니다.
Phil Miller

9

에 넣으십시오 /usr/local/src.

내가하는 일은이 디렉토리에서 소스를 추출하는 것입니다. 그것은 같은 경로를 만들 것입니다

/usr/local/src/postgresql-8.3.7

그런 다음 심볼릭 링크를 만듭니다.

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

의 모든 건물을 수행하십시오 /usr/local/src/postgresql.

이 방법으로 작업하면 버전과 문서간에 팝업을 사용해야 할 때 도움이됩니다.


1
이유를 설명하고 버전 관리를 포함하여 OP가이를 적용하는 방법에 대해 +1하십시오.
samt

6

이것은 checkinstall을 더 자주 사용해야한다는 것을 상기시킵니다 . 그런 식으로 평소처럼

 ./configure
 make

뒤에

 sudo checkinstall

.deb 파일 을 만들려면 ...


2
질문에 대답하지 않습니다.
JBentley

5

가능하다면-소프트웨어를 컴파일하고 FC 패키지를 만드는 것이 좋습니다 (yum을 사용하여 소프트웨어 패키지를 설치하고 있다고 생각합니다). 그런 다음 자신의 컴파일 된 소프트웨어 패키지를 설치하고 전체 시스템을 손상시키지 않고 제거 할 수 있습니다.


5

직접 구축 한 여러 응용 프로그램을 쉽게 설치하고 제거하려면 Stow 를 간단한 패키지 관리자로 사용할 수 있습니다 .


5

FHS , /usr/local/동안, 소스에서 컴파일 된 응용 프로그램에 사용되는 /opt/운영 체제 공급 업체에서 지원하지 않는 제 3 자 응용 프로그램에 사용됩니다.


4

내가 추천하는 두 가지 :

시스템 전체 : stow 를 사용하고 / usr / local / stow / package-version 아래에 설치하십시오. 그러면 버전 간을 쉽게 전환 할 수 있습니다.

집에서 또는 / usr / local 쓰기 권한이없는 경우 ~ / .local 아래에 프로그램을 개인적으로 설치합니다. 이는 XDG 표준에 의해 암시됩니다 .

내가 한 적이 없지만 로컬에서 스토우를 사용할 수도 있습니다. :)


3

많은 개발 작업을 수행하기 때문에 대부분의 사람들과 설정이 약간 다릅니다. 물건을 설치하는 / home / jackson / bin / 디렉토리가 있고 이것을 추가하여 .bashrc를 편집했습니다.

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

나는 모든 것을 위해 이것을하지는 않지만 개발 중에는 훌륭합니다.


3

소스 tarball에서 deb 또는 rpm을 만드는 것은 실제로 어렵지 않습니다. 이렇게하면 배포판 패키지 관리자의 기능을 사용하여 시스템을 깨끗하게 유지할 수 있습니다. 이것이 제가하는 일의 대부분입니다 : 약간의 rpm을 만드십시오.


2

응용 프로그램을 컴파일하는 경우 PATH env 변수에 실행 파일 경로를 추가 할 수 있습니다. 다른 사용자에게는 영향을 미치지 않습니다.


왜 다운 투표가 궁금해? "밸런스 오프"의 종류에 +1
phunehehe

나는 또한 왜 :-) 궁금합니다. 설치 권한이없는 cscope 사용에 대해 동일한 솔루션을 사용했습니다.
Hemant

@phunehehe 아마도 질문에 대답조차하지 않기 때문일 것입니다. 질문은 소프트웨어를 어디에 둘 것인지 묻습니다 . 이 답변은 어딘가에 배치 한 후 수행 할 수있는 작업에 대한 팁을 제공합니다 . 사용할 폴더에 대한 제안을 제공하여 개선 할 수 있습니다.
JBentley

2

항상 "소유하는 곳에 넣는"옵션이 있지만 먼저 간단한 rpm을 작성하십시오.


1

시스템의 모든 사용자가 응용 프로그램을 사용할 수있게하고 필요한 권한이 필요한 경우 / opt를 사용하십시오. 응용 프로그램을 자신과 루트 만 사용할 수있게하려면 / home / username을 사용하십시오.


0

이 작업을 수행하는 가장 쉬운 방법은 소스 패키지 ( .src.rpmRPMite 용)를 가져 와서 압축을 풀고 새 소스 / 구성 / 해킹을 해킹하고 버전을 적절하게 변경하고 빌드하는 것입니다. 이를 설치하면 패키지 관리자가 새 패키지를 인식하고 종속성 및 제거 / 업데이트를 고려할 수 있습니다.

이것은 처음에는 번거로운 일이지만 새로운 버전 (또는 일부 중요한 패치)이 나오면 업데이트하는 것이 더 간단합니다. 또 다른 이점은 로컬 소프트웨어로 자체 저장소를 작성하여 실험실의 기계와 공유 할 수 있다는 것입니다.


0

RPM을 작성하는 것은 어렵지 않으며 물건을 넣을 위치에 대한 지침이 있으며 제거를 간단하게 만듭니다.

이 작업을 수행하는 경우 패키징 시스템을 통해 제공되는 다른 모든 파일과 마찬가지로 /usr아래에 파일을 설치하십시오 /usr/local.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.