※今回の内容はかなりハードです。間違いなく万人受けはしません。「こんなコトをしている場合がある」ということについての記録なのかもしれません。社内でラズベリーパイというデバイスを使って遊んでインターン向けで使っていたりしています。呼ばれるLinuxディストリビューションをベースで作られています。(ディストリビューションとはこの場合配布形態と訳され、多少語弊はあるかもしれませんが「LinuxカーネルをOSとして使える状態にするもの」と考えて良いでしょう)もちろん、Debian以外を使いたいという方々は世界にいらっしゃいまして、Fedoraという別のディストリビューションベースのpidoraなどと結構色々とあるので、チャレンジャーな方は試してみると良いのではないでしょうか。実際このDebianなんですが、私自身は20年以上サーバ/デスクトップ環境の両方で使い続けていて、インターンの準備で若手メンバーがキーボードレイアウトを日本語配列に変更するとか、ターミナルの画面で日本語表示をデフォルトにするなどはちょっとしたお作法があるんですが、そこで悩んでいるところを見てニヤニヤフォローすることがあります。通常のDebianであれば今の時代は使用にはほぼ問題ないのでしょうけれど、ラズベリーパイでは英語が基本で多言語対応はデフォルトではそこまでできていませんし、またDebian自体もそのような面も無いわけではなく、慣れていないとなかなか厳しいところがあります。圧縮されたzipファイルを展開する時に使うunzipコマンドなどは、日本語ファイル名に対応できておらず、展開するとファイル名が文字化けしたまま展開されるなど、非常に面倒なことになります(※)。そのためDebianの派生ディストリビューションのUbuntuなどでは日本語コミュニティチームが対応するパッチをあてて使えるようにする...ということを行っています。Unarchiverのunarコマンドのパッケージを入れてしまえば良いという話はあります。そこで「ラズベリーパイの環境に対してでも同じことをして使いづらいRaspbianを少しでも都合が良いように作り変えよう!」というのが今回の話です。社内にある複数のラズベリーパイにインストールするということになります。実際に何をする必要があるかというのは下記の通り。パッケージをインストールして使えるようにするなお、Debianのインストール自体は「USBメモリ用とかDVD用とかのイメージをダウンロードして、インストールメディアを作成して、インストールする際に自動でインストールする」というレベルでも問題ないはず...ということでインストールの手順と、下記手順内ではちょっとしたwarning等は一般的な使い方をしていれば表示されない部分について、省いています。具体的な手順とその実行を行ってみます。debootstrap、qemu-user-staticをインストールします。schrootは使っている環境の中に仮想の別環境に移行して作業するためdebootstrapはDebianの環境を仮想環境等に作るためqemu-user-staticはQEMUと呼ばれる仮想環境を作るためということになります。これらを使うことで、通常の開発環境/テスト環境をホストマシンに影響を与えることなくパッケージを作ることができるので非常に便利です。これらを使うことで、通常の開発環境/テスト環境をホストマシンに影響を与えることなくパッケージを作ることができるので非常に便利です。アーカイブを取得する必要があります。ディスク容量が消費されます。MB](以下インストール状況の表示なので省略)2.クロスコンパイル環境を作るDebianの現在のリリース版コードネーム(ちなみにトイ・ストーリーのキャラクターです)を指定して、開発環境をインストールするということをやっています。一通りのパッケージ群をダウンロードして展開しているので結構時間がかかるのと、ネットの接続環境が必要になります。進みだしてしまえば、あとは待つばかりです。successfully.3.chrootというコマンドで仮想環境に移行し、パッケージデータベースの情報にソースコードを取得するための情報を追加するインストールされた環境に移行して動作するか試します...が、たいてい前の作業にエラーが無い限りちゃんと動きます。デフォルトの状態はリポジトリからソースコードをを取得できないので、取得先の情報を追加をしておきます。デバイスやプロセスの情報などをホストPCと共有するなどをしておくと楽ではあるんですが、今回はパッケージ作成がメインなので省略しています。chroot」などと調べてみましょう。)4.パッケージ情報を更新し、開発に必要なパッケージをインストールするこれ以降、自分のPCの中だとか、色々手間があるので全てroot権限で動かしてしまっています。同じように試す場合、セキュリティ面を気にしつつ適切な状況で行ってください。devscriptsはDebianのパッケージ(.debファイル)を作るための各種パッケージを一度に入れてくれるメタパッケージと呼ばれるものです。メタパッケージは依存する別のパッケージを指定しておき、1つ入れるだけで動作させる時に依存する他のパッケージも引き連れてインストールしてくれるものです。個人的にエディタとしてvimを入れていますが、今回のこの記事ではパッケージを作り直すだけであればvimを必要としない格好で各コマンドを連ねていますが、コード等の修正時に苦行を厭わないのであれば入れる必要はないと思います。...5.unzipのDebianのリポジトリからソースコードを取得するaptコマンドでソースを取得するオプションを指定すれば、勝手にアーカイブを展開までしてくれます。リポジトリから直接関連するファイルをダウンロードしてコマンドで同じように展開する...というのも可能です。ちなみにDebianのパッケージはバイナリファイルとコントロールそれぞれがtar+xzでまとめられたアーカイブを、さらにarコマンドでアーカイブしているので、システム的に壊れかけていてもなんとかなる可能性があります。ソースアーカイブを取得する必要があります。24-cve-2019-13232-do-not-raise-alert-for-misplaced-central-directory.patch6.パッチをダウンロードし、パッケージの情報に組み込むパッチとは、ソースコードを一部改変する差分データのことで、若干の機能改修やバグ修正など、差分情報が書かれているファイルです。これを取込み日本語を使えるようにします。今回はcurlでダウンロードする際にSSL証明書のチェックを省いていますが、本来であれば環境を整えた上で接続先を検証しながら行ったほうが良いでしょう。Debianのパッケージを作る際にパッチを置く場所に移動し、そこでパッチをダウンロード後、あてるパッチを指定するファイルにファイル名を書き込み、正しく書き込まれているか確認します。←これ!!7.unzipのパッケージ作成で必要なパッケージを追加するパッケージを作る際に依存するライブラリがいくつかありますが、デフォルトで入っているとは限りません。Debianではパッケージをビルドし直す時用にコマンド1つで、ビルド時に依存するパッケージもインストールできます。悩まなくてイイんです。前述のdevscriptを入れた時にあらかたインストールされていたのでlibbz2-devパッケージだけのようでした。アーカイブを取得する必要があります。ディスク容量が消費されます。個のファイルとディレクトリがインストールされています。...8.パッケージの情報を変更しビルドするビルド前に自作パッケージ用にリビルドした人の名前やメールアドレスやリリースバージョン、修正時のコメントを打ち込んでいます。このパッケージが外部に出回ってしまった時に、パッケージメンテナーに連絡が取れるように...というお作法でもあります。この情報はソースコードのディレクトリの中にあるdebianというディレクトリのchangelogの一番上に書かれます。このファイルも手動で書き直すことでも問題ありません。その後パッケージ作成のため、プログラムのコンパイルやパッケージに必要な情報をまとめたり、パッケージの作成状況に問題がないかなどのチェックをしてくれるメタコマンドに引き渡します。最後のパッケージができる時に、公式のパッケージでは、本来自分が作ったと電子的な署名を残すのですが、今回はローカルでしか使わないので電子署名を残すことはせず一旦スルーします。lintian.9.パッケージをインストールする。ソースコードの1つ上のディレクトリに、ビルドしたパッケージとその他のソースコードなどと一緒に置かれています。今回はdpkgコマンドでインストールしてみましょう。バージョンが「ダウングレードする」と言われていますが、前述のdchコマンドの発行のところでバージョンを少し上で指定をすると、後日のパッケージアップデートで手間は減ります。個のファイルとディレクトリがインストールされています。...10.試すWindows上で日本語フォルダを作り、その中で日本語ファイル名を使ったファイルをフォルダごとzip化しておき、それをラズパイ側に送ります。WindowsのデフォルトはShift-JIS(CP932)ということですので、-Oオプションで指定してあげます。cp932」を抜くだけでも大丈夫です。(なお下記の手順は-tオプションを使用してテストモードで展開まではしていません。日本語ディレクトリ.zip.まとめこれでラズパイを楽しく活用するためにDebianパッケージを作るという手順はおしまいです。自分で作って動かすだけであれば、ラズパイのリポジトリに依存せずに色々できることが薄っすらとでも解っていただけたかと思います。全てを一からパッケージを作るというのはかなり難しいので、最初のうちは今回の話のようにパッチをあてて作り直すといったことが良いでしょう。今でこそ公式・非公式によらず使えるパッケージの種類・数が多くなってきてはいるのであまりやらなくなりましたが、ファブリカコミュニケーションズのインフラチームでは数年前からパッケージを作るなどを行い、自社サービス維持・運用の助けにしていました。サービスを維持しやすくするために、インストールの時間を短くするとか簡単にバージョンを変更できるようにするといった、サービスをできるだけ止めないための工夫でもあります。ラズパイで色々遊ぶ以外にも、サーバ管理などに興味のある方は、このような部分も勉強されると良いかとは思います。こんなインフラチームはいつでも人を募集していますので、興味のある方はぜひ応募してみてください。ファブリカコミュニケーションズで働いてみませんか?あったらいいな、をカタチに。人々を幸せにする革新的なサービスを、私たちと一緒に創っていくメンバーを募集しています。ファブリカコミュニケーションズの社員は「全員がクリエイター」。アイデアの発信に社歴や部署の垣根はありません。“自分から発信できる人に、どんどんチャンスが与えられる“そんな環境で活躍してみませんか?ご興味のある方は、以下の採用ページをご覧ください。デザイン/UXPDCAが通用しない局面に。マーケティング/グロース話題のブロックチェーンを使った社内通貨を紹介。