우분투 한국 사용자 모임

 

지금 시간: 2010/09/03 금 12:30 pm


새 글타래 올리기 댓글 달기  [ 글: 8 개 ] 
글쓴이 내용
오프라인
글올림: 2008/09/09 화 8:18 pm 
회원 아바타
 e-메일  www  개인정보

가입일: 2008/03/31 월 5:47 pm
글: 4732

두번째 컴파일을 해보자 2 (소스다운 컴파일:dh_make) 입니다.

nmap은 네트워크 검사 & 스케닝 툴로 아주 유명한 프로그램입니다.
물론 우분투도 패키지로 가지고 있기에 apt-get 으로 설치 가능 합니다.

NMAP은 port Scanning 툴로서 호스트나 네트워크를 스캐닝 할 때,아주 유용한 시스템 보안툴인 동시에,
해커에게는 강력한 해킹툴로 사용될 수 있습니다. 참고 : http://coffeenix.net/doc/security/nmap.html


ubuntu nmap
Ubuntu Package nmap (net) =======
Package Versions: 4.03-3 (dapper) / 4.20-1~dapper1 (dapper-backports) / 4.20-1 (feisty) / 4.20-2 (gutsy) / 4.53-1~gutsy1 (gutsy-backports) / 4.53-3 (hardy) / 4.62-1ubuntu1 (intrepid)
Description: The Network Mapper

그런데 nmap 의 최신 버전은 4.75 입니다. 최신 버전을 다운 받아 패키지로 만들어 볼까요
이번 글에서 핵심은 dh_make 입니다.
$ sudo apt-get install dh-make
※ 언더빠 아니고 패키지는 하이픈 입니다. - (jhlee0324님 질문에 삽입 함)

다운로드 : http://nmap.org/download.html
보통 소스 다운시에 다운 링크주소를 오른마우스로 속성 복사후 wget 를 이용 하여 받아 보시기 바랍니다.
$ mkdir nmap && cd nmap
$ wget http://download.insecure.org/nmap/dist/ ... 75.tar.bz2 (wget 이 없을시엔 설치 요망 sudo spt-get install wget )
$ tar xvjf nmap-4.75.tar.bz2 (보통 tgz, tar.gz 은 xvzf 로 bz2 는 xvjf 로 풉니다 . z 와 j )
$ cd nmap-4.75

$ dh_make -r (원본 소스파일 복사 하며 debian 디렉에 필요 파일 생성)
엔터치시면 dh_make는 만들고자 하는 패키지가 어떤 종류인지 물어 보는데 nmap 는 한개의 이진 패키지이므로 s (싱글)을 치고 내용 보고 엔터 치시기 바랍니다.
dh_make 에 대한 자세한 참고 링크 https://help.ubuntu.com/ubuntu/packagin ... elper.html
dh_make 주의점은 한번 실행 한 후엔 또하면 패키지가 온전하게 만들어 질수 없다는 겁니다. 한번 만 실행 하십시요

