Tag: Ubuntu

ubuntu repository mirror

간단하게 apt-mirror를 이용해서 apt repository mirror를 구축하는 것에 대해 정리해본다. OpenStack을 설치하는데, 원격으로 패키지를 가져오는 것이 영 맘에 안들어 간단히 구축해본 것이다.

물론 현재는 squid를 이용한 proxy를 apt-get에서 이용하도록 하고 있지만, 그래도 외부로 나가는 traffic이 있으니.. 그것을 완전히 없애려고 하는 것이다.

rsync를 이용하는 방법도 있으나, 이것은 전체를 통체로 가져오는 것이라 크기가 너무 크다. 물론 필요한 것만 가져온다고 하지만, 그게 실상 쉽지 않다. ubuntu의 경우는 .pool에 실제 파일이 들어가 있는데, 여기서 구분하기가 만만치 않아서...

$ apt-get install apt-mirror

/etc/apt/mirror.list 파일은 적당히 편집하여 미러링 원하는 레포지트리를 선택한다.

deb-amd64 http://apt.opscode.com precise-0.10 main testing
deb-amd64 http://apt.opscode.com quantal-0.10 main testing
deb-i386 http://apt.opscode.com precise-0.10 main testing
deb-i386 http://apt.opscode.com quantal-0.10 main testing
clean http://apt.opscode.com

deb-amd64 http://ubuntu-cloud.archive.canonical.com/ubuntu/ precise-updates/folsom  main
deb-amd64 http://ubuntu-cloud.archive.canonical.com/ubuntu/ precise-proposed/folsom  main
deb-i386 http://ubuntu-cloud.archive.canonical.com/ubuntu/ precise-updates/folsom  main
deb-i386 http://ubuntu-cloud.archive.canonical.com/ubuntu/ precise-proposed/folsom  main
clean http://ubuntu-cloud.archive.canonical.com/ubuntu
  • apt-mirror는 기본으로 구동되는 OS의 arch에 맞춰서 해당 패키지만 가져오도록 되어있다. 따라서 deb-[amd64|i386]처럼 직접 아키텍쳐를 지정한다.

OpenStack을 chef로 자동하하기 때문에 chef repository를... OpenStack은 cloud-archive를 가져오기로 했다.

