사용자 응용 프로그램을 설치할 때 "모범 사례"는 어디에 있습니까?


210

때때로 apt또는 다른 패키지 관리자를 사용하지 않고 수동으로 응용 프로그램을 설치합니다 .

무엇 (위치 /usr/, /usr/local/, /opt/, /home/, 등) 사용자 응용 프로그램의 설치를위한 "모범 사례"에 의해 제안?


소스에서 물건을 자주 설치하기를 좋아하면서 쉘 시작 파일을 자체적으로 변경하고 공유 라이브러리에 의존하는 프로그램에 대해 라이브러리 접두사를 수정 하는 작은 도구를 작성 했습니다. ). 풍부한 기능은 아니지만 99 %의 시간 동안 작동합니다.
new123456

관련 게시물 : askubuntu.com/q/138547/62483
Lucio

1
의 구분에 큰 토론 /opt/usr/local: unix.stackexchange.com/q/11544/11917
blong

답변:


184

정말 다릅니다. 응용 프로그램에 makefile이 있거나 예를 들어 distutils (예 : setup.py파일이 있음) 또는 유사한 빌드 / 설치 시스템을 사용하는 경우 python 앱의 경우 이를 설치해야합니다 /usr/local/. 이것은 종종 기본 동작입니다.

내가 이해 한 /usr/local/것과 비슷한 계층이 /usr/있습니다. 그러나, 같은 디렉토리 /usr/bin//usr/lib/패키지를 통해 설치를 위해 일반적으로 예약되어 있습니다 apt. 따라서 "설치"될 것으로 예상되는 프로그램 /usr/은에서 제대로 작동해야합니다 /usr/local/.

tarball을 추출하고 직접 실행해야하는 경우 (예 : Firefox)에 넣습니다 /opt/. 하나의 디렉토리 만 필요하고 해당 디렉토리와 관련된 모든 파일 / 라이브러리를 얻는 프로그램은에서 하나의 디렉토리를 얻을 수 있습니다 /opt/.


24
많은 사람들이 잊어 버린 것 같습니다 opt/. 제 생각에는 머리에 못을 박았습니다.
Marco Ceppi

3
/ usr / bin에서 심볼릭 링크를 만들거나 ~ / .bashrc의 PATH에 추가하십시오
Alex

1
무엇에 대해 ~/.local/share? @Marco
Ultimatex

1
당신은 ~(홈 디렉토리) 내부에 물건을 설치할 수 있지만, 한 명의 사용자 만 응용 프로그램에 액세스 할 수 있습니다. 시스템의 다른 사용자는 해당 소프트웨어의 자체 설치를 설치하고 유지 보수해야합니다. 응용 프로그램 설치에 대한 모범 사례와 같이 홈 디렉토리를 설치하면 시스템 패키지를 방해하지 않기 때문에 강력한 지침이 없다고 생각합니다.
Umang

1
/ home / ubuntu / myapp 아래에 'tar에서 압축이 풀린'앱을 설치하는 것이 잘못 되었습니까? / opt / myapp와 비교하여 어떤 차이점이 있습니까?
JARC

116

사용자를/usr 위한 것이 아니라 유닉스 시스템 리소스 를 의미한다는 것을 기억하는 것이 좋습니다 .

따라서, 모든 배포판에 모든 배포본에 대한 권리가 /usr,있으며 /usr/local, 시스템에 대한 특정 추가 사항이 들어가서 업그레이드하기 전에 보존한다는 것을 알고 있습니다.

한편, 응용 프로그램과 다른 것들이 들어갑니다 /opt.

/home나는 그 규칙을 거의 따르지 않지만 어떤 사람들은 물건을 넣는 것을 편안하게 느낍니다 .

즉, 배포 패키지 관리자가 먼저 작업을 수행 한 다음 물건을 굴릴 때 위의 작업을 수행하도록했습니다.


35
'유닉스 시스템 리소스'는 '/ home'이 추가 된 후에 이름이 변경되었다는 것을 기억할 가치가 있습니다. 옛날, 옛날, 옛날 (Unix Version 6 et.al.)에는 "user"디렉토리가 / usr에 저장되어 있기 때문에 / usr / jimmy, / usr / siobhan, / usr / ahmed 등과 같은 디렉토리를 볼 수 있습니다. .
마크 레이튼 피셔

5
좋아, 물어볼 게 : opt는 무엇을 뜻 하는가?
세스

3
@Seth 나는 그것이 '선택적'이라고 생각합니다-원래 기본 설치의 일부가 아닌 소프트웨어를위한 것입니다.
칼 H

