응용 프로그램을 / usr / local 또는 / usr / local / share에 넣어야합니까?


21

"표준"이란 무엇입니까? 응용 프로그램 (이진뿐만 아니라 전체 배포)을 / usr / local 또는 / usr / local / share에 배치해야합니다.

예를 들어 스칼라 또는 weka는 예제, 바이너리, 라이브러리 등을 포함합니다. 그래서 그것은

/usr/local/scala-2.9.1 

또는

/usr/local/share/scala-2.9.1

내가 유일한 관리자이기 때문에 큰 문제는 아니지만 내 자신의 관습이 아닌 널리 사용되는 것을 사용하는 것을 선호합니다.

중요 : 앱을 / usr / local / bin, / usr / local / lib 등으로 분할 해야하는 경우에 대해서는 묻지 않습니다. 오히려 전체 응용 프로그램에 대해 하나의 기본 디렉토리를 유지해야 할 경우를 묻습니다.


6
나는 이런 종류의 상황에서 / opt가 더 관습 적이라고 생각한다.
Faheem Mitha

@Faheem Mitha, 아주 좋은 지적입니다. 덕분에 Windows가 linuxtopia.org/ 에서 자체 디렉토리 트리 C : \ Windows \ Progam Files \ "Program Name"에 새 소프트웨어를 설치하는 방식과 유사한 "/ opt / 'provider'디렉토리 트리와 같은 설명을 찾았습니다. online_books / linux_beginner_books은 / ... 당신이 할 수 기쁘게 ? 내가 대답으로 표시 할 수 있도록, 답변으로 의견을 게시 감사합니다.
greenoldman

@greenoldman : 또한 만족 하나의 디렉토리에있는 모든 파일을 유지하는 것은 실현을 하지 유닉스 응용 프로그램을 설치하기 위해 "표준"방법입니다. /opt실제로 정답이지만, 전통적인 유닉스 / 리눅스 소프트웨어에서 "일반적으로"사용 되지않습니다 . 여러 디렉토리로 파일을 분할하고 다음과 다른 큰 이유가 /usr있습니다./usr/local
MestreLion

예를 들어, 모든 응용 프로그램의 모든 실행 파일을 단일 /usr/bin(또는 /usr/local/bin)로 유지하면 $ PATH가 Windows
마다

답변:


19

이런 종류의 상황에서는 / opt가 더 표준 적이라고 생각합니다. 파일 시스템 계층 표준의 관련 섹션 은 다음과 같습니다.

배포판은 / opt에 소프트웨어를 설치할 수 있지만 로컬 시스템 관리자의 동의없이 로컬 시스템 관리자가 설치 한 소프트웨어를 수정하거나 삭제해서는 안됩니다.

이론적 근거 애드온 소프트웨어에 / opt를 사용하는 것은 UNIX 커뮤니티에서 잘 확립 된 방법입니다. System V 인터페이스 정의 (Third Edition)를 기반으로하는 System V 응용 프로그램 이진 인터페이스 [AT & T 1990]는 여기에 정의 된 것과 매우 유사한 / opt 구조를 제공합니다.

iBCS2 (Intel Binary Compatibility Standard v. 2)도 / opt와 유사한 구조를 제공합니다.

일반적으로 시스템에서 패키지를 지원하는 데 필요한 모든 데이터는 / opt /의 예약 된 디렉토리뿐만 아니라 / etc / opt / 및 / var / opt /로 복사하려는 파일을 포함하여 / opt / 내에 있어야합니다.

배포가 설치된 소프트웨어와 로컬에 설치된 소프트웨어, 특히 일부 바이너리 소프트웨어에 고정 경로 이름이있는 경우 충돌이 발생할 수 있으므로 / opt를 사용한 배포에 대한 약간의 제한이 필요합니다.

/ opt / 아래의 디렉토리 구조는 소프트웨어의 패키지 관리자에게 맡겨져 있지만 패키지를 / opt //에 설치하고 / opt / package에 대한 지침과 유사한 구조를 따르는 것이 좋습니다. 이 구조에서 벗어나는 유효한 이유는 / opt // lib 또는 / opt // bin에 파일이 설치되어있는 지원 패키지 때문입니다.


5

/usr/local/share특정 아키텍처 / OS 버전과 관련이없는 파일 에만 사용해야 합니다.

그 후에는 기존 하위 디렉토리 사이에 파일을 배포할지 /usr/local또는 새로운 전용 디렉토리를 만들지에 달려 있습니다 /usr/local(그러나 후자는 실행 파일에 아직 존재하지 않습니다 PATH.LD_LIBRARY_PATH , 나 MANPATH).

상기 봐 가지고 FHS를


고맙습니다. 따라서 Windows의 비유라면 / usr / local / SPECIAL_APP이고 그 안에 하위 디렉토리가 있어야합니다.
greenoldman

@greenoldman : 아뇨. 창에서, 당신은 일반적으로 리눅스에서 당신이 보통 이상을 분할 단일 디렉토리에 모든 파일을 보관 : 윈도우와 리눅스가 다른 모델을 사용하기 때문에 어떤 비유는 맞지 않을 것이다 bin, share, lib, 등
MestreLion

3

/opt평범 해질 때까지 일반적인 장소는 /usr/local/lib/<package>입니다.