dh_make 로 만들어진 파일을 좀 보겠습니다.
$ gedit debian/changelog
Code:
nmap (4.75-1) unstable; urgency=low

  * Initial release (Closes: #nnnn)  <nnnn is the bug number of your ITP>

-- bundo <bundo@maria-9>  Tue, 09 Sep 2008 17:19:10 +0900

위와 같은데 아래 처럼 수정 했습니다.
Code:
nmap (4.75-1) hardy; urgency=low

  * Initial release

-- bundo <bundo@bundo.biz>  Tue, 09 Sep 2008 17:19:10 +0900


처음줄에 hardy 패키징 임을 명시 하고 중간 설명 부분인데 좀 지우고 아래 이메일 수정 했습니다. 그옆은 생성 시간 입니다. +9는 UTC +9시간 (한국)
이메일은 처음 dh_make 할때에 dh_make -e bundo@bundo.biz -r 하여 미리 올바른 이메일 입력이 가능 합니다.
위 changelog 파일 참고 주소 : http://www.debian.org/doc/manuals/maint ... -changelog

파일 하나 더 보겠습니다.
$ gedit debian/control

Code:
Source: nmap
Section: unknown
Priority: extra
Maintainer: bundo <bundo@maria-9>
Build-Depends: debhelper (>= 5), autotools-dev
Standards-Version: 3.7.2

Package: nmap
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>

위와 같은데.. Section: net 로 하고 이메일 수정 하고.. Build-Depends 와 Depend를 보시기 바랍니다.
Build-Depends 는 컴파일시 의존 패키지를 Depend는 설치시 에 같이 설치되야 할 의존 패키지를 명시 하는 곳 입니다.
그럼 nmap의 빌드와 의존 패키지는 무엇 일까요?
기존 패키지 소스를 다운 받아 control 파일을 열어 보십시요

Code:
Build-Depends: debhelper (>=5), libgtk2.0-dev, autoconf, flex, bison, libssl-dev, libpcap0.8-dev, libpcre3-dev, binutils-dev, python (>=2.3.5-7), python-all-dev, python-central

Depends: ${shlibs:Depends} 설치시 의존 패지키는 없고 컴파일시 의존 패키지는 많군요
Build-Depends 를 위와 같이 고치시기 바랍니다.
그리고 한김에 Description: 이하 줄도 복사하여 어떤 패키지 인지 명시 하여 보시기 바랍니다. IPAQ. 까지
위 control 파일 참고 주소 : http://www.debian.org/doc/manuals/maint ... eq.ko.html

※ 위수정 없이 컴파일 해도 컴파일은 됩니다. 단 저장소에 업하여 다른이가 사용 가능한 패키지가 되려면
  제대로 두 파일 수정과 다음에 쓸 GPG키 사인이 있어야 합니다.

컴파일과 설치

저번에 했던 changelog에서 버전업은 왜 필요 없을까요?
이번에 하는 nmap 버전이 윌등 높기 때문입니다. ^^

$ fakeroot debian/rules binary
컴파일시 오류나는 분은 $ dpkg-buildpackage -rfakeroot 로 설치 안된 컴파일 의존 패키지 있나 확인 바랍니다.
$ cd .. && sudo dpkg -i nmap*.deb

최신 버전 nmap 잘 활용 해 보시기 바랍니다. (타 네트웍 포트 스캔 하지는 마세요!)
$ namp -A bundo.biz
80포트에 무엇이 설치 되어 있나요? WIndows가 운영체제 라는데요? 사실 리눅데탑이며 속임수 입니다.
본인 확인은 nmap localhost 또는 nmap -A localhsot

다음엔 업스트립 패키지에 필요한 GPG 키 만들기와 인증을 해보겠습니다.


맨 위로 이동
 

오프라인
글올림: 2008/09/09 화 8:42 pm 
회원 아바타
 e-메일  www  개인정보

가입일: 2008/07/30 수 4:19 pm
글: 1468
사는 곳: Seoul, Korea
앗... 이거 하루에 진도가 빠른데요???

어여 퇴근하고 싶지만 이거 오늘은 작정하고 야근 모드 돌입이라... ㅠㅠ

리더에서 별표 추가해야겠네요.

_________________
재성才誠 LT blog, ubuntu, Wiki, Twitter

E-mail, MSN, Gtalk, Wave jaesung (at) liberotown (dot) com
Skype bang.jaesung
IRC 재성 @irc.hanirc.org #ubuntu, Jaesung @irc.ubuntu.com #ubuntu-ko
ASUS F83Vf-VX009V Intel Core2Duo P8700, RAM 4GB, GeForce GT 220M


맨 위로 이동
 

오프라인
글올림: 2008/09/10 수 12:19 am 
회원 아바타
 e-메일  개인정보

가입일: 2008/06/17 화 3:39 pm
글: 10
앗... 이거 하루에 진도가 빠른데요??? X2
뼈가 되고 살이 될듯한 강의같습니다.
앞으로도 잘 부탁드립니다.


맨 위로 이동
 

오프라인
글올림: 2008/09/10 수 3:24 am 
회원 아바타
 e-메일  www  개인정보

가입일: 2008/08/20 수 11:25 pm
글: 79
Build-Depends 같은 의존도를 정확히 기입하고 싶을때, 사용하는 라이브러리는 아는데 그 라이브러리가 어느 패키지에 있는지 모를경우, 아래의 스크립트를 통해 패키지 명을 알아낼수있습니다. 기존에 제공되는 템플릿없이 수동으로 직접 구성할경우 이게 필요하더군여.

적절한 이름을 줘서 파일을 만들고, 실행권한을 주세요

$ vim find-package.sh
Code:
#!/bin/bash
if [[ "$1" != "" ]]; then
   objdump -p $1 | sed -n -e's/^[[:space:]]*SONAME[[:space:]]*//p' | sed -e's/\([0-9]\)\.so\./\1-/; s/\.so\.//'
else
   echo
   echo "$0 : find package name for shared library"
   echo
   echo "     Usage: $0 path-of-shared-library (e.g: $0 /usr/lib/libGL.so.1)"
   echo
fi



실행권한을 줍니다. 그냥 실행하면, 사용법을 보여줍니다:
Code:
$ chmod +x find-package.sh
$ ./find-package.sh

./find-package.sh : find package name for shared library

     Usage: ./find-package.sh path-of-shared-library (e.g: ./find-package.sh /usr/lib/libGL.so.1)

aj@t61p:~$


/usr/lib/libGL.so.1 이 어느 패키지에 속해있는지 알고싶을때, 패키지명을 알려줍니다:
Code:
$ ./find-package.sh /usr/lib/libGL.so.1
libGL1


어떤 실행파일이 어느 공유라이브러리와 연결되어있는가..를 보는 명령은 ldd 로 알수있습니다:
Code:
$ ldd /bin/ls
   linux-gate.so.1 =>  (0xb7f46000)
   librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7f25000)
   libselinux.so.1 => /lib/libselinux.so.1 (0xb7f0c000)
   libacl.so.1 => /lib/libacl.so.1 (0xb7f04000)
   libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7db5000)
   libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7d9d000)
   /lib/ld-linux.so.2 (0xb7f47000)
   libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7d99000)
   libattr.so.1 => /lib/libattr.so.1 (0xb7d95000)


