2019/12/03

로컬 apt PKG 서버 만들기 트러블슈팅

로컬 apt PKG 서버 만들기 트러블슈팅

밀러 서버
우분투 메인서로 부터 모든 패키지를 끌어와 우리 서버의 로컬 하드 드라이브에 저장하는 방법이다.

apt-get install mirror

vi /etc/apt/mirror.list
############# config ##################
#

## 저장소 디렉토리 설정 ##
set base_path   /srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0

# 다운로드 쓰레드 개수
set nthreads     20
set _tilde 0
#
############# end config ##############

deb-i386 http://kr.archive.ubuntu.com/ubuntu yakkety main restricted universe multiverse
deb-i386 http://kr.archive.ubuntu.com/ubuntu yakkety-security main restricted universe multiverse
deb-i386 http://kr.archive.ubuntu.com/ubuntu yakkety-updates main restricted universe multiverse
#deb http://kr.archive.ubuntu.com/ubuntu yakkety-proposed main restricted universe multiverse
#deb http://kr.archive.ubuntu.com/ubuntu yakkety-backports main restricted universe multiverse

deb-amd64 http://kr.archive.ubuntu.com/ubuntu yakkety main restricted universe multiverse
deb-amd64 http://kr.archive.ubuntu.com/ubuntu yakkety-security main restricted universe multiverse
deb-amd64 http://kr.archive.ubuntu.com/ubuntu yakkety-updates main restricted universe multiverse
#deb http://kr.archive.ubuntu.com/ubuntu yakkety-proposed main restricted universe multiverse
#deb http://kr.archive.ubuntu.com/ubuntu yakkety-backports main restricted universe multiverse

deb-src http://kr.archive.ubuntu.com/ubuntu yakkety main restricted universe multiverse
deb-src http://kr.archive.ubuntu.com/ubuntu yakkety-security main restricted universe multiverse
deb-src http://kr.archive.ubuntu.com/ubuntu yakkety-updates main restricted universe multiverse
#deb-src http://kr.archive.ubuntu.com/ubuntu yakkety-proposed main restricted universe multiverse
#deb-src http://kr.archive.ubuntu.com/ubuntu yakkety-backports main restricted universe multiverse


clean http://kr.archive.ubuntu.com/ubuntu
################################################################################################

비트 관련 deb-i386, 64비트 deb-amd64

밀러 저장소 패키지 다운로드.
apt-mirror

업데이트 주기적 설정.
vi /etc/cron.d/apt-mirror

cat /etc/cron.d/apt-mirror
#
# Regular cron jobs for the apt-mirror package
#
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

http 프로토콜을 통해 패키지를 가져갈 수 있도록 설정.
ln -s /srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/mirror/kr.archive.ubuntu.com/ubuntu/ /srv/www/yakkety.fw.fairux.net/ubuntu

두줄 추가 심볼 링크 후에도 같음.
ln -s /srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/mirror/kr.archive.ubuntu.com/ubuntu/pool /srv/www/yakkety.fw.fairux.net/ubuntu/pool
ln -s /srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/mirror/kr.archive.ubuntu.com/ubuntu/dists /srv/www/yakkety.fw.fairux.net/ubuntu/dists

error 1 ---> 그냥 무시한 후 클라이언트에서 apt-get update 해본다.
========
/bin/sh: 0: Can't open /srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/var/postmirror.sh

vi /srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/var/postmirror.sh
#!/bin/sh
/srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/var/clean.sh
#rsync -avz --bwlimit=512 rsync://fr.archive.ubuntu.com/ubuntu/dists/wily/main/installer-amd64 /var/www/

rsync -avz --bwlimit=512 rsync://kr.archive.ubuntu.com/ubuntu/dists/yakkety/main/installer-amd64 /srv/www/yakkety.fw.fairux.net/ubuntu

# 동일하게 맞춰지만 똑같다.
# rsync -avz --bwlimit=512 rsync://kr.archive.ubuntu.com/ubuntu/dists/yakkety/main/installer-amd64/srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/mirror/kr.archive.ubuntu.com/ubuntu/dists/yakkety/main

chmod +x postmirror.sh chlan.sh

참고
https://github.com/apt-mirror/apt-mirror/blob/master/postmirror.sh
https://help.ubuntu.com/community/Rsyncmirror


