LANDISK HDL4-Gをapt-get可能にする
LANDISK Home HDL4-Gをカスタマイズするために、どうしても必要になってくる事、それはapt-getでパッケージをインストールできる様にする事です。幸い、何名の方が成功しておられ、資料も残して下さっています。それに沿って、私も追試してみました。
一番簡潔にまとめられていたのが、次のページです。ありがとうございます。
以下の記述は、このウェブページの内容を元に、整理して、不足分を補った内容となっています。
- rootパーティションをrwでmount
- apt-get用ディレクトリ作成
- リンク用スクリプト作成
- パッケージリスト習得
- dpkgのインストール(1/2)
- dpkgのインストール(2/2)
- ダウンロードしたパッケージのインストール
- 確認
- rootパーティションをroでmount
そして、大元となっているのは、次のウェブサイトです。ありがとうございます。
実際の方法を説明します。途中経過もわかる様に、コマンドの実行の様子も貼り付けています。apt-getを可能とするために、キーボードから入力する必要のある部分は、緑色の所です。
Debianのパッケージ管理に関しては、次のウェブサイトをご覧ください。
1. rootパーティションをrwでmount
実際にrootパーティションに書き込む作業は一部なのですが、最初に設定しておきます。
sh-2.05b# mount -o rw,remount /
2. apt-get用ディレクトリ作成
apt-get用のディレクトリなどを作ります。
sh-2.05b# cd /mnt/hda5/landisk/ sh-2.05b# mkdir -p apt/lists/partial sh-2.05b# touch apt/lists/lock sh-2.05b# mkdir -p apt-cache/archives/partial sh-2.05b# mkdir -p dpkg/updates sh-2.05b# touch dpkg/available sh-2.05b# touch dpkg/status sh-2.05b# mkdir backups
確認します。
sh-2.05b# ls apt apt-cache backups conffiles dpkg powerlog samba sh-2.05b# ls -algtr total 9 drwxr-xr-x 12 1000 1024 May 22 2009 .. drwxr-xr-x 3 root 1024 Mar 4 21:35 samba -rw-r--r-- 1 root 95 Mar 5 04:38 powerlog drwxr-xr-x 2 root 1024 Mar 18 23:37 conffiles drwxr-xr-x 3 root 1024 Mar 19 00:06 apt drwxr-xr-x 3 root 1024 Mar 19 00:07 apt-cache drwxr-xr-x 3 root 1024 Mar 19 00:07 dpkg drwxr-xr-x 2 root 1024 Mar 19 00:07 backups drwxrwxrwx 8 root 1024 Mar 19 00:07 . sh-2.05b# ls -lR apt apt: total 1 drwxr-xr-x 3 root root 1024 Mar 19 00:07 lists apt/lists: total 1 -rw-r--r-- 1 root root 0 Mar 19 00:07 lock drwxr-xr-x 2 root root 1024 Mar 19 00:06 partial apt/lists/partial: total 0 sh-2.05b#
3. リンク用スクリプト作成
ここで作ったディレクトリやファイルをリンクするためのスクリプトを作ります。
sh-2.05b# cd /mnt/hda5/ sh-2.05b# vi make_apt_links.sh
make_apt_links.shには、以下の内容を記述します。
ln -s /mnt/hda5/landisk/apt /var/lib/apt
ln -s /mnt/hda5/landisk/apt-cache /var/cache/apt
ln -s /mnt/hda5/landisk/dpkg /var/lib/dpkg
ln -s /mnt/hda5/landisk/backups /var/backups
このmake_apt_links.shを実行して、ファイルをリンクします。
sh-2.05b# chmod +x make_apt_links.sh sh-2.05b# ./make_apt_links.sh
/varはRAMDISKなので、再起動するとこのリンクが消滅します。なので、/etc/init.d/rc.localの最後に、次の一行を追加します。
sh-2.05b# vi /etc/init.d/rc.local
/mnt/hda5/make_apt_links.sh
sources.listの作成
apt-getの取得対象となる場所をsources.listに設定します。
sh-2.05b# mkdir /etc/apt sh-2.05b# vi /etc/apt/sources.list
sources.listに記述する内容は、次の通りです。
deb http://archive.debian.org/debian-archive/debian/ sarge main contrib non-free
deb-src http://archive.debian.org/debian-archive/debian/ sarge main contrib non-free
deb http://archive.debian.org/debian-archive/debian-security/ sarge/updates main contrib non-free
deb-src http://archive.debian.org/debian-archive/debian-security/ sarge/updates main contrib non-free
次の方々の設定の通りです。ありがとうございます。
4. パッケージリスト習得
apt-getを実行して、パッケージリストをダウンロードします。apt-get自体は、最初からHDL4-Gにバイナリが入っています。
sh-2.05b# which apt-get
/usr/bin/apt-get
sh-2.05b# apt-get update
Get:1 http://archive.debian.org sarge/main Packages [4362kB]
Get:2 http://archive.debian.org sarge/main Release [97B]
Get:3 http://archive.debian.org sarge/contrib Packages [59.8kB]
Get:4 http://archive.debian.org sarge/contrib Release [100B]
Get:5 http://archive.debian.org sarge/non-free Packages [51.9kB]
Get:6 http://archive.debian.org sarge/non-free Release [101B]
Get:7 http://archive.debian.org sarge/main Sources [1323kB]
Get:8 http://archive.debian.org sarge/main Release [100B]
Get:9 http://archive.debian.org sarge/contrib Sources [24.7kB]
Get:10 http://archive.debian.org sarge/contrib Release [103B]
Get:11 http://archive.debian.org sarge/non-free Sources [23.5kB]
Get:12 http://archive.debian.org sarge/non-free Release [104B]
Get:13 http://archive.debian.org sarge/updates/main Packages [417kB]
Get:14 http://archive.debian.org sarge/updates/main Release [112B]
Get:15 http://archive.debian.org sarge/updates/contrib Packages [623B]
Get:16 http://archive.debian.org sarge/updates/contrib Release [115B]
Get:17 http://archive.debian.org sarge/updates/non-free Packages [676B]
Get:18 http://archive.debian.org sarge/updates/non-free Release [116B]
Get:19 http://archive.debian.org sarge/updates/main Sources [77.1kB]
Get:20 http://archive.debian.org sarge/updates/main Release [115B]
Get:21 http://archive.debian.org sarge/updates/contrib Sources [20B]
Get:22 http://archive.debian.org sarge/updates/contrib Release [118B]
Get:23 http://archive.debian.org sarge/updates/non-free Sources [414B]
Get:24 http://archive.debian.org sarge/updates/non-free Release [119B]
Fetched 6342kB in 2m7s (49.8kB/s)
Reading Package Lists... Done
取得したリストは、/var/lib/apt/listsに入る様です。
5. dpkgのインストール(1/2)
まずは、パッケージの取得と必要なファイルの/usr/binへのコピーをします。
sh-2.05b# apt-get install dpkg Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: dselect gcc-3.3-base libc6 libdb1-compat libgcc1 libncurses5 libstdc++5 Suggested packages: locales glibc-doc The following NEW packages will be installed: dpkg dselect gcc-3.3-base libc6 libdb1-compat libgcc1 libncurses5 libstdc++5 0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. Need to get 6930kB of archives. After unpacking 22.2MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://archive.debian.org sarge/main libdb1-compat 2.1.3-7 [34.3kB] Get:2 http://archive.debian.org sarge/main libc6 2.3.2.ds1-22sarge6 [4068kB] Get:3 http://archive.debian.org sarge/main libgcc1 1:3.4.3-13sarge1 [78.5kB] Get:4 http://archive.debian.org sarge/main libncurses5 5.4-4 [273kB] Get:5 http://archive.debian.org sarge/main gcc-3.3-base 1:3.3.5-13 [149kB] Get:6 http://archive.debian.org sarge/main libstdc++5 1:3.3.5-13 [314kB] Get:7 http://archive.debian.org sarge/main dselect 1.10.28 [117kB] Get:8 http://archive.debian.org sarge/main dpkg 1.10.28 [1896kB] Fetched 6930kB in 31s (217kB/s) Could not exec dpkg! E: Sub-process /usr/bin/dpkg returned an error code (100)
情報通り、エラーになりました。
sh-2.05b# ls /var/cache/apt/archives/ dpkg_1.10.28_arm.deb libc6_2.3.2.ds1-22sarge6_arm.deb libncurses5_5.4-4_arm.deb partial dselect_1.10.28_arm.deb libdb1-compat_2.1.3-7_arm.deb libstdc++5_1%3a3.3.5-13_arm.deb gcc-3.3-base_1%3a3.3.5-13_arm.deb libgcc1_1%3a3.4.3-13sarge1_arm.deb lock
パッケージは、ダウンロードされているようです。その中のdpkgパッケージを手動で展開します。
sh-2.05b# cd /var/cache/apt/archives/ sh-2.05b# mkdir tmp_dpkg sh-2.05b# cd tmp_dpkg sh-2.05b# ar xv ../dpkg_1.10.28_arm.deb x - debian-binary x - control.tar.gz x - data.tar.gz sh-2.05b# tar xvzf data.tar.gz
Debianパッケージは、arでまとめられていて、さらにその中に、data.tar.gzと言う、実際にインストールされるべきファイルがはいっています。data.tar.gzの中には、dpkgで使われるファイルが"/"を抜いた形で、この場合、etc, sbin, usr, varが入っています。
コピー(移動)対象は、次の通りです。
sh-2.05b# ls -l usr/bin/dpkg* -rwxr-xr-x 1 root root 153548 May 27 2005 usr/bin/dpkg -rwxr-xr-x 1 root root 181740 May 27 2005 usr/bin/dpkg-deb -rwxr-xr-x 1 root root 67408 May 27 2005 usr/bin/dpkg-query -rwxr-xr-x 1 root root 34928 May 27 2005 usr/bin/dpkg-split
これらのdpkg関係のバイナリだけを、システムにコピー(移動)します。
sh-2.05b# mv usr/bin/dpkg* /usr/bin
不要になった、展開済みのパッケージを、ディレクトリごと消します。
sh-2.05b# cd .. sh-2.05b# rm -rf tmp_dpkg/
6. dpkgのインストール(2/2)
エラーが無くなるまで、次の行程を繰り返します。
sh-2.05b# apt-get install dpkg sh-2.05b# sed -i -e 's/not-installed/installed/g' /var/lib/dpkg/status
4回程度でエラーが無くなると思います。成功すると、次のメッセージが出ます。
sh-2.05b# apt-get install dpkg
Reading Package Lists... Done
Building Dependency Tree... Done
dpkg is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
参考にしたページでは日本語でしたが、私の場合は英語でした。
この方法で、dpkgをインストールするのは、次の方が発見された様です。ありがとうございます。
ただ、記事中"non-installed"となっていますが、"not-installed"の間違いでしょう。それについては、次の記事でも間違われています。
7. ダウンロードしたパッケージのインストール
先にダウンロードできていたパッケージをインストールします。
sh-2.05b# cd /var/cache/apt/archives sh-2.05b# ls dpkg_1.10.28_arm.deb libc6_2.3.2.ds1-22sarge6_arm.deb libncurses5_5.4-4_arm.deb partial dselect_1.10.28_arm.deb libdb1-compat_2.1.3-7_arm.deb libstdc++5_1%3a3.3.5-13_arm.deb gcc-3.3-base_1%3a3.3.5-13_arm.deb libgcc1_1%3a3.4.3-13sarge1_arm.deb lock sh-2.05b# dpkg -i *.deb
この作業が終わると、/var/lib/dpkg/statusも正しく書き変わる様です。
8. 確認
dpkgでインストールされたパッケージの一覧を取得します。
sh-2.05b# dpkg -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-===========================-===========================-====================================================================== ii dpkg 1.10.28 Package maintenance system for Debian ii dselect 1.10.28 a user tool to manage Debian packages ii gcc-3.3-base 3.3.5-13 The GNU Compiler Collection (base package) ii libc6 2.3.2.ds1-22sarge6 GNU C Library: Shared libraries and Timezone data ii libdb1-compat 2.1.3-7 The Berkeley database routines [glibc 2.0/2.1 compatibility] ii libgcc1 3.4.3-13sarge1 GCC support library ii libncurses5 5.4-4 Shared libraries for terminal handling ii libstdc++5 3.3.5-13 The GNU Standard C++ Library v3
パッケージの検索は、apt-cacheを使います。
sh-2.05b# apt-cache search curl curl - Get a file from an HTTP, HTTPS, FTP or GOPHER server flying - pool/snooker/carrom/hockey/curling simulator for X11 libcurl-ocaml - ocaml curl bindings libcurl-ocaml-dev - ocaml libcurl bindings libcurl3 - Multi-protocol file transfer library, now with SSL support! libcurl3-dbg - libcurl compiled with debug symbols libcurl3-dev - Development files and documentation for libcurl libcurl3-gssapi - libcurl compiled with GSSAPI support libghttp-dev - original GNOME HTTP client library - development kit libwww-curl-perl - Perl bindings to libcurl libwww-dev - The W3C WWW library - development files libwww-ssl-dev - The W3C WWW library - development files (SSL support) php4-curl - CURL module for php4 pmccabe - McCabe-style function complexity and line counting for C and C++ python2.2-pycurl - Python bindings to libcurl python2.3-pycurl - Python bindings to libcurl python2.4-pycurl - Python bindings to libcurl tclcurl - Tcl bindings to libcurl wmget - Background download manager in a Window Maker dock app
curlをインストールしてみます。
sh-2.05b# apt-get install curl Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: debconf debconf-i18n libcurl3 libidn11 liblocale-gettext-perl libssl0.9.7 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl perl-base zlib1g Suggested packages: debconf-doc debconf-utils whiptail dialog gnome-utils libterm-readline-gnu-perl libgnome2-perl libqt-perl libnet-ldap-perl libcurl3-gssapi ca-certificates libldap2-dev Recommended packages: apt-utils The following NEW packages will be installed: curl debconf debconf-i18n libcurl3 libidn11 liblocale-gettext-perl libssl0.9.7 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl perl-base zlib1g 0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded. Need to get 2144kB of archives. After unpacking 7164kB of additional disk space will be used. Do you want to continue? [Y/n] n Abort.
途中でabortさせて、インストールこそしませんでしたが、うまく動いている様です。
9. rootパーティションをroでmount
作業が終了したら、roに戻しておきます。
sh-2.05b# mount -o ro,remount /
ディスカッション
コメント一覧
まだ、コメントがありません