프로그램 설치 방법을 어떻게 이해 해야할까요?

질문이 너무 광범위해서 선뜻 질문하기가 두렵기도하고

제대로 질문의 방향을 제시 할 수 있을지는 의문이지만 나름 질문들을 정리해보겠습니다…

  1. 우선 리눅스를 처음 접할때 가장 의아한

ⓐ 추가/제거 - 시냅틱

분명 전자가 사용하기에는 간편하고 직관적이지만 후자인 시냅틱을 통해서만 설치 할 수있는 파일들이 있더군요.
그렇다면 시냅틱의 그 많은 프로그램들 중 필요한 프로그램을 어떻게 구분하여 사용하시는지 궁금합니다?
(프로그램에서 요구하는 의존 파일들을 필요에 따라 설치…?!)

  1. 개념이 안잡혀 이게 인스톨인지 뭔지도 모르는경우

ⓐ run파일의 설치(?!)

ⓑ ./configure → make install (??)

ⓒ ./install -sh

ⓓ *.deb 패키지 형식의 설치

등등…

ⓓ의 패키지 형식의 설치 방식은 원터치형식이라 어려움이 없지만 나머지들은 안습…

[color=#0000BF:17rsu8k8]그 밖에 다른 경우의 설치 방식이 있는지도 궁금합니다…[/color:17rsu8k8]

리눅스 배포본에서 가장 중요한 특징은 패키지 관리자입니다.
예를 들어 A라는 프로그램을 설치한다고 할 때, A는 여러개의 파일들을 가지고 있을 겁니다.
그러한 파일들을 묶어 놓은 것이 패키지입니다.(젠투 ebuild는 구성이 다르지만 역할은 같습니다.)
그리고 패키지 파일에는 여러가지 추가 정보가 들어가 있습니다.
예를들어 A는 B, C패키지가 있어야만 실행이 가능하다 등등이죠.(의존성이라고 합니다.)
데비안 계열은 deb, 레드햇 계열은 rpm, 젠투 계열은 ebuild 등등 서로의 특징은 있지만 의존성 해결에서 설치 된 파일의 관리까지 해줍니다.

ⓐ run파일의 설치(?!)
ⓑ ./configure → make install (??)
ⓒ ./install -sh
위의 방법은 패키지 관리자를 통한 설치가 아니라 직접 컴파일이나 실행파일을 통한 설치입니다.
MS윈도우로 생각해보면 그냥 copy 한 것입니다.
나중에 어떤 파일이 어디로 흩어 졌는지 확인도 힘들 뿐더러, 의존성이 꼬이면 대책이 없어질 수도 있습니다.

ⓐ 추가/제거 - 시냅틱
추가/제거는 canonical 추천 프로그램으로 알고 있습니다. 내부적으로 deb 이니 시냅틱하고 차이없습니다.

우분투 외에 다른 배포판을 써보신지 잘 모르겠습니다만, 일단 우분투만 써봤다는 가정하에 말씀드리자면…
예전… 아주 오~래전에는 '일반적’으로 설치를… [code:18we3yzn]./configure --prefix=/usr
make
make install
[/code:18we3yzn]이렇게 설치를 했었습니다.
그런데 문제는 컴파일을 하고자 했을 경우 의존성 문제로 인해 컴파일이 상당히 번거로워지고,
프로그램을 하나 설치하려고 하면 굉장한 내공이 있어야 가능했습니다.
한 예로는 viewtopic.php?p=20354#p20354 이글을 보시면,
쉽게 하는 예이지만, 좀 번거롭다는 생각이 드실겁니다.
이런 부분을 해결하고자 패키지 방법을 리눅스에서 채택합니다.
우분투 같은 경우 데비안 계열이라 deb 라는 패키지를 사용하고,
페도라 같은 경우 rpm 패키지를 사용합니다.
패키지 방식의 경우, 컴파일이 다 되어 있고,
패키지 안에 설치될 프로그램 외에 프로그램에 대한 정보들(의존성, 함께 사용하면 좋은 패키지 등)이
있기 때문에, 이전에 개인이 컴파일을 하고 의존성 문제를 해결하는 방식에서
누군가 해놓은 걸 가져다 쉽게 설치하고 사용할 수 있게 하는게 패키지 입니다.
가령 앞 링크에서 누가 helloworld 라는 패키지를 만들어 놓았다면,
간단히 시냅틱에서 helloworld 라는 패키지를 검색해서 찾아, 쉽게 설치할 수 있을 겁니다.
이전에는 rpm과 deb의 설치에는 상당한 차이가 있었지만,
이제는 각 패키지 내부는 다르지만, 사용자 입장에서는 거의 비슷하게 설치가 가능해졌습니다.
즉, 패키지라는 것이 말 그래도, 설치를 쉽게 할 수 있는 꾸러미라고 보시면 됩니다.

  1. 추가-제거
    이녀석은 오랜 기간 동안 투표를 통해 사람들이 많이 사용하는 패키지를 임의대로 모아놓은 것입니다.
    (아직도 투표를 하는 제도가 있습니다. 여전히 투표는 진행중…)
    우분투에 국한시키자면,
    우분투 사용자들이 투표를 통해 소위 인기가 있거나 많이 사용하는 패키지 모음이라
    모든 패키지와 연결되지는 않습니다.

  2. 시냅틱
    그동안 데비안(우분투)의 경우 콘솔이나 터미널을 이용해서,[code:18we3yzn]sudo apt-get install 패키지[/code:18we3yzn]이렇게 설치를 했습니다.
    이렇게 하면 우분투나 기타 어떤 곳에 존재하는 넷에 접근해서 그 패키지를 자동으로 다운받아 설치합니다.
    이게 가장 오래 사용된 방식인데, GUI환경(윈도우 환경이라고 적당히 이해하시면 될듯)이 널리 사용되면서,
    키보드로 명령어를 입력하고 다운받고 설치하고 하는 방식이 아니라,
    간단히 마우스 클릭으로 설치가 가능하게 만든 것이 시냅틱이라고 보시면 됩니다.

  3. 차이
    한마디로 '추가-제거’는 인기있거나 가장 많이 사용하는 패키지를 정리한 것이고,
    '시냅틱’은 인기가 있던 없던 사용자가 지정한 저장소에 있는 모든 패키지를 모아놓은 겁니다.
    사실 전 개인적으로 '추가-제거’는 별로 사용하지 않습니다.
    아직 우리나라는 그 투표에 많이 참여하지 않아, 한글화 되지 않은 프로그램이 많더라구요. ㅠㅠ

  4. run…
    run 이나 install-sh 앞서 이야기한 설치 방식의 차이라고 할 수 있습니다.
    일반적으로 run 같은 경우 바이너리 파일,
    즉, 압축된 형태를 스스로 풀어서 프로그램을 설치하는 방식이고,
    install-sh 같은 경우 뒤에 붙은 sh에서 볼 수 있듯이
    스크립트를 통해 설치하게끔 해 놓은 방식입니다.

  5. 각 설치방법별로 장단점이 있겠지만, 우분투(데비안 계열)에서는 시냅틱이나
    콘솔에서 사용하는 deb 패키지 관리자를 사용하는게 가장 무난합니다.
    우분투 사용자들 중 많은 수(대부분?)는 이 deb 패키지 관리 방식 때문에
    우분투를 사용하는 경우도 있습니다.

그냥 한 번 주절주절해봤습니다. :twisted:

앞서 여러 분들이 자세히 설명해 주셨으니 좀 간단하게 설명을 하자면…

  1. 우선 make install을 해야 되는 아이들은 소스코드입니다. 그 자체로는 사람이 읽을 수 있는 텍스트 파일일 뿐입니다. 이걸 컴파일이라는 과정을 통해 기계가 실행 가능한 형태로 만들어 주는 거지요. 재료와 만드는 방법만 적혀 있는 DIY키트같은 설치방법인겁니다.

  2. sh로 되어 있는 것은 윈도우즈 쪽의 배치 파일 (BAT)을 생각하시면 됩니다. 도스 시절부터 컴퓨터 하신 분이라면 많이 보셨을 겁니다만 프로그램을 깔기 위한 여러가지 동작들이 자동화 되어 있는 명령어 파일이죠 (무슨 파일을 어디 복사하고, 무슨 폴더를 만들고… 등등). 이 역시 마찬가지 역할을 합니다.

  3. 일반적으로 윈도우즈에서 "프로그램을 깐다" 라고 하는 형식과 가장 근접한 것은 run으로 되어 있는 형식의 인스톨 방식일겁니다. 이건 그냥 말 그대로 당장 눈 앞에 있는 녀석만 컴퓨터에 설치시킵니다. 여기까지는 까는 사람이 자기가 뭘 깔고 자기가 까는 것이 뭘 더 필요로 하는지 알고 있어야 합니다. 안 그러면 애써 깐 프로그램이 작동을 못하기 일쑤지요.

  4. 이게 한단계 발전한 것이 deb로 되어 있는 형식의 설치입니다. 이건 프로그램 자신 이외에 여러가지 메타 정보를 가지고 있어서 신규 버전을 자동으로 체크한다거나 그 프로그램이 깔리는데 필요한 다른 패키지들을 한번에 설치하는 것 등을 가능하게 해 줍니다.

  5. 시넵틱은 이 deb 파일들을 한데 모아놓은 저장소를 이용해서 deb파일의 설치를 한군데서 하기 편하게 만들어 놓은 겁니다. 저장소의 패키지들을 검색하고 다운받아 설치해 주는거죠. 필요한 패키지들은 대부분 한 저장소에 모여 있으니 의존성이 걸렸을 경우, 번거롭지게 그 자리에서 자동으로 함께 설치하거나 하는 것도 가능하지요…

  6. 마지막으로 프로그램 삭제/추가는 시넵틱에서 제공하는 패키지들을 사람들이 많이 쓰는 단위로 모아 놓은 겁니다. 즉, 더 큰 집합이죠. 그렇기 때문에 시넵틱에서는 목록의 한 항목이 한개의 패키지에 해당하지만 삭제/추가의 한 항목은 여러개의 프로그램의 조합일 수도 있습니다.

그리고 지금까지 언급되지 않은 약간 예외적인 인스톨 방법이라면… Envy를 통한 드라이버 인스톨이 생각나네요. 기본적으로 이 작업은 1의 컴파일 형태입니다만 엔비는 소스 다운로드>컴파일>파일 복사 등의 작업을 모두 자동화해 주죠.