apt-mirror 서버를 설치하고 사용하고 있습니다.
apt-get의 사용이나 업데이트 등은 잘 동작하고 있습니다.
다음과 같은 의문점이 있어서 질문드립니다.
apt-mirror로 패키지 업데이트는 불가능한지…
만약 mirror서버를 통한 8.10 -> 9.04의 패키지 업데이트가 가능하다면
어떤 설정이 필요한지 궁금합니다.
apt-mirror 서버를 업데이트 할 경우, 다음과 같은 에러가 발생합니다.
모든 파일을 다 다운로드 받은 후에 발생하는데요…
이것이 무슨 에러인지, 해결방법은 무엇인지 알려주시면 감사하겠습니다.
[code:2s5vmi5g]
apt-mirror: can’t utime /home/user/share/var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu/dists/intrepid-security/Contents-i386.gz at /usr/bin/apt-mirror line 494.
[/code:2s5vmi5g]
경로가 좀 지저분합니다만, 경로명에는 문제없는듯 합니다.
/usr/bin/apt-mirror의 494라인의 주변은 대략 다음과 같습니다.
[code:2s5vmi5g]
Copy skel to main archive
sub copy_file {
my ($from, $to) = @_;
my $dir = dirname($to);
return unless -f $from;
mkpath($dir) unless -d $dir;
unless(copy($from, $to)) {
warn("apt-mirror: can’t copy $from to $to");
return;
}
my ($atime,$mtime) = ( stat($from) ) [8, 9];
utime($atime, $mtime, $to) or die("apt-mirror: can’t utime $to");
}
[/code:2s5vmi5g]
apt-mirror 서버를 통해 업데이트를 할 경우,
Description of update가 표시되지 않습니다.
(첨부 파일 참조)
apt-mirror를 사용할 경우 원래 그런 것인지,
혹시 별도의 설정이 필요하다면 어떤 설정이 필요한지
알려주시면 감사하겠습니다.
자다 깨서 하는 답변이라 좀 횡설수설이 있을 수 있지만서도…
우선 질문이 좀 이해가 안 가는 것이…
apt-mirror는 보통 많이 쓰는 ftp mirror나 www mirror 같이 다른 사이트에 있는 내용물(이 경우는 패키지 저장소에 있는 패키지들과 관련 정보들)을 자신의 컴퓨터로 말 그대로 거울로 본 뜨듯이 똑같이 보이는 사본을 만들어 저장하는 것입니다.(양이 엄청나겠죠? ) 이건 단지 패키지와 관련 정보들의 로컬 복사본을 만드는 것이기 때문에 이 복사본에 있는 패키지를 설치하거나 하려면 당연히 apt-mirror가 아닌 dpkg나 apt-get이나, 또는 그것들의 front-end인 aptitude나 synaptic 같은 것을 사용해야 합니다. 또, 미러 서버는 항상 그렇지만, 원본 서버와 동일하거나 혹은 동격의 접근 방법을 주변 다른 컴퓨터들에게 제공해야 합니다. 사실 실제로 패키지 파일들을 긁어오는 것보다 이것이 더 귀찮은 작업일 수 있습니다. 어쨌든…
그런데 질문에는 apt-mirror를 이미 사용중이라고 하시는데, 여기에 apt-mirror를 통한 패키지 업데이트가 가능한지 물으시니 좀 이해가 가지 않네요. apt-mirror로 8.04 판의 파일들을 모두 (주기적으로) 미러하였다면 실제로 패키지 업데이트나 설치등을 하는 컴퓨터에서는 원본 소스(예를 들면 archive.ubuntu.com 같은.) 주소를 사본 소스 주소(apt-mirror가 실행돼서 패키지 파일들을 긁어 놓은 장소)로 바꾸기만 하면 돼야 합니다. 제대로 안된다면 미러가 제대로 안 된 것이라고 봐야겠지요. 마찬가지로 변경 정보가 나오는 것도 변경정보가 들어 있는 부분(저는 이게 어느 부분인지 모르겠는데요)을 제대로 미러해야 나오겠죠.
그리고 8.04 에서 9.04로 판 올림 같은 것은, 당연하게도 8.04와 9.04의 패키지 파일들과 패키지 정보 파일들을 모두 제대로 미러했다면 실제 설치하는 컴에서는 문제 없이 돼야 합니다.
마지막에 utime 업데이트하는 문제는, 미러 서버이기 때문에 원본 파일의 여러가지 timestamp들을 모두 "똑같이" 만들어 줘야 합니다. 그런데 이런 것은 관리자 계정(root)이거나 파일의 소유자와 같은 소유자 ID로 실행되는 프로세스로 해야 합니다. 스크립트를 실행하는 계정이 제대로 맞는지를 우선 확인하셔야 할 것 같네요.
[quote="Lbird":l7s29wi8]apt-mirror는 보통 많이 쓰는 ftp mirror나 www mirror 같이 다른 사이트에 있는 내용물(이 경우는 패키지 저장소에 있는 패키지들과 관련 정보들)을 자신의 컴퓨터로 말 그대로 거울로 본 뜨듯이 똑같이 보이는 사본을 만들어 저장하는 것입니다.(양이 엄청나겠죠? ) 이건 단지 패키지와 관련 정보들의 로컬 복사본을 만드는 것이기 때문에 이 복사본에 있는 패키지를 설치하거나 하려면 당연히 apt-mirror가 아닌 dpkg나 apt-get이나, 또는 그것들의 front-end인 aptitude나 synaptic 같은 것을 사용해야 합니다. 또, 미러 서버는 항상 그렇지만, 원본 서버와 동일하거나 혹은 동격의 접근 방법을 주변 다른 컴퓨터들에게 제공해야 합니다. 사실 실제로 패키지 파일들을 긁어오는 것보다 이것이 더 귀찮은 작업일 수 있습니다. 어쨌든…[/quote:l7s29wi8]
좋은 말씀 감사합니다.
참고로 약 50기가정도 나오더군요.
필요에 의해 사용중입니다.
[quote="Lbird":l7s29wi8]그런데 질문에는 apt-mirror를 이미 사용중이라고 하시는데, 여기에 apt-mirror를 통한 패키지 업데이트가 가능한지 물으시니 좀 이해가 가지 않네요. apt-mirror로 8.04 판의 파일들을 모두 (주기적으로) 미러하였다면 실제로 패키지 업데이트나 설치등을 하는 컴퓨터에서는 원본 소스(예를 들면 archive.ubuntu.com 같은.) 주소를 사본 소스 주소(apt-mirror가 실행돼서 패키지 파일들을 긁어 놓은 장소)로 바꾸기만 하면 돼야 합니다. 제대로 안된다면 미러가 제대로 안 된 것이라고 봐야겠지요. 마찬가지로 변경 정보가 나오는 것도 변경정보가 들어 있는 부분(저는 이게 어느 부분인지 모르겠는데요)을 제대로 미러해야 나오겠죠.[/quote:l7s29wi8]
미러 서버를 구성하는 방법도 여러가지가 있더군요.
바이너리만 미러하는 방법, 소스만 빼고 미러하는 방법
security update는 미러하지 않는 방법 등등…
apt-mirror를 써서 모든 설정을 다 했다고 생각하는데
(그래서 원하는 기능은 모두 동작하는데)
일반 저장소를 사용할때처럼 패키지 업데이트는 표시가 되질 않더군요.
(물론 이 미러 서버를 이용하는 다른 호스트들에서 말이지요).
제 상상이지만 8.10 -> 9.04 등으로의 업데이트에 관한 파일은
보통 미러 서버가 가지고 있는 디렉토리에 저장되지 않는듯 합니다.
뭔가를 설정을 해야 나오던지, 아니면 apt-mirror로 미러 서버를 만들었을 경우는
8.10->9.04의 업데이트는 불가능하다던지 둘중의 하나가 아닐까 해서 질문드렸습니다.
즉, 당연히 가능해야 한다고 하셨는데,
그게 사실이라면 어떤 추가 설정이 필요한지를 질문드린것입니다.
변경정보가 들어있는 부분도 마찬가지 입니다.
저도 변경정보가 어디 들어있는지 모르겠습니다.
그걸 손으로 옮겨야 하는지, 아니면 미러 서버에서는 변경정보 제공을 지원하지 않는지
당연히 지원한다면 어떤 설정을 해야 하는지 질문 드린것입니다.
[quote="Lbird":l7s29wi8]마지막에 utime 업데이트하는 문제는, 미러 서버이기 때문에 원본 파일의 여러가지 timestamp들을 모두 "똑같이" 만들어 줘야 합니다. 그런데 이런 것은 관리자 계정(root)이거나 파일의 소유자와 같은 소유자 ID로 실행되는 프로세스로 해야 합니다. 스크립트를 실행하는 계정이 제대로 맞는지를 우선 확인하셔야 할 것 같네요.[/quote:l7s29wi8]
답변 감사드립니다.
아직 해보지는 않았지만 말씀을 들어보니 뭔가 감이 오는군요.
혹시나 해결되지 않으면 다시 질문드리겠습니다.
[quote="yanagi":2g5adpss]
제 상상이지만 8.10 -> 9.04 등으로의 업데이트에 관한 파일은
보통 미러 서버가 가지고 있는 디렉토리에 저장되지 않는듯 합니다.
뭔가를 설정을 해야 나오던지, 아니면 apt-mirror로 미러 서버를 만들었을 경우는
8.10->9.04의 업데이트는 불가능하다던지 둘중의 하나가 아닐까 해서 질문드렸습니다.
즉, 당연히 가능해야 한다고 하셨는데,
그게 사실이라면 어떤 추가 설정이 필요한지를 질문드린것입니다.
[/quote:2g5adpss]야밤에 뜬금없이 일어났다가 다시 잤더니 늦잠… ㅠ.ㅠ
어쨌든, 저도 apt 미러링을 해 본 게 세월의 저편 일이라 -.-; 원론적인 것에 상상을 덧붙인 말씀 밖에 못 드리겠군요. 일단, apt를 이용해서 패키지 정보를 얻어오는 모든 프로그램들이 저장소를 접근하는 방법을 얻는 정상적인 유일한 방법은 /etc/apt/sources.list 파일을 이용하는 것일 텐데요. 여기에는 각 배포본의 판 올림에 관계되는 특별한 정보가 없습니다. 그러니 update-manager 같은 프로그램은 저장소의 우분투 루트(다음 ftp 같은 경우는 http://ftp.daum.net/ubuntu)에서 dists 아래의 각 서브디렉토리에서 Release 파일을 가져다가 버젼 정보나 릴리즈 날짜 같은 것을 비교해 보고 새로운 배포판인지 아닌지 판단하는 것 같습니다. (여담이지만, sources.list 외의 다른 방법을 통해서 판올림 정보를 얻어 오도록 되어 있다면 오히려 이상할 것 같습니다. 그렇게 되어 있다면 update-manager의 동장 방식이 수정되어야 하는 게 맞겠죠.)
[quote="yanagi":2g5adpss]
변경정보가 들어있는 부분도 마찬가지 입니다.
저도 변경정보가 어디 들어있는지 모르겠습니다.
그걸 손으로 옮겨야 하는지, 아니면 미러 서버에서는 변경정보 제공을 지원하지 않는지
당연히 지원한다면 어떤 설정을 해야 하는지 질문 드린것입니다.
[/quote:2g5adpss] 우와, 이건 repository를 다시 뒤져봐도 도통 어떤 곳에 있는지 모르겠네요. pool/ 아래에 있는 것이 정상적일 것 같은데 잘 모르겠네요.
[quote="yanagi":1274teau]
변경정보가 들어있는 부분도 마찬가지 입니다.
저도 변경정보가 어디 들어있는지 모르겠습니다.
그걸 손으로 옮겨야 하는지, 아니면 미러 서버에서는 변경정보 제공을 지원하지 않는지
당연히 지원한다면 어떤 설정을 해야 하는지 질문 드린것입니다.
[/quote:1274teau] 우와, 이건 repository를 다시 뒤져봐도 도통 어떤 곳에 있는지 모르겠네요. pool/ 아래에 있는 것이 정상적일 것 같은데 잘 모르겠네요.[/quote:1274teau]
마침 update-manager에서 update된 패키지가 몇 개 뜨길레 변경사항을 봤는데, 이 게 source package의 changelog에 있는 정보와 같은 형식 같네요. ekiga를 예로 들면 update-manager에서 알려주는 변경 사항은 아래와 같습니다.
Fix crash when dialing with no valid accounts (LP: #352041)
– Robert Ancell <robert.ancell@canonical.com> Fri, 01 May 2009 10:14:36 +1000
(이하 생략)
[/code:1274teau]
pool/ 아래의 소스 패키지 정보들이 제대로 들어 있다면 변경 사항이 제대로 표시돼야 할 것 같습니다. 그러니 변경 사항 표시하는 것을 지원하시려면 소스 패키지도 같이 미러링해야 하겠네요.