클라이언트 설정
===============
vi /etc/apt/sources.list
deb http://yakkety.fw.fairux.net/ubuntu yakkety universe
deb http://yakkety.fw.fairux.net/ubuntu yakkety main restricted
deb http://yakkety.fw.fairux.net/ubuntu yakkety-updates main restricted

여러개의 저장소를 둘 경우
sudo apt-mirror /etc/apt/mirror_12.04.list ----> 버전별 밀러 구성 

다른 방법 :  apt-cache
apt-cacher는 이름처럼 클라이언트가 요청한 적이 있었던 패키지들을 보관했다가 클라이언트가 해당 패키지를 요구할 때 제공하는 방식이다.

apt-get install apt-cacher

접근 권한 설정
vi /etc/apa-cacher/apt-cacher.conf 파일의 allowed_host와 denied_hosts 항목으로 캐시에 접근 가능/불가 호스트를 지정할 수 있다.
만약 해당 항목을 수정했다면 apt-cacher 재시작

클라이언트 설정
/etc/apt/apt.conf.d/90-apt-proxy.conf 파일을 만들어 아래 내용을 넣습니다.

 Acquire::http::Proxy "http://서버IP:3142";

=====================================================
키링 문제점으로 인한 다시 추가 작업
=====================================================
# -------------------------------------
#           Setup the Server
# -------------------------------------
# 자세한 내용은 http://www.zachburlingame.com/2011/05/howto-create-a-local-repository-mirror-on-ubuntu/ 파일 참고.

sudo apt-get install debmirror

mkdir /srv/www/yakkety.fw.fairux.net/mirrorkeyring/
gpg --no-default-keyring --keyring /srv/www/yakkety.fw.fairux.net/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg



vi /srv/www/yakkety.fw.fairux.net/mirrorbuild.sh
#!/bin/bash

## Setting variables with explanations.

#
# Don't touch the user's keyring, have our own instead
#
export GNUPGHOME=/srv/www/yakkety.fw.fairux.net/mirrorkeyring

arch=i386,amd64

section=main,restricted,universe,multiverse
dist=yakkety,yakkety-updates,yakkety-security

server=kr.archive.ubuntu.com

inPath=:ubuntu

proto=rsync
rsyncoptions="-aIL --partial --bwlimit=100"

outPath=/srv/www/yakkety.fw.fairux.net/ubuntu/

debmirror       -a $arch \
                --no-source \
                -s $section \
                -h $server \
                -d $dist \
                -r $inPath \
                --progress \
                -e $proto \
                --rsync-options="$rsyncoptions" \
                $outPath

chmod +x mirrorbuild.sh

./mirrorbuild.sh

apt-mirror

==============
클라이언트 설정
==============
cd /etc/apt
sudo mv sources.list sources.list.orig
sudo sensible-editor sources.list

# Replace 'yakkety.fw.fairux.net' with your server's DNS name
# (e.g. yakkety-repo.test.com)
# -----------------------------------------------------------------------------
# BEGIN SOURCES.LIST
# -----------------------------------------------------------------------------
# Local network mirror sources.
deb http://yakkety.fw.fairux.net/ubuntu yakkety main restricted universe multiverse
deb http://yakkety.fw.fairux.net/ubuntu yakkety-updates main restricted universe multiverse
deb http://yakkety.fw.fairux.net/ubuntu yakkety-security main restricted universe multiverse
# -----------------------------------------------------------------------------
# END SOURCES.LIST
# -----------------------------------------------------------------------------

이 방식이 안될 경우.
==================
sudo useradd -m ubuntu -Gusers,wheel
sudo password ubuntu

su - ubuntu
sudo apt-get update
sudo apt-get install debmirror

ls -al /srv/www/yakkety.fw.fairux.net/ubuntu
sudo chown -R ubuntu:ubuntu /srv/www/yakkety.fw.fairux.net/ubuntu
sudo chmod -R 771 /srv/www/yakkety.fw.fairux.net/ubuntu

위에 방식 또한 안될 경우.
=======================
sudo chown -R ubuntu:ubuntu /srv/www/yakkety.fw.fairux.net//srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/mirror/
sudo chmod -R 771 /srv/www/yakkety.fw.fairux.net//srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/mirror/

위에 방식 또한 안될 경우.
=======================
sudo chown -R ubuntu:ubuntu /srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/
sudo chown -R ubuntu:ubuntu /srv/www/yakkety.fw.fairux.net/yakkety_namo_pkg/

즉, 사용자 권한을 주는데, 아랫에서 하나씩 주어 테스트 해본다.



댓글 없음:

댓글 쓰기