5
/ usr은 User입니다. 리눅스 사용자는 개발자 였기 때문입니다. 처음에는 개발자와 사용자를 구별하기 시작하여 /home디렉토리가 도입되었습니다. 그리고 누군가가 그것이 의미한다는 말을 가지고 있었는데 Unix System Resources이는 실제로 이해가되지 않습니다. 왜냐하면 우리는 Unix system Resourcesin/dev
Info-Screen

2
맞습니다. / usr은 백론입니다. 1969 년에 유닉스가 PDP-7에서 돌아
가던

34

/ home / user / opt /에 firefox devel과 같은 불안정한 프로그램을 설치하면 제거하기가 훨씬 쉽고 다른 사용자가 사용해야하는 버전에 대해 혼동하지 않아도됩니다. 홈 디렉토리의 하위 폴더에 있습니다.

/ usr /에 프로그램을 설치하지 마십시오. 혼돈을 일으킬 수 있습니다. / usr /에 설치된 것은 배포 패키지에만 사용됩니다. / usr / local /은 로컬로 컴파일 된 패키지를위한 것입니다. 그리고 Srtucture는 정확히 같은 방식으로 작동합니다! / usr / local /의 파일은 / usr /의 파일보다 우선합니다

사전 컴파일 된 (이진) 패키지 (Thunderbird, Eclipse, Netbeans, IBM NetSphere 등)의 설치에는 / opt /를 사용해야합니다. 그러나 단일 사용자 전용 인 경우 홈 디렉토리에 저장해야합니다.

전체 경로를 입력하지 않고 "이상한"위치 (예 : / home / user / opt / firefox /)에 설치된 프로그램을 실행하려면 $ PATH 변수에 추가해야합니다. /home/user/.profile에 이와 같은 줄 추가

export PATH=/home/user/opt/firefox:$PATH

실행해야하는 실행 파일이있는 폴더 이름이어야합니다.


26

Linux 파일 시스템 계층 표준은를 나타냅니다 /usr/local.

에서 http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

'/ usr / local'의 기본 아이디어는 '/ usr'이외의 모든 시스템에 별도의 ( 'local') '/ usr'디렉토리를 갖는 것이 었습니다.이 디렉토리는 다른 곳에서 읽기 전용으로 마운트 될 수 있습니다. '/ usr'의 구조를 복사합니다. 요즘 '/ usr / local'은 자체 컴파일 또는 타사 프로그램을 유지하기에 좋은 장소로 널리 알려져 있습니다. / usr / local 계층은 소프트웨어를 로컬로 설치할 때 시스템 관리자가 사용합니다. 시스템 소프트웨어가 업데이트 될 때 덮어 쓰기되지 않도록 안전해야합니다. 호스트 그룹간에 공유 가능하지만 / usr에는없는 프로그램 및 데이터에 사용될 수 있습니다. 로컬로 설치된 소프트웨어는 / usr에서 소프트웨어를 교체하거나 업그레이드하기 위해 설치되지 않는 한 / usr이 아닌 / usr / local 내에 있어야합니다.


1
opt 페이지의 정보와 함께이 / usr / local 항목과 모순되는 것 같습니다 : tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html ""이 디렉토리는 모든 소프트웨어 및 애드온 패키지 용으로 예약되어 있습니다. 기본 설치의 일부가 아닙니다. 예를 들어 StarSuite, Kylix, Netscape Communicator 및 WordPerfect 패키지는 일반적으로 여기에 있습니다. FSSTND를 준수하려면 모든 타사 응용 프로그램을이 디렉토리에 설치해야합니다. "..."(Windows가 자체 디렉토리 트리에 새 소프트웨어를 설치하는 방식과 유사 함) ")"
포드

6

나는 보통 집에 "Programs"라는 이름의 폴더를 가지고 있는데, 그 프로그램을 설치하는 곳은 이상하다.

컴퓨터를 다시 설치하거나 변경할 때 집의 다른 곳으로 옮겨 질 때 큰 이점이 있습니다. 분명한 단점이 있습니다. 해당 앱은 내 사용자 만 사용할 수 있습니다.


홈 폴더의 데이터를 잃지 않고 Ubuntu 16.04를 어떻게 다시 설치할 수 있습니까? formate /디렉토리로만 시도한 다음 동일한 이전 사용자 이름과 비밀번호를 입력했지만 Ubuntu가 다른 홈 폴더를 생성한다는 것을 알았습니다.
Ibrahim Disouki

1

패키지 관리자를 사용하여 제거 할 수 있도록 "checkinstall"을 사용하여 외계인 패키지를 deb로 변환하십시오.

구성 파일은 종종 구성 파일로 처리되지 않으며 (아마도 무시되거나 앱의 일부로 취급 될 수 있음) 설치 전후 스크립트는 종종 뭉개지지만, 일반적으로 deb는 설치 전후 스크립트가 잘못 될 것입니다.

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