choe@choe-pc:~/public_html$ du -sh /var/spool/apt-mirror/mirror/*
22M	/var/spool/apt-mirror/mirror/apt.opscode.com
357M	/var/spool/apt-mirror/mirror/ubuntu-cloud.archive.canonical.com

설정이 되었으면 미러링이 잘 되는지 테스트 해본다.

$ sudo apt-mirror

별 문제 없다면 주기적으로 미러링을 하기 위해서 crontab 파일을 수정한다. apt-mirror 패키지에서 기본적인 crontab 파일을 만들어 놨지만, 주석처리되어서 실제로 미러링되지 않는다.

$ sudo vi /etc/cron.d/apt-mirror

참고로 ubuntu 공식 패키지 미러링은 하루에 4번 하는 것을 권장하고 있다. 따라서 crontab도 6시간 간격으로 지정해 놓으면 되겠다.
이제 미러링 된 파일을 웹 서버에 링크하면 된다.

$ ln -s /var/spool/apt-mirror/mirror ~/public_html/apt-mirror

ps. precise의 전체 패키지(precise, precise-updates, precise-security, precise-proposed, precise-backports/ main, multiverse, universe, restricted)는 약 80G 정도 소요된다.


ubuntu: eth1에 기본 gateway 두기..

eth0, eth1이렇게 2개 NIC가 있는 상황에서 거의 기본으로는 eth0에서 public internet이 나가도록 설정이 될 겁니다. 대부분 그렇지요. 그런데 필요에 따라서는 eth1가 public internet인 경우가 있습니다. 그리고 eth0는 다른 목적으로 사용되는 경우로 말입니다.

이 경우 CentOS의 경우는 그냥 아무 생각없이 /etc/sysconfig/network-script/ifcfg-eth1에 설정하면 eth0 설정한거 무시되면서 eth1의 설정이 먹히는 데 Ubuntu의 경우는 안그럽니다.

auto eth2
iface eth2 inet static
    address 10.100.0.11
    netmask 255.255.255.0
    gateway 10.100.0.1

이렇게 두면 이녀석이 eth2의 gateway 설정을 알어먹지 못합니다. 그래서 수동으로 해 줘아합니다. 근데 수동으로하면 골치아프죠. 그럴땐 post-up, pre-down으로..

auto eth0
iface eth0 inet static
   address 10.200.1.11
   netmask 255.255.255.0
   dns-nameservers 168.126.63.1

auto eth1
    iface eth1 inet static
    address 10.100.0.11
    netmask 255.255.255.0
    post-up route add default gw 10.100.0.1
    pre-down route del default gw 10.100.0.1

이렇게 하면 되지요.


gnome-settings-daemon이 CPU 잡아먹는 증상

갑자기 컴퓨터가 느려져서 이상하다고 보고있는데 gnome-settings-daemon이 CPU르 엄청 먹는거다.. 게다가 자세히보니 키보드 Numlock 키가 켜졌다가 꺼졌다가...

https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/969359에 있는데로

sudo mv /usr/lib/gnome-settings-daemon-3.0/keyboard.gnome-settings-plugin ~/

하고 재부팅하니 조용하다...

Ubuntu 너 이럴래? 아니 Gnome인가?


CentOS bootstraping in Ubuntu

$ apt-get install yum rpm python-m2crypto
$ mkdir -p /tmp/centos/var/lib/rpm
$ rpm --root /tmp/centos --initdb

$HOME/.rpmdb 가 만들어지는데 그거는 마지막 삭제한다.

rpmfind.net에서 원하는 버전의 rpm 찾아서 다운로드

$ wget ftp://195.220.108.108/linux/centos/5.7/os/x86_64/CentOS/centos-release-5-7.el5.centos.x86_64.rpm
$ rpm -ivh --force-debian --nodeps --root /tmp/centos centos-release-5-7.el5.centos.x86_64.rpm
$ ln -s /tmp/centos/etc/pki /etc/pki
$ yum --installroot /tmp/centos install yum
$ mount -t proc foo /tmp/centos/proc
$ mount -t sysfs foo /tmp/centos/sys
$ chroot /tmp/centos /bin/bash --login
$ rm -rf /home/choe/.rpmdb # 위에서 initdb한것 지우기
$ rpm --initdb
$ echo nameserver 168.126.63.1 > /etc/resolv.conf
$ yum install yum
$ yum install vim-minimal less

참고: http://www.lucas-nussbaum.net/blog/?p=385


rsyslog가 CPU를 100%먹는 증상

Ubuntu 11.04 natty 서버가 있는데, 여기서 rsyslog가 CPU를 100% 먹는 증상이 발생한다. syslog에 아래 메시지가 지속적으로 쌓이면서 생기는 현상이다.

Cannot read proc file system: 1 - Operation not permitted.

특정 커널과 rsyslog의 특정 버전의 조합이면 이러한 문제가 발생한다고.. 결론은 커널을 업그레이드 하단거, 아니면 rsyslog를 업그레이드 하던가...

그런데 커널을 업그레이드하면 리부팅해야하고... 돌아가는 서비스는 중단할 수 없고.. 결국은 rsyslog를 downgrade하기로 했다.

조사해보니 natty에 있는 버전은 모두 같은 버전이라 maverick으로 가기로 했다. 그래서 sources.list를 아예 maverick으로 이동..

$ perl -p -i -e "s/natty/maverick/g" /etc/apt/sources.list
$ apt-get update

그리고 어떤 버전이 있는지 확인해보고..

$ apt-cache show rsyslog | grep Version
Version: 4.6.4-2ubuntu4
Version: 4.6.4-2ubuntu4.1
Version: 4.2.0-2ubuntu8

그 버전으로 다운그레이드한다.

$ apt-get install rsyslog=4.2.0-2ubuntu8

그리고 나중에 혹시나 자동으로 업그레이드 될 지 모르니 업그레이드 금지

$ echo 'rsyslog hold' | dpkg --set-selections

스크립트로 한방

#!/bin/bash
release=`lsb_release -c | awk '{print $2}'`
if [ "$release" != 'natty' ]; then
        echo 'rsyslog download only apply to natty!'
        exit
fi

if [ `grep -c 'natty' /etc/apt/sources.list` == 0 ]; then
        echo 'something wrong in sources.list'
        exit
fi

perl -p -i -e 's/natty/maverick/g' /etc/apt/sources.list
apt-get update
apt-get install -y --force-yes rsyslog=4.2.0-2ubuntu8
perl -p -i -e 's/maverick/natty/g' /etc/apt/sources.list
echo 'rsyslog hold' | dpkg --set-selections

VirtualBox에서 Unubtu를 복제할 경우의 eth0의 문제

최근 VirtualBox를 가지고 놀고 있는데, 너무 자주 설치하는 것 같아서 기본 시스템을 만들어 놓고 거기서 복제하는 방식으로 가려고 했다.

그런데 복제를 하면 eth0가 사라지고 eth1이 생기는 것 아닌가? 이러니 dhcp로 설정을 하더라도 제대로 네트웍 카드를 못찾는 문제가 발생한다.

수동으로 이 문제를 해결하려면 lshw 명령으로 네트웍 카드의를 확인하고 /etc/network/interface 파일을 수정하면 된다.

$ lshw -class network

/etc/network/interface:
auto eth0
iface eth0 inet static
	address 115.68.55.200
	netmask 255.255.255.0
	network 115.68.55.0
	broadcast 115.68.55.255
	gateway 115.68.55.1
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers ?

우선 수동으로 해결하고 문제가 뭔지 잠깐 구글링 해보니 역시나 문제는 우분투 시스템이었다.

Duplicated Virtual Machines Have Same IP Address

Ok, that Ubuntu issue is a known problem. It saves the assignment of MAC <==> ethX using an udev rule. Have a look at /etc/udev/rules.d and you will find a file 70-persistent-net.rules there. You can savely remove this file. This file is auto-generated by /lib/udev/rules.d/75-persistent-net-generator.rules. You can remove that file as well. From now on, the guest will no longer store the assignment between the MAC and ethX interface.

정리하자면 우분투는 MAC 주소화 ethX를 mapping하고 있고, 그 데이터는 /etc/udev/rules.d/70-persistent-net.rules에 있는 것이구나.

잠깐 더 조사해보니 그냥 /etc/udev/rules.d/70-persistent-net.rules를 지워버리는 건 의미 없다. 어짜피 그 파일은 현재 상태를 NIC와 ethX를 지정해 놓는 파일이고, 실제로 이 짓을 하는 것은 /lib/udev/write_net_rules 다.

$ chmod -x /lib/udev/write_net_rules

근데 잠깐 더 생각해보니, 이 기능이 있는건 NIC가 막 바뀌는 경우는 해당 디바이스와 네트웍 설정을 기억하게 해서 괜찮은 기능이겠다. 없다면 물리적 순서에 의해서 eth0부터 정해질 것이고, 이 순서가 바뀔 가능성이 있는 시스템이면 네트웍 잡기가 혼란스럽겠다.

결국 실행권한을 주는 것 보다는, 네트웍 환경이 바뀌면 저 파일을 지워버리자~


Checking battery state…

아침에 우분트 머신을 켜는데 "Checking battery state...."라는 메시지를 뱉은 후 멍하니 아무것도 안한다... 열심히 찾아보다가 한 방에 끝냈다.

$ sudo apt-get install --reinstall gdm xorg

아침부터 생 쑈를..~


Ubuntu 설치후 한글이 안이쁠때..

우분투를 처음 설치하면 한글 폰트에 Antialias가 설정되어 있지 않은 상태다. 아주 예전 한글이 안티앨리어스가 더 안이뻤을 때 이야기인데 아직도 이게 기본값이여서 그런건데...

간단하게 /etc/fonts/conf.d/29-language-selector-ko-kr.conf 파일을 날려버리면 된다. 안전하게는 이름을 다른 것으로 변경하면 되겠지!!


Ubuntu 휴지통 아이콘 보이기

이상하게 우분투 시스템에 휴지통 아이콘이 없어서 찾아봤더니 아래처럼 하면 휴지통이 보인다..
http://www.howtogeek.com/howto/ubuntu/add-the-trash-can-icon-to-your-ubuntu-desktop/
http://zodiac12k.egloos.com/1382797
그리고 휴지통을 열었더니, 지금까지 삭제한 파일이 거의 5G가 있네... 숨어있는 5G를 찾았다.!

근데 왜? 삭제하면 휴지통으로 보내면서 휴지통이 기본으로 안보이게 한거야!!


Web Terminal ajaxterm

글쎄 오늘 네트웍이 불안하다. ssh가 계속 연결이 끊긴다. 그래 네트웍 공사중이라 이해는 하겠다만 일을 할 수가 없잖아!!!

그래서 웹에서 구현되는 터미널을 혹시나하고 뒤져보니 바로나온다. http://en.wikipedia.org/wiki/Web-based_SSH#Open_source_examples

우분투 패키지있는 ajaxterm 설치하고 실행하니 바로 되는구나~ 멋진 세상이다.

$ apt-get install ajaxterm
$ service start ajaxterm

http://localhost:8022/ 로 연결하니 그냥 뜬다.. 물론 로그인해야하는것이고, 속도는 물론 느리지만 급한김에 쓸만한 놈인듯하다.


  • Copyright © 1996-2010 Your wish is my command. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress