예제로 살짝 들쳐보는 archlinux 패키지 시스템

atie의 이미지

관련 링크:
pacman (패키지 관리자) - http://wiki.archlinux.org/index.php/Pacman
ABS (아치리눅스 빌드 시스템) - http://wiki.archlinux.org/index.php/ABS
makepkg (패키지 만들기) - http://wiki.archlinux.org/index.php/Makepkg
AUR (아치리눅스 사용자 저장소) - http://aur.archlinux.org/
yaourt (또다른(비공식) 패키지 관리자) - http://archlinux.fr/yaourt-en/

위의 관련 링크를 요약하면,
- 아치리눅스의 패키지 관리자는 pacman이고 바이너리 패키지를 설치, 갱신, 삭제를 위하여 명령행에서 사용을 합니다.
- 내 스스로 패키지를 만들려면 ABS를 이해하고, makepkg 사용법을 익혀야 합니다.
- 사용자들이 만든 패키지들의 저장소가 AUR 입니다. community 저장소와 unsupported 저장소로 구분합니다.
- pacman의 기능과 함께 AUR을 편하게 사용할 수 있는 기능을 더한 것이 yaourt입니다.

ABS를 사용하려면, /etc/abs.conf 파일의

REPOS=(core extra !unstable community !testing)

부분을 이해하여야 합니다. 의미는

sudo abs

명령을 실행하였을 때, 공식 저장소인 core, extra 내의 패키지들의 PKGBUILD 및 패치 파일 등을 내 컴퓨터의 /var/abs/ 폴더 밑에 sync를 하지만 testing과 unstable 저장소는 sync 하지 않고, AUR의 community 저장소 내의 패키지들의 파일은 sync를 한다는 의미 입니다.

만약 testing 또는 unstable의 패키지가 필요한 경우는, archlinux 홈페이지의 저장소 링크를 따라가거나 패키지 업데이트 RSS를 이용하여 신규 패키지 정보를 얻고 mirror 사이트에서 testing/os/i686/패키지 파일을 하는 식으로 낱개로 다운 받아

sudo pacman -U 패키지파일명

해서 업데이트 할 수도 있습니다.

지루하니 이쯤해서 예를 들어 내 패키지를 만드는 법을 알아보겠습니다. 예로 설명할 것은, gtk2 일정 관리 프로그램인 osmo 입니다. AUR 패키지 검색 결과처럼 community 저장소에 osmo 릴리스 버전의 패키지와 unsupported로 구분되는 osmo-svn 패키지가 있습니다.

1) osmo 릴리스 버전 패키지의 변경 및 만들기
- osmo 패키지의 설치는, yaourt -S osmo 로 간단하게 설치할 수 있습니다. 하지만, 예로 든 이유는 선택적인 의존 패키지를 추가하여 기능을 추가하고자 해서입니다.
- 위의 ABS 위키 페이지에 적힌 내용을 따라했다면, sudo abs 명령을 사용하여 /var/abs/ 폴더 밑에 패키지를 만드는데 필요한 파일들을 sync 할 수 있습니다. osmo는 /var/abs/community/office/osmo 폴더에 PKGBUILD 파일등이 저장됩니다.
-