맨 위로 이동
 

오프라인
글올림: 2008/09/10 수 7:31 am 
회원 아바타
 e-메일  www  개인정보

가입일: 2008/03/31 월 5:47 pm
글: 4732
andrwj 님의 글:
/usr/lib/libGL.so.1 이 어느 패키지에 속해있는지 알고싶을때, 패키지명을 알려줍니다:
Code:
$ ./find-package.sh /usr/lib/libGL.so.1
libGL1



andrwj님 고급적인 글포스팅에 감사 드립니다 ;)
dpkg -S 와의 차이가 어떤지 궁금 하여 find-package.sh스크립과 dpkg -S로 테스트 해보았는데...

Code:
$./find-package.sh /usr/lib/libGL.so.1
libGL1


Code:
$dpkg -S  /usr/lib/libGL.so.1
libgl1-mesa-glx: /usr/lib/libGL.so.1

어느 패키지에 속해 있는지 알기 위해선 오히려 dpkg -S 가 낳은거 아닌지요?


맨 위로 이동
 

오프라인
글올림: 2008/09/10 수 10:34 am 
회원 아바타
 e-메일  www  개인정보

가입일: 2008/08/20 수 11:25 pm
글: 79
강분도 님의 글:
andrwj님 고급적인 글포스팅에 감사 드립니다 ;)
dpkg -S 와의 차이가 어떤지 궁금 하여 find-package.sh스크립과 dpkg -S로 테스트 해보았는데...

Code:
$./find-package.sh /usr/lib/libGL.so.1
libGL1


Code:
$dpkg -S  /usr/lib/libGL.so.1
libgl1-mesa-glx: /usr/lib/libGL.so.1

어느 패키지에 속해 있는지 알기 위해선 오히려 dpkg -S 가 낳은거 아닌지요?


^_^ 네. 맞네여.
저도 패키지를 만들려고는 싶었는데 데비안 유틸을 다 잘 몰라서 삽질하다가 알게되서 올렸던것입니다.
그러므로, 제가 고급적인 글포스팅(?)이 아닌것이 드러난거지요 ^^ㅎㅎ


맨 위로 이동
 

오프라인
글올림: 2009/06/13 토 10:08 am 
 e-메일  개인정보

가입일: 2009/01/24 토 11:03 am
글: 439
좋은 강좌 감사드립니다.

의문사항이 있는데 질문게시판에 올리는것 보다 이곳에 남기는게 좋을듯 하여
질문을 좀 드려볼까 합니다.

1장의 apt-get build-src를 보고 이런게 있구나 하고 감동을 했었는데..
이게 모든 컴파일에 쓰일 수는 없는거였군요...약간 아쉽네요...

