Ubuntu에 프로그램을 설치할 위치와 기존 프로그램이 설치된 위치를 알려주는 방법은 무엇입니까?


10

나는 현재 Ubuntu Server를 사용하여 Ubuntu / Linux에 완전히 익숙하지 않습니다. 기본적인 것을 알아 내려고 노력했습니다.

프로그램 설치 위치를 어떻게 알 수 있습니까? 예를 들어, 사이트에서 다운로드 한 tarball을 내 사이트에 배치하여 Sphinx 검색 엔진을 설치했습니다.

/home/sphinx

예배 규칙서. tarball을 넣을 스핑크스 디렉토리를 만들었습니다. 그런 다음 다음 명령을 실행했습니다.

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

그런 다음

make
sudo make install

이제이 명령을 실행 한 디렉토리에 많은 파일이 있습니다. 이것이 내 Spynx 설치입니까 아니면 다른 곳에 설치 되었습니까?

Windows에서 설치 프로그램 (.exe 파일)을 실행하면 프로그램은 여전히 ​​C : \ Program Files 디렉토리에 설치됩니다. 모든 프로그램이 중앙 위치에 설치되거나 시스템의 어느 위치 에나 프로그램을 설치할 수있는 Linux에 비슷한 것이 적용됩니다.

질문

  1. 설치된 모든 프로그램을 한 곳에 보관하여 모범 사례 측면에서 올바른 위치를 유지하는 것이 좋습니다. 다시 말해서 리눅스가 C : \ Program Files에 해당하는 것은 무엇입니까?

  2. 그리고 어떻게 항상이 위치에 설치합니까, tarball을 설치하고이 위치에서 설치 명령을 실행하는 것입니까?

  3. sudo apt-get을 사용하여 패키지를 설치하면 어떨까요? apt-get에 항상 설치하도록 알리려면 어떻게이 위치를 가리킬 수 있습니까?

답변:


15

모든 프로그램이 중앙에 설치되어있는 리눅스에도 비슷한 기능이 있습니까?

Linux의 대략적인 Windows 설치 디렉토리

  • \Windows = /bin
  • \Windows\System32= /lib/sbin
  • \Program Files= /usr/bin/usr/lib

설치된 모든 프로그램을 한 곳에 보관하여 모범 사례 측면에서 올바른 위치를 유지하는 것이 좋습니다. 다시 말해서 리눅스가 C : \ Program Files에 해당하는 것은 무엇입니까?

이 디렉토리는 /usr, 특히 /usr/bin및 아래에있는 디렉토리 /usr/lib입니다.

그리고 어떻게 항상이 위치에 설치합니까, tarball을 설치하고이 위치에서 설치 명령을 실행하는 것입니까?

  • 번호 는 설치 명령 거의 결코 문제를 실행할 때이 곳.

  • apt-get(또는 aptitude) 를 통해 설치 한 프로그램 은 거의 항상로 끝납니다 /usr. 하지만 프로그램은 소스에서 컴파일하고 make install더 자주에 종료됩니다 /usr/local/bin, /usr/local/lib등, 데비안 / 우분투에서 사용자가 설치 한 경로이기 때문에 당신은 그와 함께 문제가있을 수 있습니다 /usr하지 /usr/local.

  • 소스에서 컴파일 할 때이 스위치를 추가하여 다음을 구성하십시오 ./configure --prefix=/usr.. 이렇게 make install하면 파일이 올바른 디렉토리에있게됩니다.

  • 또한 checkinstall소스 설치에서 컴파일 된 패키지 파일을 추적하고 deb 파일을 만들고 쉽게 제거 / 재설치 할 수 있는 프로그램을 살펴보십시오 .

sudo apt-get을 사용하여 패키지를 설치하면 어떨까요? apt-get에 항상 설치하도록 알리려면 어떻게이 위치를 가리킬 수 있습니까?

apt-get/ dpkg이것을 자동으로 처리하십시오. dpkg -L name-of-package패키지로 설치 한 모든 파일과 설치 위치를 보는 데 사용할 수 있습니다 .


자세한 답변, 하나의 질문에 감사드립니다. "아니요. 설치 명령을 실행할 때 위치는 거의 중요하지 않습니다."라고 말 했으므로 이제 프로그램을 설치 했으므로 tarball에서 추출한 / home / sphinx /에서 Sphinx 폴더를 안전하게 삭제할 수 있습니다 설치를 실행하고 명령을 내렸습니까? 이것은 현재 프로그램을 설치하기 위해 이미 실행 한 설치 프로그램과 동일합니까?
JakeRow123

