· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Package Mgmt

패키지를 기반으로 하여 소프트웨어를 설치/운영하는 다양한 OS별로 적용되는 패키지 관리 방법들이 다르고 비슷한 부분에 대한 비교 요약

1. 패키지 목록

1.1. 패키지 목록 갱신하기

  • deb, apt-rpm: apt-get update
  • gentoo
    • emerge --sync (-q )
    • emerge --sync && fixpackages
  • pkgsrc
    • cd /usr/pkgsrc; cvs up
    • rsync --recursive --links --safe-links --perms --times --compress --force --whole-file --progress --stats --delete --delete-after --timeout=180 --exclude=distfiles/* --exclude=wip/* rsync://rsync.netbsd.org/NetBSD/NetBSD-current/pkgsrc/* /usr/pkgsrc
  • ports
    • cvsup -g -L 2 /path/ports-supfile
  • fink
    • fink selfupdate

1.2. 패키지 서버 목록 파일

  • deb
    • /etc/apt/sources.list

2. 패키지 변경

2.1. 패키지 설치하기

  • deb
    • apt-get install hello
    • dpkg -i hello*.deb
  • rpm
    • rpm -ivh hello
    • yum install hello
  • gentoo: emerge hello
    • (바이너리 설치는 emerge -k hello)
    • (바이너리가 있을때만 설치는 emerge -K hello)
  • pkgsrc: 해당 패키지 디렉토리에서 make install
  • slackware: installpkg hello.tgz
  • ports: 해당 패키지 디렉토리에서 make install
  • solaris: pkgadd -s hello
  • fink: fink install hello

2.2. 패키지 재설치

  • gentoo: emerge --oneshot hello

2.3. 설치된 패키지 업그레이드하기

  • deb, apt-rpm
    • apt-get upgrade
    • apt-get dist-upgrade
    • apt-get dselect-upgrade
    • apt-get install hello
  • rpm
    • rpm -Uvh hello
    • yum update
  • pkgsrc: 해당 패키지 디렉토리에서 make update
  • gentoo
    • emerge -u world
    • emerge -u hello
    • emerge -uDN world (use flag 바뀐 것들도 몽땅 새로 upgrade하기)
    • emerge -uDN world && revdep-rebuild (의존성관계가 깨진것을 찾아서 몽땅 upgrade하기)
    • 항상 upgrade 후에는 설정파일들의 upgrade도 잊지 말기
      • etc-update && env-update && source /etc/profile
  • slackware: upgradepkg hello.tgz
  • ports: portupgrade 이용.
  • fink: fink update hello

2.4. 패키지 삭제하기

  • deb
    • apt-get remove hello
    • apt-get install hello- (apt-get install hello goodbye- 처럼 설치 삭제 병행 가능)
  • rpm: rpm -e hello
  • gentoo
    • emerge unmerge hello
    • emerge -C hello
  • pkgsrc: pkg_delete hello
  • slackware: removepkg hello.tgz
  • ports
    • 해당 port 디렉토리에서 make deinstall
    • pkg_remove, pkg_delete, pkg_deinstall
  • solaris: pkgrm hello
  • fink: fink remove hello

2.5. 패키지 설정 삭제하기

  • deb: apt-get remove --purge hello
  • fink: fink purge hello

2.6. 패키지 소스 받기

  • deb: apt-get source hello
  • pkgsrc: /usr/pkgsrc/distfiles에 소스가 받아짐.
  • gentoo: emerge -f hello
  • ports: /usr/ports/distfiles 에 소스가 받아짐 (make fetch, make extract)

2.7. 패키지 빌드 의존성 충족시키기

  • deb: apt-get build-dep hello
  • gentoo: revdep-rebuild

2.8. 패키지 소스 받아 컴파일 설치하기

  • deb: apt-get -b source hello
  • gentoo: emerge hello
  • ports: cd /usr/ports/<category>/<pkgname> && make install
  • slackware: 패키지의 SlackBuild 파일을 받은 후 실행

3. 패키지 정보

3.1. 특정 패키지의 자세한 정보 출력하기

  • deb
    • dpkg --print-avail hello
    • dpkg -p hello
    • apt-cache show hello
  • rpm: rpm -qi hello
  • gentoo
    • /usr/portage 하위의 디렉토리에서 *.ebuild 파일을 vi로 열어보면 파악됨
    • emerge -vp hello
  • pkgsrc: pkg_info hello
  • slackware: cat /var/log/packages/hello
  • ports: pkg_info hello
  • solaris: pkginfo -l hello
  • fink: fink describe hello

3.2. 설치된 패키지 전체 목록 보기

  • deb: dpkg -l
  • rpm: rpm -qa
  • gentoo
    • (gentoolkit 설치 후 ) equery list
    • epm 이용: emerge epm && epm -qa
  • pkgsrc: pkg_info
  • slackware: ls /var/log/packages
  • ports: pkg_info
  • solaris: pkginfo
  • fink: fink list

3.3. 설치된 패키지 해당 파일 목록 보기

  • deb
    • apt-file list hello
    • dpkg -L hello
  • rpm: rpm -ql hello
  • gentoo
    • (gentoolkit 설치 후) equery files hello
  • pkgsrc: pkg_info -L hello
  • slackware: cat /var/log/packages/hello
  • ports: pkg_info -L hello
  • solaris: pkgchk -l hello |grep Pathname

3.4. 특정 파일이 어느 패키지에 속해 있는지 보여주기

  • deb
    • apt-file search foofile
    • dpkg --search foofile
    • dpkg -S foofile
  • rpm: rpm -qf /path/to/foofile
  • gentoo
    • (gentoolkit 설치 후) equery belongs /bin/ls
  • ports: pkg_info -W foofile
  • slackware: cat /var/log/packages/* | grep foofile

3.5. 패키지 의존성 보기

  • deb: apt-cache depends hello
  • rpm: rpm -q --requires hello
  • pkgsrc: 해당 패키지 디렉토리에서 make build-depends-list
  • ports: pkg_info -r <pkgname>

3.6. 패키지 역 의존성 보기

  • deb: apt-cache rdepends hello
  • rpm: rpm -q --whatrequires hello
  • gentoo
    • qpkg --query-deps hello
    • qpkg -q hello
  • ports: pkg_info -R <pkgname>

3.7. 패키지가 실행하는 스크립트 보기

  • rpm: rpm -q --scripts hello

3.8. 이름으로 패키지 찾기

  • deb
    • apt-cache pkgnames hello
    • dpkg -l hello
  • rpm
    • rpm -qa | grep hello
    • rpm -qa hello
  • gentoo
    • emerge search hello
    • emerge -s hello
  • pkgsrc: pkgfind hello
  • slackware: ls /var/log/packages | grep hello
  • ports
    • whereis hello
    • cd /usr/ports; make search name=hello

3.9. 설명으로 패키지 찾기

  • deb: apt-cache search hello
  • gentoo: emerge search -S hello
  • slackware: cat /var/log/packages/* | grep hello
  • ports
    • cd /usr/ports; make search key=hello

4. 패키지 히스토리(롤백 등) 관리

  • RPM, fedora12 정도부터 지원 (yum 3.2.25 이후)

5. 메모

대상 OS/배포판은 여러분이 익숙하게 사용하고 있는 어떤 것이라도 상관 없으며 자유롭게 내용을 추가해 주시고 고칠 부분이 있으면 역시 자유롭게 고쳐 주세요. 내용 정리, 재배치 역시 언제든지 환영입니다.

DeleteMe 일단 기본적인 패키지 관련 작업들을 나열해 보도록 하겠습니다. 패키지 관리에서 공통적인 작업들을 추가해 주시고, 각 작업 아래에 특정 배포판이나 OS에서 이용되는 명령어를 적어 주세요. (rpm, deb, ebuild, PkgsrcForLinuxUser, ports....)

6. 질문 & 답변

Q : debian 에서 apt-get source hello로 소스를 받아서 그 소스를 수정한 후 컴파일 하여 설치하려면 어떻게 해야 하나요?

A : FixMe 더 나은 방법도 있겠지만, 저는 소스 tarball등을 모두 삭제한 후 debian/rules binary를 sudo나 fakeroot로 실행하는 방법을 택하고 있습니다.


ID
Password
Join
When the wind is great, bow before it; when the wind is heavy, yield to it.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2012-11-13 08:39:14
Processing time 0.0523 sec