제가 만든 프로그램을 .deb 형태로 배포하려고 하는데요
그 과정에서 의존된 패키지가 있어서 .deb 설치 시 그 패키지도 자동으로 설치해주도록 하고 싶은데요
이런 경우 해당 파일을 .deb 패키지 안에 포함시켜야 하나요?
아니면 control 파일을 수정하면 되는지...
control을 변경하시면 됩니다.
관련 문서(debian 홈페이지나 인터넷 검색페이지)를 보시면 만드는 방법이 나와 있습니다.
----------------------------------------------------- 남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다. 그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다. -Rob Flickenger 'Linux server hacks'
DEBIAN TESTING, KDE... debpolaris.blogspot.kr
Depends, Recommends, Suggests, Enhances, Pre-Depends 같은 섹션들에 대해서
읽어봤는데요 Depends를 실제로 적용해봤더니 해당 패키지가 설치 되어 있는 경우엔 정상적으로 진행되고
설치되어 있지 않은 경우에는 그냥 deb 설치 자체를 중단하던데
문서에서는 어떤 값을 설정해주면 의존된 패키지들이 설치된다 이런 언급이 전혀 없네요
제가 보면서 빼먹은 부분이 있는 건가요
dpkg -i로 설치하셨다면 우분투에서 제공한 패키지도 원래 그렇게 동작합니다.
의존성이 있는 패키지를 자동으로 설치해준다는 말씀이신가요?
아뇨. 의존성이 있는 패키지가 설치되지 않았으면 설치가 중단된다는 겁니다.
그럼 자동으로 설치할 수 있는 방법은 없는건가요?
control 파일 관련 문서를 여러 번 읽어봐도 찾을 수가 없네요...
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 같은 경우는 그럼 별도의 파일이 포함될 필요는 없는 거 맞나요?
텍스트 포맷에 대한 자세한 정보
<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]
control을 변경하시면 됩니다. 관련
control을 변경하시면 됩니다.
관련 문서(debian 홈페이지나 인터넷 검색페이지)를 보시면 만드는 방법이 나와 있습니다.
-----------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'
DEBIAN TESTING, KDE...
debpolaris.blogspot.kr
관련 문서를 찾아봤는데...
Depends, Recommends, Suggests, Enhances, Pre-Depends 같은 섹션들에 대해서
읽어봤는데요 Depends를 실제로 적용해봤더니 해당 패키지가 설치 되어 있는 경우엔 정상적으로 진행되고
설치되어 있지 않은 경우에는 그냥 deb 설치 자체를 중단하던데
문서에서는 어떤 값을 설정해주면 의존된 패키지들이 설치된다 이런 언급이 전혀 없네요
제가 보면서 빼먹은 부분이 있는 건가요
dpkg -i로 설치하셨다면 우분투에서 제공한
dpkg -i로 설치하셨다면 우분투에서 제공한 패키지도 원래 그렇게 동작합니다.
원래라는게...
의존성이 있는 패키지를 자동으로 설치해준다는 말씀이신가요?
아뇨. 의존성이 있는 패키지가 설치되지 않았으면
아뇨. 의존성이 있는 패키지가 설치되지 않았으면 설치가 중단된다는 겁니다.
아 네 감사합니다...
그럼 자동으로 설치할 수 있는 방법은 없는건가요?
control 파일 관련 문서를 여러 번 읽어봐도 찾을 수가 없네요...
꼼수지만 자동 설치를 수행하고자 하신다면...
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에 해당 패키지명을
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
postinst 파일에 "apt-get install libimlib2-dev" 이문장 쓰시면 안됩니다.
postinst는 그럼 아예 작성할 필요가 없는건가요?
저거 하나만 들어있는 상태라서 지금은...
저게 없으면 depends는 패키지가 있는지 없는지만 검사해주고
실제로 설치를 해주진 않았던 거 같은데...
아 그리고...
공식 저장소에서 찾을 수 없는 패키지는 같은 폴더에 넣으라고 하셨는데
Imlib2-dev 같은 경우는 그럼 별도의 파일이 포함될 필요는 없는 거 맞나요?
댓글 달기