1
예, tarball에서 추출한 폴더를 삭제할 수 있습니다. 이는 기본적으로 설치 프로그램이 추출 된 "temp"폴더와 같으며 이제는 쓸모가 없습니다. 좋은 질문이었습니다.이 정보를 포함하도록 답변을 편집하겠습니다.
ish

할 수는 있지만 'make uninstall'으로 문제를 제거하는 데 문제가 있습니다. 데비안 / 우분투에서는 접두사 / 또는 / usr에 소프트웨어를 설치해서는 안되며 / usr / local을 사용해야합니다. 왜 로컬 관리자를 위해 / usr / local이 생성 되었기 때문에 자체 프로그램을 설치하기 위해 JakeRow123입니다. / 및 / usr은 데비안 패키지 전용입니다. 거기에 설치하면 문제가 발생할 가능성이 큽니다. 따라서 컴파일 할 때 '--prefix = / usr / local'스위치를 configure 명령에 사용하십시오. 그런 다음 'make; sudo make install '은 프로그램을 설치합니다.
Anders

@Anders make uninstall는 표준 기능이 아니며 많은 프로그램 소스에서 찾을 수 없습니다. 또한 /usr/local우분투 경로에 있지 않은 경우 가 많으며 프로그램을 실행하거나 컴파일하려고 할 때 문제가 발생할 수 있습니다 (에 포함되어 있기 때문 /usr/local).
ish

/ usr / local과 같은 올바른 위치가 아닌 / usr과 같은 잘못된 위치에 소프트웨어를 설치해서는 안됩니다. 컴퓨터 / 사용자 환경이 올바르게 설정되지 않은 경우 PATH 오류를 수정해야합니다. / 또는 / usr 아래에 설치하면 문제가 발생합니다. 이것을 믿어주세요. 거기에 있었고 그렇게했습니다. 재미 있지 않았습니다. 조금도. 자동 구성 기능이있는 일부 프로그램은 configure 명령으로 설정 한 경우 제거됩니다. 그것을 가지고 있지 않은 다른 사람들은 도움이되지 않고 버그를보고해야합니다 ...
Anders

4

일반적으로 프로그램은 접두사 라는 하나의 최상위 디렉토리 아래 두 디렉토리에 설치됩니다 . 사용할 최상위 디렉토리는 설치 목적, 마녀 목적 및 소프트웨어 관리 대상에 따라 다릅니다.

접두사 /usr는 배포판에 포함 된 소프트웨어로 사용됩니다. 당신은해야 하지 가 있기 때문에, 거기에 다른 소프트웨어를 설치 합니다 설치 및 분포에 의해 포장 된 소프트웨어를 업그레이드 할 때 분포를 혼동. 그래서 하시기 바랍니다 거기에 자신의 컴파일 된 소프트웨어를 설치하지 마십시오. 실제로 자신이하는 일을 모른다면 좋은 생각 이 아닙니다 . 그리고 데비안 또는 우부 넛 개발자가 아니라면 보통 그렇지 않습니다. 어쨌든 나는 그렇게하지 않을 것입니다.

상용 소프트웨어의 경우 접두사 /opt가 사용됩니다. 배포 및 로컬 시스템 관리자를 방해하지 않도록 예약되어 있습니다.

시스템 관리자가 모든 사용자를 위해 설치하는 소프트웨어의 경우 접두사 /usr/local가 사용됩니다. 상용 또는 배포 설치에서 방해가되지 않으며 방해하지 않습니다. 따라서 시스템 관리자는이를 사용합니다 (루트 권한이있는 경우 시스템 관리자입니다).

당신은 자신에 대한 일반 사용자 소프트웨어 설치하는 경우에는 사용하여 접두사로 홈 디렉토리를 사용할 수 --prefix에 옵션을 configure"접두어 디렉토리와 ~/"나 $HOME/. 나는 학생이었을 때 많이 사용했습니다. :-)

일반적으로 소프트웨어는 올바른 값을 가진 configure옵션 --prefix으로 실행 한 다음 올바른 작업을 수행 합니다 make; make install.

