Ubuntu .deb 패키지 관련해서 질문드립니다

익명 사용자의 이미지

제가 만든 프로그램을 .deb 형태로 배포하려고 하는데요

그 과정에서 의존된 패키지가 있어서 .deb 설치 시 그 패키지도 자동으로 설치해주도록 하고 싶은데요

이런 경우 해당 파일을 .deb 패키지 안에 포함시켜야 하나요?

아니면 control 파일을 수정하면 되는지...

DebPolaris의 이미지

control을 변경하시면 됩니다.

관련 문서(debian 홈페이지나 인터넷 검색페이지)를 보시면 만드는 방법이 나와 있습니다.

-----------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'

DEBIAN TESTING, KDE...
debpolaris.blogspot.kr

익명 사용자의 이미지

Depends, Recommends, Suggests, Enhances, Pre-Depends 같은 섹션들에 대해서

읽어봤는데요 Depends를 실제로 적용해봤더니 해당 패키지가 설치 되어 있는 경우엔 정상적으로 진행되고

설치되어 있지 않은 경우에는 그냥 deb 설치 자체를 중단하던데

문서에서는 어떤 값을 설정해주면 의존된 패키지들이 설치된다 이런 언급이 전혀 없네요

제가 보면서 빼먹은 부분이 있는 건가요

익명 사용자의 이미지

dpkg -i로 설치하셨다면 우분투에서 제공한 패키지도 원래 그렇게 동작합니다.

익명 사용자의 이미지

의존성이 있는 패키지를 자동으로 설치해준다는 말씀이신가요?

익명 사용자의 이미지

아뇨. 의존성이 있는 패키지가 설치되지 않았으면 설치가 중단된다는 겁니다.

익명 사용자의 이미지

그럼 자동으로 설치할 수 있는 방법은 없는건가요?

control 파일 관련 문서를 여러 번 읽어봐도 찾을 수가 없네요...

namhw의 이미지

deb 패키지에 안에 있는 패키지 설치전에 실행되는 스크립트인 postinst 파일에

sudo apt-get install 패키지명

이런식으로 의존성 패키지의 설치를 수행해보면 어떨까요? 만약 설치된 패키지라면

설치된 패키지라고 출력하고 넘어갈테고, 설치되어 있지 않다면 설치여부를 물어보겠죠?

촌놈.

익명 사용자의 이미지

사실 원래 preinst에 넣어서 한번 시도해 봤었고요

이 댓글 본 이후에 postinst에도 넣어서 해봤는데 마찬가지로

unable to execute installed post-installation script (/var/lib/dpkg/info/myproject.postin) : Exec format error
dpkg: error processing myproject (--install):
subprocess installed post-installation script returned error exit status 2

라는 에러 메세지가 뜨네요

아마 postinst나 preinst에서는 다른 패키지의 추가 설치가 불가능한듯 합니다

세이군의 이미지

controls에는 Depends에 해당 패키지명을 적어주시면 되고 Ubuntu 공식 저장소에서 찾을 수 없는 패키지만 만드신 패키지와 같은 폴더에 넣어주세요.
그런뒤에 "apt-get install 설치할 패키지명" 처럼 해주시면 필요한 패키지들을 모두 설치합니다.

dpkg -i로 하는 경우에는 옵션으로 주어지는 패키지만 설치하려고 하기 때문에 Depends에 지정된 패키지를 찾을 수 없다면 바로 종료합니다.

익명 사용자의 이미지

control에는 Depends:libimblib2-dev라고 적고
postinst 파일은 apt-get install libimlib2-dev 라고 적었는데
위의 댓글과 마찬가지의 결과가 나오네요

그리고 나선 dpkg-deb --build myproject 하고
sudo dpkg -i myproject.deb 로 실행했습니다

세이군의 이미지

postinst 파일에 "apt-get install libimlib2-dev" 이문장 쓰시면 안됩니다.

익명 사용자의 이미지

저거 하나만 들어있는 상태라서 지금은...

저게 없으면 depends는 패키지가 있는지 없는지만 검사해주고
실제로 설치를 해주진 않았던 거 같은데...

익명 사용자의 이미지

공식 저장소에서 찾을 수 없는 패키지는 같은 폴더에 넣으라고 하셨는데
Imlib2-dev 같은 경우는 그럼 별도의 파일이 포함될 필요는 없는 거 맞나요?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.