프로그램, 커널 설치 및 업그레이드 SPARCS 10 박준성 koolvibes
그에 앞서.. wget [url] 파일 다운로드 tar [cxvzf] 파일 압축/풀기 tar.gz 압축하기 tar cvf filename.tar file1… gzip filename.tar tar.gz 한번에 압축하기 tar cvzf filename.tar file1… tar.gz 압축풀기 gunzip filename.tar.gz tar xvf filename.tar tar.gz 한번에 풀기 tar xvzf filename.tar.gz
프로그램을 이루는 정보들을 적재적소에 배치하는 과정 프로그램 설치 프로그램을 이루는 정보들을 적재적소에 배치하는 과정
의존성 (dependency) 각 프로그램들은 의존성을 가진다. shared library dependency 설치 시 이미 일부 라이브러리가 깔려 있어 깔리지 않거나 삭제 시 라이브러리가 삭제되어 다른 프로그램이 동작하지 않는 경우가 있다. 프로그램의 설치와 삭제에서 생기는 수많은 문제들은 dependency 때문이므로 주의하도록 한다.
ldd를 사용하여 프로그램들의 dependency 관계를 알 수 있다.
프로그램 설치하기 소스 이용 패키지 이용 코드를 다운로드 하여 설치 redhat debian 기타 패키지 RPM, yum, apt-get debian Dpkg, dselect, apt-get, aptitude 기타 패키지 pip, easy_install, rvm
소스 코드 이용 코드를 다운로드 한다.(보통 압축파일) 압축을 푼다. Configuration을 한다. Compile을 한다. 설치를 한다.
소스 코드 이용 Configure make make install 여러가지 설정 Makefile 파일 설정 실행 가능한 바이너리 생성 make configure 시스템에 어떤 어떤 라이브러리들이 설치되어있는지를 검사하여 소스코드로부터의 컴파일이 가능하다고 생각되는지를 체크하는 과정입니다. 어떤 라이브러리가 굳이 설치되어 있지 않더라도 해당 프로그램의 설치 자체는 가능한 경우가 많기 때문에, 이에 따라 유동적으로 "무엇을 어떻게 컴파일할지" 를 정하는 단계 이렇게 만들어진 Makefile 에 적혀 있는 순서대로, 소스코드로부터 "실행 가능한 바이너리" 를 만들어내는 과정이 make 입니다. make 가 끝난 뒤 바이너리 파일들을 시스템에서 바로 명령행에서 실행가능하거나 shared library 목록에 추가하거나 하는 등의 작업을 시행하도록 하는 과정이 make install make install 바이너리 파일들 시스템의 적재적소에 비치
소스 코드 사용 $ wget [URL] $ tar –zxvf [filename.tar.gz] $ ./configure 설정 파일이 생김 $ make 생긴 설정 파일로 인스톨러 생성 # make install 만든 인스톨러 파일로 시스템에 설치 파일 다운로드 후 패키지 압축과 아카이브 품. configure. 설치 파일 컴파일 인스톨. 경우에 따라서는 configure 전에 bootstrap 단계가 필요한 경우도 있고, make 하는 과정에서 오류가 발생하여 (의존관계에 있는 다른 라이브러리가 아직 설치되어 있지 않은 경우 종종 발생) 순리대로 할 수 없는 때가 많습니다. 소스코드에 의해 설치하는 과정을 설명하고자 할 때에는 반드시 이 점 (진리의 Case-by-Case) 을 명시하여야 합니다.
실습 – python 설치 소스 코드를 다운받아 Python을 인스톨 해 보자. http://www.python.org/download/
실습 – 프로그램의 위치 python, ls 등의 프로그램들이 어디에 깔려있는지 알아 보세요 which
패키지 사용 redhat debian 기타 패키지 RPM, yum, apt-get Dpkg, dselect, apt-get, aptitude 기타 패키지 pip, easy_install, rvm
Redhat-RPM 커널을 포함한 라이브러리, 응용프로그램이 모두 rpm으로 제공. ex) foobar-1.0-1.i386.rpm 컴파일할 필요가 없음 foobar – 이름, 1.0 – 버전, 1 – 패치 버전, i386 – 시스템 종류
Redhat-RPM # rpm -q 패키지이름 # rpm -Uvh 파일이름.rpm # rpm -ivh 파일이름.rpm # rpm –e 패키지이름 # rpm –i ftp://[source] 좋은 참고 자료 : http://wiki.kldp.org/wiki.php/LinuxdocSgml/Rpm-Usage-KLDP 현재 깔려 있는지 확인 업데이트 설치 지우기 V, h는 정보들을 화면에 띄워주는 것 소스에서 컴파일 하는 방법도 있음. --nodeps - 다른 패키지에 영향을 받지 않고 강제로 설치.
Redhat-yum RPM의 프론트 엔드 패키지 의존성 문제를 해결 list 기능 사용 의존성이 있다고 패키지에 기록되어 있는 다른 패키지들을 알아서 추가로 다운로드 하여 설치
Redhat-yum 패키지 찾기 # yum list available : 설치가 가능한 패키지 목록 # yum list installed : 이미 설치된 list 패키지 목록 # yum list extras : 일반 저장소에서 설치되지 않는 패키지 목록 # yum list *gcc* : 'gcc'타이틀이 있는 패키지 목록 # yum list updates : 업데이트 가능한 패키지 목록 # yum info wordpress : wordpress패키지에 대한 설명 # yum info gcc* : gcc로 시작되는 패키지 설명 # yum search gcc : gcc문자열을 포함한 패키지의 검색 패키지 설치 # yum install gcc :gcc 패키지 다운로드 인스톨 # yum groundinstall gcc : gcc 데스크톱 패키지의 전체 세트를 다운로드 인스톨 yum update – 모두 업데이트 기타 –version, info package name
Redhat-yum 패키지 업데이트 # yum check-update : 업데이트가 준비된 모든 패키지를 리스트한다. # yum list update gcc* : gcc*이름으로 이용 가능한 업데이트를 찾는다. # yum update gcc* : 모든 gcc 패키지를 업데이트 한다. # yum update 업데이트가 준비된 모든 패키지를 업데이트한다. # yum groupupdate 파일명 그룹의 모든 패키지를 업데이트한다. 패키지 제거하기 # yum remove gcc : gcc 패키지를 제거한다. # yum remove gcc* : gcc로 시작되고 있는 패키지를 제거한다. # yum groupremove gcc : gcc 그룹에서 모든 패키지를 제거한다. 패키지 지우기 # yum clean packages : cache에서 패키지를 지운다. # yum clean metadata : cache에서 metadata를 지운다. # yum clean headers : cache에서 header를 지운다. # yum clean all : cache에서 metadata, header, package를 지운다.
Debian-dpkg Debian Package Management System. .deb 파일로 된 패키지로 설치 rpm과 유사
Debian-dpkg dpkg -i <file name.deb> dpkg –r <file name.deb> remove 제거 dpkg -P <package name> purge dpkg –l 설치된 패키지 리스트
Debian-dselect dpkg의 프론트엔드 dpkg 의 명령어들을 backend method로 사용
dpkg와 dselect 의 문제점 Dependency를 알아서 고려해야 함.
apt Advanced Package Tool apt-get, apt-cache, apt-cdrom… Handling “Dependency” Can deal with complex package relation.
apt-get, apt-cache – package 설치/제거 패키지 찾기 #apt-cache search <패키지 이름> 패키지 설치 #apt-get install < 패키지 이름 > 패키지 재설치 #apt-get reinstall <패키지 이름> 패키지 제거 #apt-get remove < 패키지 이름 > #apt-get purge < 패키지 이름 > 참고) apt-get install 명령어로 받은 deb 파일의 저장 위치 /var/cache/apt/archive/ 위 폴더에 .deb 패키지 파일로 저장됩니다. #apt-get clean Package 목록을 업데이트 packagename 의 package를 설치 Package 삭제. 업그레이드 Package 삭제, Configuration file 까지 제거. * 업데이트 후 업그레이드를 해야 한다.
apt-get, apt-cache - package 관리 #apt-get update 패키지 인덱스 인덱스 정보를 업데이트 : apt-get은 인덱스를 가지고 있는데 이 인덱스는/etc/apt/sources.list에 있다. 이곳에 저장된 저장소에서 사용할 패키지의 정보를 얻는다. #apt-get upgrade 설치된 패키지 업그레이드 : 설치되어 있는 패키지를 모두 새 버전으로 업그레이드 합니다 *apt는 최신 패키지를 다운로드 하여 설치하게 되는데 upgrade 하기전에 update 해서 source.list 를 갱신 # apt-get dist-upgrade 의존성검사하며 설치하기 # apt-cache show <패키지명> 패키지 정보보기 apt를 이용해서 설치된 deb패키지는 /var/cache/apt/archive/ 에 설치가 됩니다 Package 목록을 업데이트 packagename 의 package를 설치 Package 삭제. 업그레이드 Package 삭제, Configuration file 까지 제거. * 업데이트 후 업그레이드를 해야 한다.
실습 – sl 기차 # apt-get install wget # apt-get install sl $sl /usr/games/ # apt-get remove sl
apt-[etc] #apt-cdrom add #apt-config [옵션] (shell or dump) apt의 sources.list 파일에 CDROM을 추가하는 간단한 명령 – 인터넷이 연결되지 않았을 때나 소프트웨어가 CD에 있을 때 config – apt 의 설정
apt 의 소스 /etc/apt/sources.list 에 있다. apt-get 하면 어디서 불러오는가
Debian-Aptitude apt의 프론트 엔드 – ncurses 기반 ncurses – text 기반 gui 제공하는 라이브러리
Debian-Aptitude CLI도 제공. Ex) #aptitude install <filename>
Python – easy-install python module bundled with setuptools that lets you automatically download, build, install, and manage Python packages http://pypi.python.org/pypi/setuptools 에서 setuptools를 설치 easy-install 사용 가능 support url source, .egg file #easy_install SQLObject http://peak.telecommunity.com/DevCenter/EasyInstall
Python – easy-install python module automatically download, build, install, and manage Python packages support url source, .egg file #easy_install SQLObject http://peak.telecommunity.com/DevCenter/EasyInstall http://packages.python.org/distribute/easy_install.html
Python - pip easy_install을 향상시킨 버전 #pip install [pkgname] #pip uninstall [pkgname] http://www.pip-installer.org
커널 업데이트 Linux의 진화를 따라가기
Kernel 컴퓨터 시스템을 제어하는 일 메모리를 관리하고, 디스크에 데이터를 읽고 쓰고, 프로그램을 실행시키고, 하드웨어 장치를 관리하는 일 http://sharkynara.egloos.com/1102607 운영체제는 컴퓨터를 운용하는 특별한 종류의 프로그램이다. 이 운영체제는 핵심이라고 할 수 있는 부분이 있는데, 이것을 커널이라고 한다. 커널은 컴퓨터 시스템을 제어하는 일, 그러니까 메모리를 관리하고, 디스크에 데이터를 읽고쓰고, 프로그램을 실행시키고, 네트워크 카드, 사운드카드, 그래픽카드등의 하드웨어 장치를 관리하는 일을 한다. 학문적인 관점에서 보자면 운영체제란 바로 이 커널을 가리키는 것이다. 예를 들어 리눅스 운영체제는 리눅스 커널을 의미한다. 하지만 커널만을 가지고 할 수 있는 일은 그렇게 많지 않다. 커널위에 shell, 운영자 관리도구와 같은 필수적인 다른 프로그램이 있어야 비로서 컴퓨터를 제어할만한 환경이 갖추어진다. 이런이유로 일반적인 관점에서 커널 + 필수 프로그램까지를 운영체제라고 부르고 있다. 다음 그림은 컴퓨터 시스템 과 커널, 프로그램의 관계를 보여주고 있다.
커널 설치 프로그램 소스로 설치와 유사 루트 계정으로 설치 소스는 /usr/src 로 다운로드 -> 세팅 -> 빌드 -> 설치 -> grub 세팅 ->재부팅 -> 동작 확인 루트 계정으로 설치 소스는 /usr/src 로 커스텀한 커널을 사용함으로서 메모리를 줄일 수 있다. 리눅스의 장점
커널 설치 개발툴이 필요하다. (ex : gcc) #apt-get install gcc $make menuconfig $make xconfig $make gconfig 개발툴은 빌드 하기 위해 필요함. 아래는 gcc환경 설정
커널 구하기 Kernel.org 에 가면 있다. 버전 형식 : Major.minor.patchlevel 2.6.35.13-> 커널 2.6 버전의 패치 레벨 35, 서브버전 13
커널 다운로드 $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-x.y.z.tar.bz2 # tar -xjvf linux-2.6.25.tar.bz2 -C /usr/src # cd /usr/src
커널 설정 make config .config 파일 생성 y: 기능사용 n: 사용안함 m: 모듈로 사용 ?: 도움말 표시 ?: 도움말 표시 .config 파일 생성 make config - y make config 같은 것은 파일을 고치는 수준이므로 루트 권한이 필요하지 않다. 모듈로 설치할 것을 선택하는 것 등등이 나온다.
커널 컴파일 $ make $ make module # make modules_install # make install
부팅 설정 # cd /boot/grub # vi menu.lst
모듈 - 참고 동적으로 모듈 로딩 가능 insmod, rmmod 드라이버와 같은 것을 컴퓨터를 끄지 않고 로딩 가능 시스템 자원을 효율적으로 관리 가능 커스텀한 커널을 사용함으로서 메모리를 줄일 수 있다. insmod – 모듈 로드 rmmod – 모듈 릴리즈 리눅스의 장점
좋은 자료(?) http://wiki.kldp.org/wiki.php/LinuxdocSgml/Kernel-HOWTO http://wiki.kldp.org/wiki.php/LinuxdocSgml/2.4Kernel_Compile-KLDP