허니몬의 IT 이야기/리눅스 이야기, 우분투

왜 64bit 를 제대로 지원하지 않는거야!!?

  현재 내가 사용하고 있는 우분투는 Ubunutu 10.04 LTS(Lucid Lynx) 64bit 다. 
  가끔 게임을 할 때에나 Windows7 으로 접속해서 사용할 뿐이지, 일반적인 웹서핑과 프로그래밍은 리눅스 환경에서 사용하고 있다. 6개월마다 새로운 버전을 내놓는 우분투의 변화하는 모습을 보는 즐거움과 함께, 무료 운영체제지만 점점 편리해지는 설치와 사용환경에 감탄을 금치 못하고 있다. Debian 계열인 우분투에서는 .deb(http://en.wikipedia.org/wiki/Deb_(file_format))파일을 이용하여 프로그램들을 손쉽게 설치하고 삭제할 수가 있다. 아직은 32bit 가 주류이기 때문에 64bit 체제인 내 데탑에서는 설치가 어려웠다. 그 대표적인 예로 Adobe의 Air installer 를 설치하기가 어려웠다. 인터넷 검색을 통해 찾은 해결방법으로는 설치는 되지만, 업데이트 점검만 하면 '손상된 패키지'라면서 삭제를 요구하는 시냅틱 패키지 관리자가 야속하기만 했다. 그러다가 우연찮게 32bit deb 파일을 64bit deb 파일로 변환할 수 있다는 것을 발견했다.
2011/02/09 - [허니몬의 IT 이야기/리눅스 이야기, 우분투] - Install Adobe AIR on 64-bit Ubuntu 10.10, 10.04 에서도 잘 됨
  그리고 문득 쉘 스크립트로 만들 수도 있겠다는 생각을 하게 된다.

그렇다면 32bit deb 파일을 64bit 지원하는 deb 파일로 만들면 되지!!
쉘 스크립트는 윈도우의 배치파일과 비슷한 성격을 가지고 있다. 작성요령만 어느정도 숙지를 하면 손쉽게 작성해서 리눅스 환경에서 반복되는 명령어 처리를 손쉽게 할 수 있는 등 다양한 편의를 제공한다. 우분투를 쓰면서 조금의 관심을 가지고 있었는데, 이번 경험을 통해 쉘 스크립트에 대한 공부 하기로 했다.
페이지에 가이드북 pdf 파일에 대한 링크도 올려놨고, 구글 문서도구에도 올려서 수시로 볼 수 있도록 해놨다.
구글문서도구 : Bash Guide for Beginners
구글문서도구 : Advanced Bash-Scripting Guide
#! /bin/sh
################################################################
# 32bit deb Change to 64bit deb
################################################################
#원본파일명
ORIGIN_DEB_FILE_NAME=$1
#변환파일명
CHAGE_DEB_FILE_NAME=$2

description() {
	echo '사용방법 설명 : ./change.sh 원본파일 변환파일'
	echo 'ex ) honeymon:~$ ./change.sh a.deb b.deb'
	echo 'So, deb file change 32bit to 64bit'
}

# 임시 디렉토리(tmp) 생성후에 32bit deb 압축을 풀고 i386으로 된
# Architecture를 all로 변경한 후에 다시 리팩키징하는 함ㅅ
changeDeb() {
	#make tmp directory
	mkdir tmp
	
	#Extract the deb file to the tmp dir
	dpkg-deb -x $ORIGIN_DEB_FILE_NAME tmp
	
	#Extract the control files :
	dpkg-deb --control $ORIGIN_DEB_FILE_NAME tmp/DEBIAN
	
	#Change the Architecture parameter from "i386" to "all";
	sed -i "s/i386/all/" tmp/DEBIAN/control
	
	#Repackage the deb file :
	dpkg -b tmp $CHAGE_DEB_FILE_NAME

	#Remove tmp directory :
	rm -rf tmp
}

if [ $# = 0 ]; then
	description
else
	changeDeb
fi
작성한 후, 
chmod +x change.sh
으로 실행속성을 부여한다.

change.sh 를 이용하여 adobeair.deb 을 adobeair_64.deb 으로 변환한 내용

그리고는 간단하게
sudo dpkg -i adobeair_64.deb
해주면 설치가 간단히 끝난다.


스크립트의 사용법을 조금 익히다

쉘스크립트를 이용해서 만들면 편하다. 앞으로 종종 32bit 설치파일 을 설치하고 싶을 때 위의 스크립트를 이용해서 간단하게 만들어주면 되겠다. 그리고 틈나는 대로 이것저것 만들어볼 수 있는 기회가 있으면 좋겠구나. +_+)
구글문서도구 : Bash Guide for Beginners
구글문서도구 : Advanced Bash-Scripting Guide