로컬 컴퓨터의 저장소 패키지 설치
목차
1. 필요 패키지 다운로드
2. 키 생성
3. 저장소 생성
4. 저장소 목록 추가
5. 웹서버 연동.
1. 필요 패키지 다운로드
의존성 확인 스크립트
#!/bin/sh
if [ $# -ne 1 ]; then
prog=`basename ${0}`
echo "usage: ${prog} <package>"
exit 1
fi
TMP=`mktemp -t a.sh.XXXXXX`
trap "rm $TMP* 2>/dev/null" 0
check_virtual_package()
{
apt show $1 2> /dev/null | grep "not a real package" > /dev/null
return $?
}
get_provide_package()
{
apt install -s $1 > ${TMP} 2> /dev/null
local state=0
local pkgs=""
while read line; do
if [ "${line}x" = "Package $1 is a virtual package provided by:x" ]; then
state=1
elif [ ${state} -eq 1 -a -n "${line}" ]; then
pkg=`echo ${line} | awk '{ print $1 }'`
echo ${pkg} | grep -v ':i386' > /dev/null && pkgs="${pkg} ${pkgs}"
fi
done < ${TMP}
echo "${pkgs}"
}
get_depend_package()
{
local pkgs=""
local pkg=""
for pkg in `apt-rdepends $1 2> /dev/null | grep -v "^ "`; do
check_virtual_package ${pkg}
if [ $? -eq 0 ]; then
pkg=`get_provide_package ${pkg}`
fi
pkgs="${pkgs} ${pkg}"
done
echo "${pkgs}"
}
download_deb_package()
{
local pkgs=""
pkgs=`get_depend_package $1`
apt download ${pkgs}
}
download_deb_package $1
$ sudo apt install -y apt-rdepends
$ mkdir deb
$ cd deb
$ ../download-deb-package.sh ubuntu-desktop
$ cd ..
2. 키 생성
GPG 키 생성시 난수 바이트를 사용.
시간 지체됨.
$ sudo apt install -y rng-tools
$ sudo rngd -r /dev/urandom
GPG 키 구성 파일
$ cat <<EOF > gpg.txt
Key-Type: RSA
Subkey-Type: RSA
Name-Real: flroot2
Expire-Date: 0
%pubring public.key
%secring signing.key
%commit
EOF
GPG 배치 및 추출
$ gpg --batch --gen-key gpg.txt
$ gpg --import public.key signing.key
3. 저장소 생성
$ sudo apt install -y reprepro
저장소 정보 설정
$ dir=`pwd`
$ subkey=`gpg --list-keys --keyring ${dir}/public.key --no-default-keyring | \
grep sub | awk '{ print $2 }' | awk -F'/' '{ print $2 }'`
디렉토리 만들고 설정 파일 저장
$ mkdir repo
$ cd repo
$ mkdir conf
$ cat <<EOF > conf/distributions
Codename: xenial ---> 리눅스 시스템.
Architectures: amd64
Components: main
SignWith: ${subkey}
EOF
정장소 정보 추가
$ reprepro includedeb xenial ~/deb/*.deb
공개키 복사
$ cp ../public.key .
4. 저장소 목록 추가
$ sudo apt-add-repository "deb file:/home/flroot2/repo xenial main"
변경 사항
$ diff -uprN /etc/apt/sources.list{.org,}
--- /etc/apt/sources.list.org 2016-08-13 07:43:32.618218136 +0900
+++ /etc/apt/sources.list 2016-08-13 07:49:19.777011499 +0900
@@ -48,4 +48,6 @@ deb-src http://security.ubuntu.com/ubunt
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb-src http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
+deb file:/home/flroot2/repo xenial main
+# deb-src file:/home/flroot2/repo xenial main
deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
저장소 apt gpg 키 추가
$ sudo apt-key add /home/flroot2/repo/public.key
$ sudo apt update -y
$ sudo apt install -y ubuntu-desktop
5. 웹서버 연동.
$ sudo apt install -y apache2
$ sudo cp -a repo /var/www/html/
클라이언트 추가
$ sudo apt-add-repository "deb http://ubuntu-16.04-apt.flroot2.com/repo xenial main"
클라이언트 공개키 다운로드
$ wget -O - http://ubuntu-16.04-apt.flroot2.com/repo/public.key | \
sudo apt-key add -
$ sudo apt update -y
$ sudo apt install -y ubuntu-desktop
댓글 없음:
댓글 쓰기