mkdir /var/abs/local/osmo
cp /var/abs/community/office/osmo/* /var/abs/local/osmo/ 

* 위 명령 사용 전에, Makepkg 위키의 다음 부분을 반드시 적용을 합니다. 그리고 root로 패키지를 만드는 것은 절대 피해야 합니다.
groupadd abs
gpasswd -a $USER abs
chown root:abs /var/abs/local
chmod 775 /var/abs/local

- 그러나 간혹 sync에 시간차가 있는데, 이럴 경우는 archlinux svn을 이용해서 파일을 열람 또는 다운로드 할 수 있습니다. 이 경우는
http://repos.archlinux.org/viewvc.cgi/community/office/osmo/?root=community

- cd /var/abs/local/osmo/
하고 다음처럼 PKGBUILD 파일을 수정합니다.

--- PKGBUILD.old	2008-07-07 20:42:40.000000000 -0500
+++ PKGBUILD	2008-07-07 21:03:18.000000000 -0500
@@ -2,11 +2,12 @@
 # Previous Contributor: Benzo <mb_benzo@yahoo.es>
 pkgname=osmo
 pkgver=0.2.0
-pkgrel=1
+pkgrel=2
 pkgdesc="A handy personal organizer"
 url="http://clay.ll.pl/osmo/"
 license="GPL"
 depends=('gtk2>=2.10' 'libxml2')
+optionaldepends=('libical' 'libgringotts')
 makedepends=('pkgconfig')
 arch=('i686' 'x86_64')
 source=(<a href="http://downloads.sourceforge.net/osmo-pim/$pkgname-$pkgver.tar.gz" rel="nofollow">http://downloads.sourceforge.net/osmo-pim/$pkgname-$pkgver.tar.gz</a>)

- 선택적인 의존 패키지를 설치합니다. (unsupported에 있는 패키지들이므로 yaourt로 설치했고 컴파일 과정을 거칩니다.)
yaourt -S libical libgringotts

- 패키지를 만들고, 설치합니다.

makepkg
yaourt -U osmo-0.2.0-2-i686.pkg.tar.gz

- 위의 PKGBUILD 파일 변경으로, osmo 실행후 about탭에서 컴파일된 기능을 보면 iCalendar와 Encrypted notes 지원이 되는 것을 볼 수 있습니다.

2) osmo-svn 패키지 변경/설치하기
패키지 명에 -svn나 -git 등이 붙는 패키지들은 대부분 AUR의 unspported로 구분됩니다. 아치리눅스 사용자 중에 개발자 또는 번역자 등이 자신의 작업을 수시로 패키지를 만들어 사용할 경우 무척 편리할 수 있겠고, 일반 사용자라도 "까무러쳐도 최신의 패키지가 좋아"라면 사용해 볼 수 있습니다. 이 예에서는,

mkdir /var/abs/local/yaourtbuild/osmo-svn
cd /var/abs/local/yaourtbuild/osmo-svn/
yaourt -G osmo-svn

(제 경우는) yaourtbuild 폴더 밑에 주로 소스관리 패키지들을 위한 서브폴더를 만들고 yaourt -G 옵션을 사용해서 unsupported 패키지 빌드에 필요한 파일을 내려받아 위의 1)과 동일한 내용을 수정을 하여 패키지를 만듭니다.

그 밖에, 패키지 빌드 사전 작업으로 /etc/makepkg.conf 파일의 CFLAGS과 MAKEFLAGS을 각자의 시스템 환경에 맞게 수정하는 것도 잊지 마세요. 저는 이렇게...

CFLAGS="-march=core2 -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEFLAGS="-j3"

AUR에 대한 것은,
http://wiki.archlinux.org/index.php/AUR_User_Guidelines

만약에, AUR의 unsupported에 패키지를 업로드하는 것은 예를 들어 다음과 같이 만든 osmo.tar.gz를 첨부하면 됩니다.

mkdir ~/arch/osmo
cp /var/abs/local/osmo/PKGBUILD ~/arch/osmo/
cd ~/arch/
tar -zcvvf osmo.tar.gz osmo

현재와 그리고 앞으로의 아치리눅스 사용자분들께 참고가 되는 글이었으면 싶습니다.

댓글

Fe.head의 이미지

안녕하세요.
문서 잘 봤습니다.

이번에 프로그램을 하나 설치할려고 보니까 해당 패키지가 없어서 검색해보다가
이 글을 보게 되었는데요.

AUR 패키지 검색 결과처럼 community 저장소에 osmo 릴리스 버전의 패키지와 unsupported로 구분되는 osmo-svn 패키지가 있습니다.

위 osmo-svn이 community 저장소에 있다고 나와있는데 검색 해서 들어가보면
unsupported라는 글자가 보이지 않는데요.

어떻게 알아낼수 있는건가요?

전 ACE 설치할려고 하는데 결과가 http://aur.archlinux.org/packages.php?ID=3619
로 나왔습니다.

REPOS=(core extra !unstable community !testing) 이부분의 느낌표를 모두 없애고
abs명령을 실행한후 /var/abs 를 모두 검색해봤는데 보이지가 않는군요.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

Fe.head의 이미지

아^^ 설명이 위에 있었군요.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.