설치된 소프트웨어는 Linux에 어디에 저장되어 있습니까? [복제]

가능한 중복 :
일반적인 Linux 프로그램이 설치된 위치

저는 Linux를 처음 사용하고 패키지에 대해 조금 더 묻고 싶습니다.

Windows에서는 .exe파일을 다운로드하여 설치합니다. 설치할 때 해당 응용 프로그램을 저장할 경로를 정의합니다. 해당 폴더에는 응용 프로그램에 필요한 모든 파일이 있습니다.

그러나, 내가 사용하는 리눅스에서 패키지를 설치 yum또는 apt-get패키지에 설치되어 있고 해당 응용 프로그램에 필요한 파일이 어디에 저장되는 위치를 모르겠어요. 대부분의 구성이 /etc디렉토리 에 있음을 알았습니다 . 그런데 왜 리눅스가 응용 프로그램에 필요한 파일을 다른 디렉토리에 저장합니까?

누군가 패키지가 어떻게 설치되고 어디에 어떻게 저장되어 있는지 말해 줄 수 있습니까? 패키지 관리에 대한 나의 이해가 틀렸다면 저를 정정하십시오.



답변

많은 프로그램 (바이너리 / 스크립트 )은 이미 언급했듯이 다양한 구성 디렉토리 (종종 in / under )의 다른 부분으로 /bin또는 /usr/bin다른 부분으로 끝납니다 etc.

특정 명령을 위해 당신은 체크 아웃 할 수 whereis

whereis prog_name

이 명령의 위치에 대한 정보를 제공합니다. 당신은 또한 시도 할 수 있는

which prog_name

또한이 그래픽과 설명 / 예가 도움이 될 수 있습니다.


답변

Windows, 특히 이전 버전에서는 프로그램이 C:\Program Files디렉토리에 구성 파일과 일정하지 않은 데이터를 저장하는 것이 일반적이었습니다 . 이것은 프로그램이 일반적으로 단일 사용자, 네트워크가 아닌 파일 권한이없는 DOS에서 설치되고 실행되는 방식에서 파생됩니다.

보안 관점에서 이것은 나쁜 생각입니다. 실행 코드가있는 장소는 수정 가능한 데이터와 분리해야합니다. 이렇게하면 권한이없는 사용자가 설치된 바이너리를 수정하지 못하도록 적절한 파일 권한을 쉽게 적용 할 수 있습니다. 마찬가지로 주 실행 파일과 별도로 업데이트 될 수있는 라이브러리 디렉토리도 별도의 디렉토리에 있어야합니다.

Vista와 UAC 성가심의 출현으로이 전통은 마침내 견인력을 심각하게 잃기 시작했습니다.

훨씬 이전부터 다중 사용자 시스템 인 UNIX 및 Linux는 루트 이외의 사용자가 설치된 바이너리를 수정하지 못하도록해야했기 때문에 실행 디렉토리를 다른 디렉토리와 분리하는 경향이있었습니다. 또한 별도의 파티션 인 이유 /usr/sbin있습니다. 특히 보안에 민감한 관리자는 해당 파티션을 읽기 전용으로 마운트하고 설치 / 제거가 필요할 때 읽기 / 쓰기를 다시 마운트 할 수 있습니다.

패키지는 일반적으로 패키지 관리자에서 설치됩니다. aptitude(데비안 및 파생 배포판), yum(Redhat 및 파생 배포판), pacman(이 배포판을 잊어 버렸습니다 …) 및 기타 와 같은 다양한 패키지 관리자 가 있습니다.

패키지 관리자를 사용하면 정교하고 무료 인 “앱 스토어”와 같이 리포지토리를 탐색하고 소프트웨어를 다운로드, 설치, 쿼리 및 제거 할 수 있습니다. 의존성을 관리하고 현재 설치된 것을 추적하는 책임을 맡습니다.

일반적으로 패키지 관리자는 리포지토리 외부에서 수동으로 다운로드 한 패키지에 대해 동일한 작업을 허용합니다. 직접 만들거나 컴파일 한 소프트웨어에서 직접 도구를 만들려는 경우에도 도구를 사용할 수 있습니다.

패키지 자체는 실행 파일이 아니기 때문에 신뢰할 수없는 실행 파일을 실행할 필요가 없습니다. (Windows가 마지막으로 배포하여 업데이트를 주변에 오는 것은 .msu‘대신이야 .exe– 만의’ .msi… 님은 한 동안 주위에 있었다)


답변

다음 yum을 수행 하여 주어진 패키지가 설치 하는 파일 목록을 얻을 수 있습니다 .

yum install yum-utils

그런 다음 다음과 같이 실행할 수 있습니다.

repoquery --list yum-utils

(두 번째 항목의 “yum-utils”를 파일 목록을 보려는 패키지 이름으로 바꾸십시오.)

의 경우 apt-get다음을 사용할 수 있습니다.

dpkg -L package-name

답변

/usr/bin설치하는 특정 응용 프로그램이나 라이브러리에 따라 다르지만 일반적으로 아래 에 있습니다.


답변

Linux / Unix에서 대부분의 프로그램은 일반적으로 단일 디렉토리로 끝나지 않지만 다른 부분 (실행 파일, 구성 파일, 로그 파일, 문서, 기타 리소스)은 파일 시스템 (일반적으로 심볼릭 링크)을 통해 분산됩니다. 위키 백과 문서는 다른 디렉토리와 어떤 각에서 찾을 것으로 예상 할 수있다을 보여주는 일반적인 파일 시스템 계층 구조에서 더 자세히 표준 디렉토리 구조를 설명합니다.


답변

/opt디렉토리는 각 패키지는 자신의 디렉토리 트리를 가지고 윈도우 등의 설치를 위해 예약되어 있습니다. 아무도 그것을 사용하지 않습니다. 왜 그런지 잘 모르겠습니다. 패키지를 설치할 때마다 추가 /opt/PACKAGE/bin하는 $PATH것이 너무 성 가실 수 있습니다.


답변

Linux의 소프트웨어는 Windows 또는 Mac과는 조금 다른 패러다임입니다. 이러한 파일에서 실행 파일과 모든 지원 파일은 단일 폴더에 설치됩니다. Windows는 일반적으로 c:\Program Files\program name, Apple in 에 보관합니다 /Applications/program.app. 리눅스에는 더 … 공동 구조가 있습니다. 바이너리는 일반적으로 /usr/bin시스템 전체 구성에 /etc있으며 사용자 별 구성은 보통에 ~/.program있습니다. 라이브러리는에 /usr/lib있고 지원 파일 (예 : 아트 워크)은 종종에 /usr/share/program있습니다 . 어디로 가야하는지 제안 하는 표준 도 있습니다 .

프로그램은 일반적으로 패키지 관리자가 설치되어 rpmdpkg; yum그리고 aptitude/에 의해 apt-get각각 자동으로 검색되고 (종속성 관리 포함) 검색 됩니다. 더 기술적 인 수준에서 패키지는 간단한 압축 파일입니다 (rpm과 deb는 모두 믿습니다 .tar.gz). 이 아카이브는 파일이있는 루트에서 파일 시스템 조각의 미러를 포함합니다 (예 : 설치 될 파일 은 패키지 내의 적절한 폴더 아래에 /usr/bin/program있습니다) usr/bin/program.

특정 패키지에 대한 정보를 찾으려면 여기에 설명 된대로 시스템의 패키지 관리자를 사용하십시오.