이러한 접두사 중 하나에서는 일반적으로 표준 설치에서 이러한 디렉토리를 찾습니다.

  • bin -실행 프로그램, 바이너리.
  • sbin 일반적으로 일반 사용자가 실행해서는 안되는 시스템 바이너리.
  • man -프로그램, 라이브러리 및 구성 파일 등에 대한 매뉴얼 페이지
  • etc -소프트웨어의 기본값을 가진 구성 파일.
  • lib -컴퓨터의 아키텍처 (예 : CPU)에 의존하는 프로그램 라이브러리 및 데이터 파일
  • share -다른 아키텍처에서 다르지 않고 다른 컴퓨터간에 공유 될 수있는 데이터 파일.
  • var-프로그램 실행 중에 변경되는 데이터가있는 디렉토리. 로깅 파일 등

이러한 디렉토리의 대부분은 쓰기 방지 파일 시스템과 함께 사용하여 보안을 강화할 수 있습니다. 사용자가 작성해야하는 유일한 것은 var/디렉토리입니다. 소프트웨어가 업데이트 될 때이 디렉토리는 반드시 쓰기 권한이 있어야합니다. 이는 설치 중에 쓰기 권한으로 다시 마운트하여 수행 한 다음 설치 후에 읽기로만 다시 마운트 할 수 있습니다. 그러나 이것은 고급이며 고급 패키지 관리의 예로서 만 제공합니다.

이 바로 아래 일부 디렉토리입니다 /같은 다른 접두사 아래에 존재하지 않습니다 (루트 디렉토리), /dev, /tmp, /proc/srv(서버 데이터 디렉토리는,하지만 그들은에서 보통 /var/lib또는 /var/www당신이에 변화 구성에 필요하므로 같은 디렉토리, 서버를 실행할 때이 디렉토리를 사용하는 것이 좋습니다. /var/표준 설치를 테스트 할 때만 사용하십시오 .

  1. Linux는 MS Windows가 아닙니다. 설치할 프로그램을 배치 할 장소가 많이 있습니다. 설치 대상 및 대상에 따라 다릅니다. 내 게시물에서 읽으십시오. 주의. RedHat은 /usr데비안 / 우분투에서 사용합니다 /usr/local. 배포판을 배우십시오.
  2. 프로그램마다 설치 방법이 다릅니다. --prefix를 사용하는 프로그램에 유용합니다 configure. 아는 가장 좋은 방법은 아마도 README.txttar 아카이브에서 제공되는 파일이나 그와 비슷한 것을 읽는 것입니다. tar 아카이브는 홈 디렉토리와 같은 어느 위치에서나 추출 할 수 있습니다. 설치 단계가 완료된 후 스토리지가 부족한 경우 추출 된 tar 아카이브를 제거 할 수 있습니다. 그러나 설치를 올바르게 테스트하지 않았다면 초기에 그렇게하지 마십시오.
  3. 배포를위한 적절한 위치에 설치 apt-get되거나 aptitude항상 설치되는 프로그램 . 그 장소는 바꿀 수 없습니다.

2

일반 설치를 사용하여 저장소에서 프로그램을 설치하면 올바른 위치에 설치되고 올바른 위치에 구성 파일 (Windows 레지스트리와 유사)을 작성하고 메뉴 항목이 자동으로 작성됩니다.

파일을 다운로드 할 때 (권장하지 않지만 앱이 리포지토리에 없을 때 종종 필요함) Windows에서 압축 해제와 동일한 tar를 실행해야했습니다. 가장 많이 본 파일이 만들어집니다.

그런 다음 make install을 실행하면 일반적으로 결과가 올바른 위치에 배치되고 메뉴가 만들어 지지만 untarred 파일은 지워지지 않습니다. 당신은 아마 그렇게 할 수 있지만, 만일을 위해 임시로 저장하고 싶을 수도 있습니다.

다음은 데비안 디렉토리 구조 에 관한 흥미로운 기사입니다 .


시스템에 의해 설치된 소프트웨어 및 Ubuntu와 같은 배포판과 충돌하지 않도록 자체 소프트웨어를 설치하는 / usr / local에 대한 언급이 없다는 것을 제외하고는 좋은 기사입니다. / 또는 / usr 아래에 자신의 소프트웨어를 설치하려면 문제를 묻는 것입니다. 아마도 해결 방법은 시스템을 처음부터 다시 설치하는 것입니다.
Anders
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.