目次: apt
前回、Tree::Sectionsには複数のセクションが指定でき、Tree::Architecturesには複数のアーキテクチャが指定できますが、TreeDefault::Packagesとの対応がよくわからない。と書きましたが、複数のセクションを同時に指定する手段が見つかったので、メモしておきたいと思います。
書き方は簡単で、前回TreeDefaultのパスに出現するセクション名をstableと決め打ちで書いていました。これを $(SECTION) に置き換えるだけです。アーキテクチャ名なら $(ARCH) です。
Dir::ArchiveDir ".";
Dir::CacheDir "dists/buster";
Default::Packages::Compress ". gzip bzip2";
Default::Packages::Extensions ".deb";
Default::Sources::Compress ". gzip bzip2";
Default::Contents::Compress ". gzip bzip2";
Default::FileMode 0644;
TreeDefault::Directory "dists/buster/pool/$(SECTION)/$(ARCH)";
TreeDefault::Packages "dists/buster/$(SECTION)/binary-$(ARCH)/Packages";
Tree "dists/buster" {
Sections "stable testing nightly";
Architectures "amd64";
};
それともう一つ差分がありまして、BinDirectoryの指定はなくても動くことがわかりましたので、削除しています。
セクションを複数指定できるようになりましたので、スクリプトも若干変わります。
export TARGET=debian
export DIST=buster
export ARCH=amd64
for SECT in stable testing nightly
do
mkdir -p /var/www/linux/${TARGET}/dists/${DIST}/${SECT}/binary-${ARCH}
mkdir -p /var/www/linux/${TARGET}/dists/${DIST}/pool/${SECT}/${ARCH}
done
### *.debファイルをコピーする(モジュールによってコピー元は違うと思うので、これは一例)
### cp *.deb /var/www/linux/${TARGET}/dists/${DIST}/pool/${SECT}/${ARCH}
### Packages, Contentsファイルを作る
### linux/debianの下でapt-ftparchiveを実行しないと *.debが見つからないといわれる
cd /var/www/linux/${TARGET}
find . -name "Contents-*" -or -name "Contents-*.*" | xargs rm -f
find . -name "Packages" -or -name "Packages.*" -or -name "packages-*" | xargs rm -f
find . -name Release -or -name Release.gpg -or -name InRelease | xargs rm -f
apt-ftparchive generate ../conf/apt_generate_${TARGET}_${DIST}.conf
### Releaseファイルを作る
### linux/debian/dists/busterの下でapt-ftparchiveを実行しないと、
### 後ほどapt-getを実行した際にパッケージが見つからないといわれる
cd /var/www/linux/${TARGET}/dists/${DIST}
apt-ftparchive release -c=../../../conf/apt_release_${TARGET}_${DIST}.conf . > Release
### Releaseファイルに署名する
echo -n "abcd1234" | gpg --batch --passphrase-fd 0 --pinentry-mode loopback --clearsign -o InRelease Release
echo -n "abcd1234" | gpg --batch --passphrase-fd 0 --pinentry-mode loopback -abs -o Release.gpg Release
chmod 644 Release InRelease Release.gpg
これで粗方、やりたかったことができたのではないかと思います。
今回もDockerのリポジトリから *.debを拝借します。セクションStableにはcontainerd.io、Testingにはdocker-ce-cli、Nightlyにはdocker-ceを配置するなど、各セクションに全く違う *.debを配置すると後で見やすいです。
# tree linux/
linux/
|-- conf
| |-- apt_generate_debian_buster.conf
| `-- apt_release_debian_buster.conf
`-- debian
|-- dists
| `-- buster
| |-- InRelease
| |-- Release
| |-- Release.gpg
| |-- nightly
| | |-- Contents-amd64
| | |-- Contents-amd64.bz2
| | |-- Contents-amd64.gz
| | `-- binary-amd64
| | |-- Packages
| | |-- Packages.bz2
| | `-- Packages.gz
| |-- packages-amd64.db
| |-- pool
| | |-- nightly
| | | `-- amd64
| | | `-- docker-ce_0.0.0-20180901050402-e5babb2-0~debian_amd64.deb
| | |-- stable
| | | `-- amd64
| | | `-- containerd.io_1.2.0-1_amd64.deb
| | `-- testing
| | `-- amd64
| | `-- docker-ce-cli_18.09.0~3-0~debian-buster_amd64.deb
| |-- stable
| | |-- Contents-amd64
| | |-- Contents-amd64.bz2
| | |-- Contents-amd64.gz
| | `-- binary-amd64
| | |-- Packages
| | |-- Packages.bz2
| | `-- Packages.gz
| `-- testing
| |-- Contents-amd64
| |-- Contents-amd64.bz2
| |-- Contents-amd64.gz
| `-- binary-amd64
| |-- Packages
| |-- Packages.bz2
| `-- Packages.gz
`-- gpg
`-- public.key
18 directories, 28 files
上記はリポジトリ情報を生成した後の状態です。各セクションの下にContentsとPackagesが生成されます。ファイルが生成できたら /etc/apt/sources.listにこのサーバーを指定して、apt-get updateを実行します。
deb [arch=amd64] http://192.168.1.1/linux/debian/ buster stable
-> containerd.ioがインストールでき、他のdocker-ce-cliやdocker-ceはインストールできないはず
deb [arch=amd64] http://192.168.1.1/linux/debian/ buster testing
-> docker-ce-cliがインストールでき、他のcontainerd.ioやdocker-ceはインストールできないはず
deb [arch=amd64] http://192.168.1.1/linux/debian/ buster nightly
-> docker-ceがインストールでき、他のcontainerd.ioやdocker-ce-cliはインストールできないはず
指定の方法は上記のとおりです。セクション名stableの部分をtestingやnightlyに入れ替えても、apt-get updateが成功すれば、複数セクションの扱いはうまくいっています。
また、セクションstableを選んだときはcontainerd.ioがインストールできて、他のものはインストールできないはずです。testingだとdocker-ce-cli、nightlyだとdocker-ceがインストールできて、他の2つはインストールできなくなります。セクション指定が機能していることがわかると思います。
< | 2019 | > | ||||
<< | < | 08 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.7.
using GD 2.3.3(png support.)