백괴대학:본관/리눅스 강의/5

백괴사전, 내용 없는 백과사전
이동: 둘러보기, 찾기
CEMENT98: 안녕하세요. 3강의 과제를 아무도 제출하지 않아 4강이 열리지 않은 상태에서 영 찜찜하지만 5강을 씁니다. 제발 과제 좀 내세요.
두번째구멍:ㅈㅅ
CEMENT98: 알면 과제 좀 내세요. 그리고 이번 강의는 어렵지 않습니다.

차례

[편집] 패키지의 개념

[편집] 패키지란?

: 탁웛한 구글 번역에 의하면 패키지는 꾸러미라네요. 맞나요?
CEMENT98: 네, 맞습니다. 패키지는 꾸러미입니다. 어떤 꾸러미냐면, 소프트웨어를 설치하고 삭제할 수 있는 꾸러미지요.
CEMENT98: 즉 설치 프로그램이라고 간단하게 생각하시면 됩니다.
CEMENT98: 재미있는 것은, 폰트나 헤더 파일 등의 간단한 것도 일종의 패키지가 될 수 있다는 것이지요.
두번째구멍: 그딴 쓸데없는 짓을...;; ttf 실행하면 설치 버튼이 있는데... -_-
CEMENT98: cat /dev/bottles보다는 낫잖아요. -_-
CEMENT98: 패키지는 바이너리 패키지와 소스 패키지로 나뉩니다.
CEMENT98: 바이너리 패키지는 말 그대로 설치만 하면 되는 것이며, 소스 패키지는 프로그램 소스가 들어 있는 패키지입니다.
CEMENT98: 소스 패키지가 바이너리 패키지보다 더 무거워요. 하지만 앞으로 다룰 저장소를 포함하여 대부분은 바이너리 패키지를 다룹니다.
CEMENT98: 왜냐하면 실제 설치에는 바이너리 패키지가 쓰이기 때문이지요. :)

[편집] 저장소

CEMENT98: 윈도에서 프로그램을 설치하려고 하면 어떻게 해야 할까요?
: 다운로드받아서 설치해야해요... 구글링?
CEMENT98: 그렇죠. 만약 그 일반 응용 프로그램들을 업데이트하려고 한다면 어떻게 하나요?
두번째구멍: 새 버전을 새로 받아서 재설치하지 않나요?
CEMENT98: 그리고 언제 나오는지도 모르죠. 그렇기 때문에 편의성 측면에서 리눅스의 패키징 기능은 매우 강력합니다.
CEMENT98: 윈도의 경우 중요한 프로그램들은 윈도 업데이트를 하지만 말이죠... 리눅스는 패키지가 저장소에 모여있습니다.
혹자: 저장소요?
CEMENT98: 네. 저장소는 일종의 창고죠. 모든 프로그램이 이 저장소에 있지는 않지만, 정식으로 올라온 것만 있기 때문에 한편으로는 믿을만한 것들만 있답니다.
: 그러면 몇 개 없는 것 아니예요? 에이.
CEMENT98: 아뇨. 우분투나 페도라같이 많이들 쓰는 배포판이라면 웬만한 툴은 다 올라와있다고 보시면 됩니다, 고갱님.
: 오호;;;
CEMENT98: 하지만 mp3 codec과 같은 독점 라이선스 소프트웨어같은 경우에는 다른 저장소를 쓰기도 하는데, 이것은 알아서 받아주셔야 합니다. rpmfusion이 대표적인 예죠.
: 우분투는 안 해도 됨 ㅇㅇ 우분투 만세
CEMENT98: 껒여 페돌쨔응이 진리라능

[편집] 의존성과 트랜젝션

CEMENT98: 하지만 리눅스 패키지는... 윈도와 달리 혼자서는 못 돌아갑니다.
: 거 안 좋네.
CEMENT98: 이는 해당 프로그램 실행 시 다른 프로그램을 호출한다는 의미이기도 합니다.
두번째구멍: 그러니까 거 안 좋네.
CEMENT98: 흐음... 하지만 장점도 있는걸요. 여러분의 걱정을 덜어주기 위해, 의존성을 자동으로 해결해주기도 하지만요. yum, apt, zypper, emerge 등이 그것입니다.
CEMENT98: 트랜젝션은 바로 이 의존성 연결고리를 뜻하는 것이죠. 패키지 설치 이전에는 반드시 이 트랜젝션을 검사하고, 맞는 패키지가 없으면 설치하지 않습니다.
CEMENT98: 그렇지 않으면 제대로 돌아가지 않을 수도 있거든요. 트랜젝션이라는 단어는 의존성이라는 단어와 그 의미가 비슷하여, 섞어 쓰기도 합니다.
: 참 까다롭네요.
CEMENT98: 그래서 위에서 언급한 그 패키지 관리자들이 트랜젝션을 검사하지요. 자 그럼 이 패키지들 중 가장 유명한 apt와 yum을 알아볼까요?

[편집] yum과 apt

