NetBSDの神Toolのpkgsrcがようやく完全動作しましたので
再度ブログに追記致します。
CoreutilsをLucid化して運用します。
ここまでの道のり結構長かったですが安心して使えるのは良い事です。
是非試してみましょう。
○pkgsrcとは
細かい内容はこちらに記載しました。
長いのでまず一読願います。
Ubuntu改造日記 最新版 NetBSDパッケージ pkgsrcテスト編 その22
○Coreutilsのバージョンエラー
Jaunty環境そのままでpkgsrcが動作しなかったのは
Coreutilsのバージョンが古かった為と想定しまして
installコマンドが所定の動作しなかったのが理由とおおよそ結論付けします。
他のパッケージも入れ変えてるので多分ですが。
Jauntyのバージョンではコンパイルまでは通るのですがbmake installが通らない為、
一個のパッケージでエラー止まりを繰り返すのは大変苦痛で
依存関係を解消するのが出来ず続かないといった悩みがありました。
所が同じCortexA8 iMX515 Ubuntu10.04のHercules eCAFE EX HDで
pkgsrcがすんなり動作したのでバージョン違いだろうという事で
現象とバージョンのChengelogから、
GNU Coreutilsパッケージに含まれるinstallコマンドが原因と推定しました。
GNU CoreutilsとはUnix関係のlsとか基本パッケージをまとめた物で
こんな感じに沢山のtoolを一括してます。
・File Utilities
chgrp ファイルの所有グループを変更する
chown ファイルの所有者を変更する
chmod ファイル、またはディレクトリのアクセス権を変更する
cp ファイル、またはディレクトリをコピーする
dd ファイルのコピーと変換を行う
df ディスクの空き容量を表示する
dir lsと同等
dircolors lsの表示色を設定する
install ファイルをコピーし、属性を設定する
ln リンクを作成する
ls ディレクトリに含まれるファイル一覧を表示する
mkdir ディレクトリを作成する
mkfifo FIFO(名前付きパイプ)を作成する
mknod 特殊ファイル(デバイスファイルなど)を作成する
mv ファイルを移動する
rm ファイルを削除する
rmdir 空のディレクトリを削除する
shred ファイルの内容を破壊し、復旧できなくする
sync ファイルのキャッシュを物理的に書き込む
touch ファイルの時刻を変更する
vdir 詳細なディレクトリ内容を表示する(ls -lと同等)
・Text utilities
cat ファイルの中身を表示する、またはファイルを連結して表示する
cksum ファイルのチェックサムとファイルサイズを計算する
comm 2つのファイルについて行ごとに比較する
csplit ファイルを文脈ベースで分割する
cut 各行から選択した部分を表示する
expand タブをスペースに変換する
fmt テキストを段落に整形する
fold 入力行を指定された幅にあわせて折りたたむ
head ファイルの最初の部分を表示する
join 二つのファイルを読み、フィールドが共通な行を結合する
md5sum MD5 ハッシュチェックサムを計算・チェックする
nl 行番号を付けてファイルを出力する
od ファイルを 8 進数 (または他の形式) で出力する
paste ファイルを行単位でマージする
pr 印刷用にファイルのページづけ・段組みを行う
ptx 整列済み索引を作成する
sha1sum SHA-1 ハッシュチェックサムの計算と検証を行う
sort テキストファイルを行単位でソートする
split ファイルを決まった大きさに分割する
sum チェックサムとブロック数を表示する
tac ファイルを結合して逆順に表示する
tail ファイルの末尾の部分を表示する
tr 文字の変換・削除や、連続する文字の圧縮を行う
tsort 有向グラフのトポロジカルなソートを行う
unexpand スペースをタブに変換する
uniq ソートされたファイルから重複する行を削除する
wc ファイルのバイト数・単語数・行数を表示する
Shell utilities
basename ファイル名からディレクトリと拡張子を取り去る
chroot ルートディレクトリを変更する
date 現在のOS日時を表示、または変更する
dirname パスからディレクトリ名以外の部分を除去する
du ファイルのディスク使用量を見積もる
echo 1行のテキストを表示する
env 環境変数を一時的に設定、または表示する
expr 式を評価する
factor 数値を素因数分解して素数の約数を表示する
false 何もせずに失敗の値を返す
groups ログインしているユーザーのグループを表示する
hostid 現在のホストの識別値を表示する
id 現在のユーザID名とグループID名を表示する
link ファイルの新しい名前を作成する
logname ユーザーのログイン名を表示する
nice プロセスの優先度を変更する
nohup ログアウト後もコマンドの実行が継続することを許可する
pathchk ファイル名の可搬性 (portability) をチェックする
pinky fingerコマンドの軽量版
printenv 環境変数の全部あるいは一部を表示する
printf データの表示形式を変換して表示する
pwd カレントディレクトリの名前を表示する
readlink シンボリックリンクの値を表示する
seq 通し番号を表示する
sleep 指定された時間休止する
stat ファイルの状態を得る
stty 端末の行設定を変更、表示する
tee 標準入力から読んだ内容を標準出力とファイルとに書き出す
test ファイル形式のチェックや値の比較を行う
true 何もせずに成功の値を返す
tty 端末名を表示する
uname システムの情報を表示する
unlink 名前を削除し、場合によってはそれが参照しているファイルも削除する
users 現在ログインしているユーザーを表示する
who 現在ログインしているユーザーを詳細に表示する
whoami ユーザーのログイン名を表示する
yes killシグナルが送られるまで文字を表示し続ける
JauntyのCoreutilsは6.12でLucidのCoreutilsは7.4です。
6系⇒7系のinstallコマンドの変化点がこちらです。
本家GNUのHPより抜粋。
[Coreutils-announce] coreutils-7.0 released (beta)
install accepts a new option --strip-program to specify
the program used to strip binaries.
この--strip-programのオプションが更新された事で
古い環境でpkgsrcが動作しない主な理由と推定してます。
pkgsec側で対応できれば、本当に嬉しいな(わがまま)
まあそれ以外でエラーが無い移植性が驚きですけどね。
パッケージを載せ替えて運用出来ます。
○pkgsrcインストールメモ
ざっくりと今回の記録します。
詳細は超長くなりますので
x86環境で洗い出ししましたので
やる前にそちらを参考願います。
Ubuntu改造日記 最新版 NetBSDパッケージ pkgsrcテスト編 その22
・Pin-Priorityによる部分Lucid化
まずapt.confのファイルを作りjauntyを指定します。
Lucidパッケージを入れてもJauntyのPin-Priority: 1001に設定しなおせば
元のJauntyバージョンにいつでも戻せます。
参考はこちら。
モバイルUbuntu、NetWalker登場 Jaunty-Lucid混載 apt Pin-Priority設定編 その164
sudo gedit /etc/apt/apt.conf
で下記の文章を貼り付けて保存します。
APT
{
Default-Release "jaunty";
Cache-Limit "50331648";
};
Pin-Priorityを設定します。
sudo gedit /etc/apt/preferences
で下記の文章を貼り付けて保存します。
Package: *
Pin: release a=jaunty
Pin-Priority: 1000
Package: *
Pin: release a=lucid
Pin-Priority: 0
設定終了しましたらLucidのリポジトリを登録します。
sudo gedit /etc/apt/sources.list
で下の1行を追加して保存。
以前のとURLが違いますので注意。
deb http://old-releases.ubuntu.com/ubuntu lucid main restricted universe multiverse
でアップデート
sudo apt-get update
コンパイルに必要なパッケージを入れます。
sudo apt-get install build-essential/lucid libncurses5-dev/lucid libc6-dev/lucid g++/lucid libncurses5/lucid g++-4.4/lucid gcc-4.4/lucid libgomp1/lucid cpp/lucid gcc/lucid libstdc++6-4.4-dev/lucid binutils/lucid libstdc++6/lucid coreutils/lucid libc6/lucid libgcc1/lucid
次にパッケージソース、pkgsrcを保存します。
本家HPからcurrent.tgzかstable.tgzをダウンロードします。
2014Q2今の時点ではどちらでも問題ないはずです。
http://www.pkgsrc.org/
落としたら展開します。
今回はHomeフォルダにインストールします。
Bashを使っている場合は下記を.bashrcに追記します。
gedit 〜/.bashrc
みたいな感じで下記一行を最後らへんに追加。
PATH=${HOME}/pkg/bin:${HOME}/pkg/sbin:${PATH}
面倒ならexport SH=/bin/bashも追加するのもありですけど。
端末を一度閉じて再び起動させて.bashrcのPATHを更新します。
bootstrapを展開してpkgsrcをインストール。
cd pkgsrc/bootstrap
export SH=/bin/bash
./bootstrap --unprivileged
pkgsrcが動いてインストールされたはず。
ここからが本番。
初期インストールの際に注意が必要です。
まずキーとなるパッケージを先にいれます。重要です。
順番に。
エラーが出てもbmake clean、bmakeでやり直すだけですが。
まずpkg-vulnerabilitiesから
/home/{home}/pkg/sbin/pkg_admin -K /home/{home}/pkg/var/db/pkg fetch-pkg-vulnerabilities
cd pkgsrc/pkgtool/digest
bmake
bmake install
cd pkgsrc/devel/nbpatch
bmake
bmake install
devel/ncurses
bmake
bmake install
後は多分問題ないはずなのでそれぞれのパッケージをコンパイルしてみましょう。
lang/g95
などでUSE_TOOLS+=perlをMakefileに追加してくださいとか
たまに固有のエラーは出るかもしれませんが仕様です。
どの環境でも起こります。
追加してからbmake clean && bmakeしてやり直しましょう。
○アプリのインストール
色々とテスト中ですが、
まず設定ファイルであるmk.confの設定を変更します。
最初のコンパイル環境が無事完成するまでは手を付けてはいけません。
大体ncursesをコンパイル完了した後あたりが良いです。
要注意。
gedit /home/{ユーザー}/pgk/etc/mk.conf
下の行を真ん中らへんに追加して保存します。
PREFER_PKGSRC=yes
DEPENDS_TARGET=bin-install
USE_LIBTOOL=yes
USE_LANGUAGES=c++
上のPREFER_PKGSRC=yes、USE_LIBTOOL=yesを入れると
pkgsrcで入っているライブラリが優先的に使われます。
DEPENDS_TARGET=bin-installはバイナリパッケージがあれば
優先的にそちらをインストールします。
gccなど言語関係を入れる時はUSE_LANGUAGES=c++で指定が必要です。
Firefoxなどコンパイルする際には依存関係でgcc45を
入れようとするので必要です。
○MicroSD、USBでpkgsrcをコンパイルする
pkgsrc自体はソースコードの集まりなので、とっても容量を食います。
大体普通に使う程度でも10GB位は必要でSSDを直ぐに食いつぶします。
またコンパイルはSSDの負担が大きいので寿命が短くなります。
コンパイルしたバイナリはSSDに置けるので実行には外しても問題ありません。
やり方はpkgsrcのフォルダをMicroSDかUSBにコピーするだけです。
・MicroSD、pkgsrcのパーミッションを変更する
作業用のworkフォルダを自動作成する際にパーミッションのエラーが出ますので
パーミッションを変更しておきます。
-Rコマンドを付けて再帰的に全フォルダのパーミッションを変更しておきます。
sudo chmod 777 /media/disk/ -R
・MicroSD、USBをEXT3で運用する。
Windowsから見れなくなりますが、必要であればEXT3に変更しておきます。
まず右クリックかなにかでメニューからアンマウント
やるまえにディスクの/devを確認しておきましょう。
MicroSDの場合はこちら
sudo fdisk /dev/mmcblk0p1
USBの場合はこちら
sudo fdisk /dev/sda
fdiskが起動したら領域削除 d
新しく領域を作成 n
フォーマット形式をEXT3を選択 83
基本領域1〜4を選択、シリンダで必要な容量を選択
テーブルをファイルに保存 w
再び自動でマウントされるので再度アンマウント
EXT3でフォーマットします。
MicroSDの場合
sudo mkfs.ext3 /dev/mmcblk0p1
USBの場合はこちら
sudo mkfs.ext3 /dev/sda
○まとめ
動くようになりましても、
ダウンロードとコンパイルでめちゃくちゃ時間がかかります。
PerlやPython、GCC、LibreOfficeとか巨大なアプリをコンパイルする際には
とっても注意しましょう。
ここまでpkgsrcテストから検証に1.5か月くらいかかってます。
一応完全動作まで行きましたが苦肉の策でした。
Jauntyの環境でパッケージだけ最新に更新したい人にはお勧めです。
Gnuplugとか玄柴とかJaunty環境を使わざる得ない人にもお勧めです。
一応、パッケージのサポートアウト課題はこれで解決しました。
コンパイルエラーが出て対応した際には
世界の平和の為、ネットのどこかに記載して頂ければ助かります。
検索エンジンにヒットして知らないうちに誰かが幸せになるはずです。
是非コンパイルエラーを乗り越えて使ってみましょう。
【Netwalkerの最新記事】
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..
- モバイルUbuntu、NetWalker..