강분도 님의 글:
$ dh_make -r (원본 소스파일 복사 하며 debian 디렉에 필요 파일 생성)
엔터치시면 dh_make는 만들고자 하는 패키지가 어떤 종류인지 물어 보는데 nmap 는 한개의 이진 패키지이므로 s (싱글)을 치고 내용 보고 엔터 치시기 바랍니다.
dh_make 에 대한 자세한 참고 링크 https://help.ubuntu.com/ubuntu/packagin ... elper.html
dh_make 주의점은 한번 실행 한 후엔 또하면 패키지가 온전하게 만들어 질수 없다는 겁니다. 한번 만 실행 하십시요


이부분에서 질문이 있습니다.

일부 소스의 경우, debian이라는 디렉토리가 아예 존재하지 않던데
그럴 경우에도 dh_make를 사용해도 되는걸까요?
또 어떤 소스의 경우, debian경로가 있다고 해도, dh_make가 돌아가지 않던데,
그럴경우 ./configure 스크립트를 돌린후 하면 되더군요.
이게 데비안계열에서도 정상적인(?) 절차인지 궁금합니다.

또 한개의 이진 패키지라고 하셨는데...
이걸 컴파일 하기 전에 어떻게 알 수 있을까요?
만약 dh_make에서 실수를 했다거나, 중간에 오류가 났거나
어떤 사유가 있어서 다시 dh_make를 하고자 할 경우는
특정 파일을 지운후 다시 돌려야 할까요?

그럼 답변 부탁드리겠습니다.

_________________
mount -t KRW /earth/money /home/my/account
find /earth -name girl -size 165 -type glamour | grep -v boyfriend > /home/my/tasklist


맨 위로 이동
 

오프라인
글올림: 2009/06/13 토 1:20 pm 
회원 아바타
 e-메일  www  개인정보

가입일: 2008/03/31 월 5:47 pm
글: 4732
yanagi 님의 글:
일부 소스의 경우, debian이라는 디렉토리가 아예 존재하지 않던데
그럴 경우에도 dh_make를 사용해도 되는걸까요?
또 어떤 소스의 경우, debian경로가 있다고 해도, dh_make가 돌아가지 않던데,
그럴경우 ./configure 스크립트를 돌린후 하면 되더군요.
이게 데비안계열에서도 정상적인(?) 절차인지 궁금합니다.
debian 디렉과 파일이 있는경우는 데비안 우분투 패티지 소스이거나
아님 개발자가 데비안 / 우분투 환경에서 개발 하는 거겠지요
debian디렉은 단순히 디렉을 말하는거가 아닙니다. 거기 패키지하기위한 정보와 파일들을 말하는건데
있는경우 dh_make 가 필요가 없지요 수정해 쓰면 되니까...

yanagi 님의 글:
또 한개의 이진 패키지라고 하셨는데...
이걸 컴파일 하기 전에 어떻게 알 수 있을까요?
만약 dh_make에서 실수를 했다거나, 중간에 오류가 났거나
어떤 사유가 있어서 다시 dh_make를 하고자 할 경우는
특정 파일을 지운후 다시 돌려야 할까요?
보통 패키징은 그프로그램을 사용해보고 좀 아는 경우 해야 합니다.
이경우 라이브러리인지 싱글인지 등을 알수 있지요
처음 보는 소스 경우는 리드미와 개발 홈페이지를 참고 해야 겠지요
그리고 새로 만들경우는 debian 디렉을 지우고 시도 하시길 권합니다.

P.S. : 저도 패키지에 대해서 깊이 있게 아는건 아닙니다. 소스에 따라 또 다릅니다. 제가 제시한 문서와 링크 참고 하시면서 더많이 해보시다 보면 나름대로 노하우가 생기실 것 입니다.


맨 위로 이동
 

예전 글 보기:  정렬 순서  
새 글타래 올리기 댓글 달기  [ 글: 8 개 ] 


접속중인 사람

이 포럼에 접속중인 사람: 가입한 회원 없음, 손님 1 명


이 포럼에서 새 글타래를 올릴 수 없습니다.
이 포럼에서 댓글을 달 수 없습니다.
이 포럼에서 자신의 글을 수정할 수 없습니다.
이 포럼에서 자신의 글을 지울 수 없습니다.
이 포럼에서 파일을 첨부할 수 없습니다.

찾기:
포럼 이동:  
Powered by phpBB © 2000, 2002, 2005, 2007, 2010 phpBB Group  
Design By Poker Bandits  
translated by ubuntu-ko