ヒャッハー!メリークリスマス。
子供が生まれてからクリスマスプレンゼントをあげる立場になったわけですが、子供のいる方々は何をプレンゼントしましたか?私は去年、2カラー先生をプレゼントしました。けっこう使って、日々絵を描くのが上手になっています。これは良い買い物でした。
今年のプレゼントはけっこう大変で、入手困難なものを要求されました(入手できるのだけど、買ったら数万円する)。困ったなぁと思っていたら丁度似たようなものが限定発売されたのでネット通販でゲットすることができました。便利な世の中になりましたね。
$ sudo apt-get install devscriptsでは、早速使ってみます。changes からパッケージ一覧を取得するには 「dcmd」に changes ファイルを指定します。以下のように dsc, orig.tar.gz, debiain.tar.gz, deb, changes の一覧が出力されます。
$ dcmd mozc_1.3.931.102-1_amd64.changes mozc_1.3.931.102-1.dsc mozc_1.3.931.102.orig.tar.gz mozc_1.3.931.102-1.debian.tar.gz ibus-mozc_1.3.931.102-1_amd64.deb scim-mozc_1.3.931.102-1_amd64.deb uim-mozc_1.3.931.102-1_amd64.deb emacs-mozc_1.3.931.102-1_amd64.deb emacs-mozc-bin_1.3.931.102-1_amd64.deb mozc-server_1.3.931.102-1_amd64.deb mozc-utils-gui_1.3.931.102-1_amd64.deb mozc_1.3.931.102-1_amd64.changesDebianパッケージだけを出力したい場合には「--deb」をオプションとして指定します。
$ dcmd --deb mozc_1.3.931.102-1_amd64.changes ibus-mozc_1.3.931.102-1_amd64.deb scim-mozc_1.3.931.102-1_amd64.deb uim-mozc_1.3.931.102-1_amd64.deb emacs-mozc_1.3.931.102-1_amd64.deb emacs-mozc-bin_1.3.931.102-1_amd64.deb mozc-server_1.3.931.102-1_amd64.deb mozc-utils-gui_1.3.931.102-1_amd64.debその他、dsc ファイルのみの場合は「--dsc」、changes ファイルのみは「--changes」、アーキテクチャ非依存の Debian パッケージのみの場合は「--indepudeb」をオプションとして指定します。その他いくつかのオプションがあります。またこのファイル一覧は dsc ファイルを指定することもできます。この場合には以下のような出力になります。
$ dcmd mozc_1.3.931.102-1.dsc mozc_1.3.931.102.orig.tar.gz mozc_1.3.931.102-1.debian.tar.gz mozc_1.3.931.102-1.dsc $ dcmd --deb mozc_1.3.931.102-1.dsc mozc_1.3.931.102-1.dsc: binary packages not foundこれだけでは単に changes ファイルや dsc ファイルからファイルを抽出し、出力しているだけです。しかし dcmd にはこのファイル一覧をコマンドに入力として設定できます。例えば、これらをどこかのサーバに SCP でコピーしたいとします。そのような場合には以下のように実行します。
$ dcmd scp mozc_1.3.931.102-1_amd64.changes mimigah:~/work/sbuild-daily-chacker/mozc/ mozc_1.3.931.102-1.dsc 100% 1396 1.4KB/s 00:00 mozc_1.3.931.102.orig.tar.gz 100% 73MB 2.4MB/s 00:31 mozc_1.3.931.102-1.debian.tar.gz 100% 38KB 38.5KB/s 00:00 ibus-mozc_1.3.931.102-1_amd64.deb 100% 316KB 316.3KB/s 00:00 scim-mozc_1.3.931.102-1_amd64.deb 100% 588KB 588.1KB/s 00:00 uim-mozc_1.3.931.102-1_amd64.deb 100% 348KB 348.0KB/s 00:00 emacs-mozc_1.3.931.102-1_amd64.deb 100% 26KB 26.3KB/s 00:00 emacs-mozc-bin_1.3.931.102-1_amd64.deb 100% 286KB 285.6KB/s 00:00 mozc-server_1.3.931.102-1_amd64.deb 100% 13MB 2.6MB/s 00:05 mozc-utils-gui_1.3.931.102-1_amd64.deb 100% 1024KB 1.0MB/s 00:00 mozc_1.3.931.102-1_amd64.changes今回は「devscripts」で提供されている dcmd について紹介しました。いままでコピー&ペーストしていたりや毎回ワンライナーを書いていた人は使ってみてはいかがでしょうか。
$ sudo sh -c "echo deb http://www.emdebian.org/debian/ squeeze main >> /etc/apt/sources.list"次に、emdebian-archive-keyringパッケージをインストールします。 このパッケージにはEmdebianのリポジトリを検証するための鍵束が含まれていて、インストールされていない場合リポジトリに行われている署名の検証を行うことができません。
$ sudo apt-get install emdebian-archive-keyringemdebian-archive-keyring パッケージがインストールできたら、「apt-get upgrade」でリポジトリ情報を更新します。これで Emdebian で提供されているパッケージを利用できるようになります。
$ sudo apt-get updateでは、クロスコンパイル用のパッケージをインストールしてみます。クロスコンパイルに必要なパッケージは emdebian-toolchain-Debianアーキテクチャ名 というメタパッケージで一度にインストールできるようになっています。今回は例としてarmel 向けのクロスコンパイラ環境を構築してみます。以下のように実行します。
$ apt-cache show emdebian-toolchain-armel Package: emdebian-toolchain-armel Source: meta-armel Version: 0.1 Architecture: all Maintainer: Debian Embedded Maintainersインストールしたarmel 向けクロスコンパイラを使って簡単なプログラムをコンパイルし、file コマンドで ファイルの種類を確認してみます。実行はできませんが、arm用のバイナ リが作成されることが分かります。Installed-Size: 32 Depends: g++-4.4-arm-linux-gnueabi, gcc-4.4-arm-linux-gnueabi, binutils-arm-linux-gnueabi, linux-libc-dev-armel-cross Homepage: http://www.emdebian.org Priority: optional Section: embedded Filename: pool/main/m/meta-armel/emdebian-toolchain-armel_0.1_all.deb Size: 1814 SHA256: 8207b600f1b0fc150a4248dbd9b3cab87fabc47c58fc0ea134f8adb9ad0526d5 SHA1: bbbe401b9c004ef7625557089196b0f1e76403fc MD5sum: 48456fb8c53a7bb6541dc49e3f8dc8dc Description: the Emdebian Cross Toolchain Environment, base applications Emdebian Cross Toolchain Environment is the powerful, integrated, and easy-to-use Free Software framework for cross building applications. . This metapackage is to ease the installation of cross toolchain packages, it pulls in the core parts of Cross Toolchains % sudo apt-get install emdebian-toolchain-armel
$ echo 'int main() { printf("hello armel\n"); return 0; }' | \
arm-linux-gnueabi-gcc -xc -w -
}
$ file a.out
a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked \
(uses shared libs), for GNU/Linux 2.6.18, not stripped
今回は Debian で クロスコンパイル環境を構築する方法を説明しました。Debianは他のディストリビューションと比べて容易にクロスコンパイル環境を構築できます。またDebianの資産を有効に活用できるようにもなっています(これはDebian勉強会資料を参照してください)。Linuxを組込向けに使われている方は Debianをぜひ使ってみてください。
$ sudo apt-get install devscriptsそして「rc-alert」を実行します。インターネット上からデータを取得し表示します。
$ rc-alert Package: apt Bug: 558784 Title: apt: re-adds removed keys Flags: [ I] (lenny-ignore or squeeze-ignore) Dists: [STUE] (stable, testing, unstable, experimental) Package: apt Bug: 633351 Title: apt: Hash Sum mismatch Flags: [ ] (none) Dists: [E] (experimental) Package: apt Bug: 649451 Title: hard-coded gzip-only support in apt-cdrom Flags: [ ] (none) Dists: [S] (stable .....rc-alertにはいくつかのオプションが用意されています。例えばデータをキャッシュしたい場合には、「--cache」オプション、testing ディストリビューションで影響するRCバグだけを出力したい場合には「--include-dists T」をつけて実行します (Tは"T"esting の T です。U は Unstable, S は Stable, O は Old stable )。
$ sudo apt-get install debian-goodies popularity-contest次に popularity-contest を使ってデータを収集します。 root 権限が必要なので以下のように実行するとよいでしょう。
$ sudo sh -c "popularity-contest > /var/log/popularity-contest"コマンドが完了したら、「popbugs」を実行します。 実行するとブラウザが起動し、popbugsによって生成されたWebページが表示されます。
$ popbugs ......ここで表示されるWebページを見て「これどっかで見たことある」と思った人は普段からRCバグに興味があるか、バグトラッキング大好きっ子だと思います。これはDebianの Release-critical bugs statusと同じページです。 このサイトは 「popbugs」で生成されていたのです。へぇへぇへぇ。
$ sudo apt-get udate ; sudo apt-get install debian-refcard $ evince /usr/share/doc/debian-refcard/refcard-ja-a4.pdf.gz今回は Debian の簡単なリファレンスが提供されている 「debian-refcard」を紹介しました。年末年始は「debian-refcard」を読んでDebianライフをお楽しみください。また、APTのチートシートが Debian勉強会有志によって作成されているようなので、こちらもどうぞ。
$ sudo apt-get install devscripts次にビルドログを取得してみます。 「getbuildlog」を実行するときのオプションは ソースパッケージ名、 パッケージバージョン、 取得したいアーキテクチャ名 の順に指定します。最新のビルドログを取得したい場合には「パッケージバージョン」に「last」を指定します。 helloパッケージのi386最新ビルドログを取得したい場合には以下のように実行します。
$ getbuildlog hello last i386 --2011-12-24 06:36:04-- http://buildd.debian.org/status/fetch.php?pkg=hello&arch=i386&ver=2.7-2&stamp=1312458021&raw=1 (中略) 2011-12-21 06:36:09 (48.3 KB/s) - `hello_2.7-2_i386.log' へ保存終了 [73674]取得したファイルの内容を見てみると、helloパッケージのi386最新ビルドログが取得されていることがわかります。
$ head hello_2.7-2_i386.log sbuild (Debian sbuild) 0.61.0 (23 Feb 2011) on murphy.debian.org ╔══════════════════════════════════════════════════════════════════════════════╗ ║ hello 2.7-2 (i386) 04 Aug 2011 11:39 ║ ╚══════════════════════════════════════════════════════════════════════════════╝ Package: hello Version: 2.7-2 Source Version: 2.7-2「getbuildlog」 コマンドで注意しないといけないのは、パッケージメンテナがアップロードしたCPUアーキテクチャのビルドログが取得できないということです。これはDebianではいまのところアップロードするときにビルドログは付加されないためです。ソースビルドが実現されると全てのアーキテクチャのビルドログが見れるようになるでしょう。
$ dpigs 289860 libopenvrml-dev 255818 gcc-mingw-w64 255300 texlive-latex-extra-doc 246049 ghc 239780 openjdk-6-doc 222988 texlive-fonts-extra 163613 mingw-w64-dev 123800 libreoffice-core 110886 locales-all 108020 qt4-doc一番ディスクスペースを取っているのはlibopenvrml-devでした。はい、私がメンテナンスしているパッケージです.....。
$ sudo apt-get install debsecan「debsecan」 を実行すると、発行されているCVEを取得し、出力します。
$ debsecan | tail CVE-2011-1529 libkrb5-3 (remotely exploitable, low urgency) CVE-2011-1530 libkrb5-3 (remotely exploitable, medium urgency) CVE-2011-4151 libkrb5-3 (remotely exploitable, low urgency) CVE-2011-2686 ruby1.8-dev (remotely exploitable, low urgency) CVE-2011-2705 ruby1.8-dev (remotely exploitable, low urgency) CVE-2011-3009 ruby1.8-dev (remotely exploitable, medium urgency) CVE-2011-3624 ruby1.8-dev (low urgency) CVE-2011-2748 dhcp3-server (remotely exploitable, high urgency) CVE-2011-2749 dhcp3-server (remotely exploitable, high urgency) CVE-2011-4539 dhcp3-server (remotely exploitable, low urgency)既に修正されたCVEがあり、表示させたくない場合場合には 「--add-whitelist」 オプションで対象のCVE番号を指定し、ホワイトリストに登録します。
$ sudo debsecan --add-whitelist CVE-2011-1530 $ debsecan | tail CVE-2011-1528 libkrb5-3 (remotely exploitable, low urgency) CVE-2011-1529 libkrb5-3 (remotely exploitable, low urgency) CVE-2011-4151 libkrb5-3 (remotely exploitable, low urgency) CVE-2011-2686 ruby1.8-dev (remotely exploitable, low urgency) CVE-2011-2705 ruby1.8-dev (remotely exploitable, low urgency) CVE-2011-3009 ruby1.8-dev (remotely exploitable, medium urgency) CVE-2011-3624 ruby1.8-dev (low urgency) CVE-2011-2748 dhcp3-server (remotely exploitable, high urgency) CVE-2011-2749 dhcp3-server (remotely exploitable, high urgency) CVE-2011-4539 dhcp3-server (remotely exploitable, low urgency)ホワイトリストに登録されているCVEは「--show-whitelist」オプションで確認できます。
$ debsecan --show-whitelist CVE-2011-1530 (all packages)「--suite」オプションでチェックしたいコードネームを指定し、CVE修正状況を確認できます。lenny の場合は以下のように実行します。fixedとなっているものは既に修正されたものです。以下の出力結果から libkrb5-3 以外はまだ修正されていないことが分かります。
$ debsecan --suite=lenny | tail CVE-2011-1528 libkrb5-3 (fixed, remotely exploitable, low urgency, obsolete) CVE-2011-1529 libkrb5-3 (fixed, remotely exploitable, low urgency, obsolete) CVE-2011-4151 libkrb5-3 (fixed, remotely exploitable, low urgency, obsolete) CVE-2011-2686 ruby1.8-dev (remotely exploitable, low urgency) CVE-2011-2705 ruby1.8-dev (remotely exploitable, low urgency) CVE-2011-3009 ruby1.8-dev (remotely exploitable, medium urgency) CVE-2011-3624 ruby1.8-dev (low urgency) CVE-2011-2748 dhcp3-server (remotely exploitable, high urgency, obsolete) CVE-2011-2749 dhcp3-server (remotely exploitable, high urgency, obsolete) CVE-2011-4539 dhcp3-server (remotely exploitable, low urgency, obsolete)今回は Debian のセキュリティ管理ツールである debsecan の簡単な使い方を紹介しました。サーバ管理をされている方や自身でCVEを管理している方は使ってみてはいかがでしょうか。
$ apt-get changelog dpkg
取得:1 Changelog for dpkg (http://packages.debian.org/changelogs/pool/main/d/dpkg/dpkg_1.16.1.2/changelog) [398 kB]
398 kB を 2秒 で取得しました (138 kB/s)
<- ページャが起動
dpkg (1.16.1.2) unstable; urgency=medium
[ Raphaël Hertzog ]
* Fix another typo to correctly set DEB_*_ARCH_BITS in architecture.mk.
* Set urgency to medium as changes are minor, and it should migrate
quickly in case 1.16.2 comes soon.
[ Jonathan Nieder ]
* Update dpkg-buildflags(1) to note that the processor option
-D_FORTIFY_SOURCE=2 is set in CPPFLAGS now instead of CFLAGS and
CXXFLAGS. Closes: #646073
.....
「apt-get changelog 」コマンドは今まで http://packages.qa.debian.org を参照したり、apt-listchanges を使っていた人にとって少しだけ手間を無くすためのコマンドです。手軽にパッケージのChangelogを参照するツールとして使ってみてはいかがでしょうか。