1
내가 읽은 것에서 / opt는 꽤 일반적이며 널리 사용되지는 않지만 저장소에서 사용할 수있는 패키지의 양을 생각하면 놀라운 것은 아닙니다.
greenoldman

0

로컬 응용 프로그램을 설치할 때 액세스 및 업데이트 방법에 따라 여러 옵션이 있습니다. 또한 일부 방법은 기존 시스템과 비슷하게 보이고 일부 방법은 더 특별합니다. "최상의"솔루션은보다 쉽게 ​​관리 할 수있는 솔루션이라고 제안합니다.

이 답변은 사용자 지정 설치를위한 패키지 수를 기준으로 분할되었습니다. 나누는 것은 내 자신의 경험을 기반으로합니다. 이러한 경험은 패키지를 관리하는 데 걸리는 시간과 무언가를 엉망으로 만들 위험이 있습니다. 나는 공통 표준에 대한 지식이 있다는 것을 의미하는 것이 아니라, 결정을 내릴 때 참조 할 기준으로 의미합니다.

패키지가 거의없는 경우 애드온 패키지를/opt 에는 방해가되지 않으므로 다른 것을 엉망으로 만들 수 있습니다. 이것이 NAS에서 사용하는 방법입니다. 그러나이 방법은 바이너리를 PATH에 보관하지 않으므로 수동으로 추가해야합니다. 설치할 패키지가 거의없는 경우에는 잘 작동하지만 패키지가 많으면 상당히 혼란스러워집니다.

단순히 디렉토리를 덮어 쓰므로 여기에서 업데이트하는 것은 매우 쉽습니다.

장점 :

  • 단순한
  • 빠른 설치
  • 시스템의 다른 부분에 영향을 미치지 않습니다
  • 제거는 설치만큼 쉽습니다

단점 :

  • 설치할 패키지 수가 많으면 다소 지루합니다.
  • PATH지저분 하게 보입니다.

몇 가지 패키지 이상 , 내가 사용하는 것이 좋습니다 것입니다 /usr/local/<your package>및 심볼릭 링크에서 실행 파일을 /usr/local/bin또는 /usr/local/sbin당신이 루트 권한을 필요로하는 경우에 따라 달라집니다. 이렇게하면 새로운 것이 추가 될 때마다 PATH를 변경하지 않아도되므로 PATH가 깨끗하게 유지됩니다. 이것은 팩맨이 아닌 모든 패키지와 AUR 패키지를 위해 Arch 랩탑에서 사용하는 방법입니다.

패키지 디렉토리를 덮어 쓰고 symlink가 여전히 유효한지 확인하고 유효하지 않은 경우 수정하여 업데이트합니다.

찬성

  • PATH지저분 하지 않습니다
  • 기본 시스템에 영향을 미치지 않습니다
  • 모든 애드온을 제거하고 깨끗한 기본 시스템으로 돌아가는 것은 여전히 ​​매우 간단합니다.

단점 :

  • 설정 작업 더
  • 하나의 패키지 만 제거하면 일부 검색이 수행됩니다.

많은 패키지 . 이것은 당신이 원하는 것이 아니기 때문에 간단히 설명하겠습니다. 나는에 분할에게 패키지를 추천 할 것입니다 bin, lib, share, 등을로 설치 /usr/local. 이것은 구조를 깨끗하게 유지하는 것입니다. 누가 더 많은 것을 쓸 수 있는지 지정할 수도 있습니다. 예를 들어 루트 이외의 사람들이 실행 파일을 수정하는 것을 원하지 않습니다.

여기서 하나 이상의 디렉토리에 기록해야하므로 업데이트가 약간 까다로워집니다. 나는 모든 것을 포장하고 패키지 관리자가 나머지를 처리하게하는 것이 좋습니다.

공유

shareFaheem의에서 언급 한 바와 같이 디렉토리 자체는 아키텍처 독립적 인 파일입니다 링크 에 가야하고 아키텍처 종속 파일 lib, lib32, lib64, 등


패키지 수에 따라 조언을 제공하는 것은 유용하지 않습니다. 패키지가 속한 그룹을 어떻게 알 수 있습니까?
Alois Mahdal

또한 "권장"이라고 말하면 추천 소스 또는 참고 자료라고 명시하십시오 (후자는 추측하고 있습니까?)
Alois Mahdal

그리고 / opt에 / usr 등으로 퍼져있을 때보 다 앱이 엉망이 될 가능성이 적다는 것을 알지 못합니다. 다른 앱을 엉망으로 만드는 것은 물건의 이름을 올바르게 지정하고 버그가없는 것에 대해 더 무섭습니다 스크립트를 설치하십시오.
Alois Mahdal

일을 엉망으로 만드는 것은 이름 지정에 관한 것입니다. 그것은 과거에 경험했던 것이므로 "추가"패키지를 다른 모든 것으로부터 멀리하는 것을 좋아합니다. 나는 여전히 그것이보기 흉하게 보이기를 원하지 않습니다.
Lauri Tšili

그리고 네, 나는 당신이 다른 곳 어디에서나 "권장 할 것"을 사용한 나의 대답에서 볼 수 있듯이 "권장"에 대해 정확합니다. 나는 이제 철자를 고쳤고 왜 무언가를 추천 할 것인지를 정리했다. 다시 말하지만 그것은 단지 내 관점이며 결정적인 대답이 아닙니다.
Lauri Tšili
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.