CEMENT98: 여러분, 리눅스에서 프로그램 설치할 때 뭐 쓰세요?
두번째구멍: 우분투 소프트웨어 센터요.
CEMENT98: 거기 페도라 쓰시는 분은요?
책읽는달팽: 시멘트님하 저는 강의 수강하고 있지도 않고, CLI 싫어해요 -_-;;;
CEMENT98: 죄송... 하지만 CLI는 맛있는데 말이죠... 그 맛을 모른다는 것이 안타깝네요. 자 그래서, 명령어로는 패키지를 설치하지 않는군요.
두번째구멍: apt-get!
CEMENT98: 그렇죠! apt-get install, apt-get update... 저는 yum을 씁니다.
CEMENT98: 하지만 apt의 경우에는 명령어가 뒤죽박죽이라는 점(apt-get, apt-cache..-_-;) 등의 한계가 있지요. 그래서 우분투를 포함한 데비안 계열 사용자들은 aptitude를 쓰는 것이 좋답니다.
CEMENT98: 다음은 apt와 yum의 주요 명령어입니다.
yum apt-get install: 패키지 설치
reinstall:패키지 재설치
update: 패키지 업데이트
upgrade: 패키지 업그레이드
remove: 패키지 삭제
apt-cache show(apt-get)/info(yum):자세한 패키지 정보 출력
search:이름/설명에 해당 내용이 포함된 패키지 검색
showpkg(apt-get)/list(yum):패키지명이 일치하는 것 검색
CEMENT98: 이외에도 여러가지가 있지만 너무 많아서 일일이 나열하기는 뭐하니... 알아서 찾아보세요. -_-
두번째구멍: 대체 업데이트와 업그레이드의 차이는 무엇인지? -_-;;;
CEMENT98: 참 그게... apt-get하고 yum이 서로 다른데 말이죠... ;;
CEMENT98: apt-get에서 update는 저장소를 업데이트하는 것이고, upgrade는 프로그램을 업데이트하는 것입니다.
CEMENT98: yum update는 패키지를 업데이트하며, yum upgrade(= yum update --obsolete)는 최신 버전이라 더 이상 쓸모없어진 이전 패키지까지 업데이트하지요.
CEMENT98: 위를 보시면 알겠지만 역시 yum이 위ㄷ...
Blood Spatter.jpg 사망 확인!
페도라 빠가 yum을 찬양하다 사망하였... 다가 부활.
"강의는 계속 해야지?" --#rm -rf / --no-preserve-root
CEMENT98: 그리고 위에서도 언급했지만 yum은 의존성 문제를 해결해준답니다.
CEMENT98: install, upgrade(yum은 update), remove 정도만 알아두셔도 됩니다.
$ yum install gainium
CEMENT98: 혹시 와일드카드 기억하시나요?
혹자: ㅇㅅㅇ 오스카 와일드 카드.
CEMENT98: 그 와일드 카드를 이용하면... 다음과 같이 할 수도 있습니다.
$yum install *gainum*
CEMENT98: 그렇다면 t-_-t-gainum-fuck, oh-shit-gainum, gainum-gesekki 등등 gainum이라는 이름을 포함하는 패키지 설치가 가능합니다.
혹자: 해 볼까... 음? 그딴 패키지 없다는데요.
CEMENT98: 님들 저장소가 개념이 없는데 있을 리가 있나요 멍청이들아 -_-... 너님들 저장소에 개념 저장소를 추가하세요.
CEMENT98: 아차, 패키지 설치/제거시에는 관리자 권한이 필요하니 sudo를 쓰든 su를 쓰든 root 권한을 따내세요. 뭐, 써 봤다니 알고 있는 것 같지만. ㅋㅋ

[편집] rpm과 dpkg

CEMENT98: 위의 것은 사용하는 것만으로도 의존성을 자동으로 해결해주지만, rpm과 dpkg는 그렇지 않습니다.
두번째구멍: 어...?
CEMENT98: 하지만 삭제시 트랜젝션은 따지죠. -_- 의존성이 싫으면 --nodeps 붙이면 됩니다.
rpm dpkg
rpm -i dpkg -i 패키지 설치
rpm -e dpkg -r 패키지 삭제
rpm -q(전체는 -qa) dpkg -l 패키지 검색
CEMENT98: 예를 들어, 이전에 했던 파이프를 복습해볼까요?
$rpm -qa | grep java
tzdata-java-2011n-2.fc16.noarch
java-1.6.0-openjdk-1.6.0.0-61.1.10.4.fc16.x86_64
CEMENT98: rpm 그 자체는 설치된 패키지에 대한 것이라, 특별히 인터넷에서 무언가를 받아오는 것이 아닌 이상, 연결이 안 되어 있어도 쓸 수 있습니다.
: 으악 다 까먹었는데!
CEMENT98: 복습 좀 하고 오세요. -_- 그리고 저도 자세한 것은 잘 모르겠습니다. rpm만 걸자면 조금 더 설명이 가능한데.. dpkg를 몰라서 ...;;
CEMENT98: 오늘은 컨디션이 좀 안 좋아서 쉬겠습니다. 자. 그렇다고 복습 안 하면 안 돼요!
혹자: ㄷ... 네;;;
개인 도구
이름공간 목록 보기/편집
변수
행위
차림표
아랫방
자매 프로젝트
유지보수
커뮤니티
도구 모음