目次: 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つはインストールできなくなります。セクション指定が機能していることがわかると思います。
目次: ROCK64/ROCKPro64
ROCKPro64に搭載されているCODEC(※)はEverest ES8316というICです。このICをlinux-nextのドライバで制御すると、異常な動作をします。
具体的には、Headphone Mixerのボリュームを5以上に変更すると、突然、ほぼ最大音量の馬鹿デカい音になり、バリバリというノイズが載ります。あまりにノイズがひどくて、聴くに堪えないレベルですし、音がうるさくてたまらないです。
ボリューム5〜7は使い物にならないようなので、ボリュームを4にリミットするパッチをLinux Kernel MLに投稿したところ、ドライバの作者が現れ「今の実装の設定値はおかしい」とアドバイスをくれました。作者曰く現在のドライバは、禁止された設定値をレジスタに書いているそうです。正しい設定値も教えてくれました。
教えていただけるのはありがたいんだけど、既に知っていたなら直してほしかったな……。さておき、正しい設定値を入れたパッチを再作成して、投稿しました。
動作テストしているときに、左右のボリュームの「効き」が反転しているバグにも気づいたので、問題を修正するパッチも合わせて投稿しました。
両パッチともに、先日Linux ASoCツリーに取り込まれたようです。このままLinux 5.3に取り込まれると思われます。良かった良かった。
(※)LinuxではI2Sなどのデジタルオーディオとアナログオーディオ間を変換するDAC/ADCをCODEC と呼びます。
確かにCode/Decodeを行うため、使い方としては合っているし、こちらの方が一般用語かもしれないが、テレビ系SoCとの関わりが深かったので、codecと言われるとMPEG2やAACのような動画像、音声圧縮展開の方を思い浮かべてしまう……。
メモ: 技術系の話はFacebookから転記しておくことにした。全体的に小修正。
一昨年にカーナビが壊れて(2017年9月3日の日記参照)以来、カーナビを使わず過ごしていました。大阪、東京では車に乗らないし、あまり困りませんでしたが、先日遠出したとき道がわからなくなって、適当に大きな道を走っていたら渋滞に巻き込まれ難儀しました。
以前使っていたPanasonic Strada Pocket CN-SP700L-Kは、なかなか良かったですが、シリーズごと廃止されて後継機がありません。
前回お世話になったお礼もこめて、同メーカーであるPanasonic Gorillaを購入しました。CN-G1300VDという一番良いグレードの製品を選びました。Amazonで47,000円くらいです。
今日、さっそく設置して、1〜2時間走りつつ、帰りはナビ機能も使ってみたんですけど、残念ながら「これは売れないだろうな」というのが正直な感想でした。
製品の名誉のために書いておくと、製品に欠陥はありません。各機能はいたって正常に動きます。
では何がダメかというと「10年前」の仕様のまま時が止まってることです。正直10年前に買ったStrada Pocketと何が変わったのかわかりません。
使ってすぐに気づく欠点は2つあります。
読みを「前方一致で」正確に入れなければ候補に出ない点も、今時としては辛いです。うろ覚えの場所が探せません。
冗談みたいな話ですが、Googleで検索して、目的地の電話番号を調べて、カーナビに電話番号を入力する方法が一番早いです。この状態で何年放置したのでしょうか。非常にマズいと思います。
10年前は普通でしたが、今や欠点に成り下がっている点もあります。
車関連の会社に転職したおかげで、車向けの製品はおいそれと設計変更できないことは良く分かっていますが、それにしても時代遅れです。私に言われるまでもなくメーカー側もわかっているとは思いますが、このままだとポータブルカーナビは滅びさるでしょう。
メモ: 技術系の話はFacebookから転記しておくことにした。全体的に小修正。
< | 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 |
合計:
本日: