質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

NetBSD

NetBSDは、Unix系のOSです。近代的なオープンソースBSDとしては最も古く、高速、安全、高い移植性を備えています。PCや大規模なサーバーシステム、携帯端末、組み込みデバイスなど多くの機種で利用が可能です。

Q&A

解決済

4回答

849閲覧

BSD系sedの最新ソースコード入手とビルドする方法は?

kuuki

総合スコア8

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

NetBSD

NetBSDは、Unix系のOSです。近代的なオープンソースBSDとしては最も古く、高速、安全、高い移植性を備えています。PCや大規模なサーバーシステム、携帯端末、組み込みデバイスなど多くの機種で利用が可能です。

0グッド

0クリップ

投稿2019/03/19 19:48

編集2019/03/30 02:12

BSD系sedの最新ソースコードを入手とビルドする方法は?

#1.前提条件

MacOS、Mavericks版 sed バージョンが不明
man sedすると2005年の日付
MacOSのsedはBSD系である。(Linuxのsedと異なる。)
今回はBSD系のsedを用意する。

#2.問題点(2019年3月27日追記)

方針
netBSD、freeBSD、OpenBSDの何れかのsedをビルドすればMacで使えると推測。

freebsd sedのURL
freebsd/usr.bin/sed at master · freebsd/freebsd · GitHub
ソースは正しい。

しかし、このURLのsedディレクトリにはOS用のMakefileしか存在しない為、ビルドは出来ない。(freebsd公式からの回答です。)
よって、freeBSDは対象から外す。
(2019年3月30日打ち消し線追加:ikedasさんのコメント参照)

NetBSD sedのURL
pkgsrc 導入しtextproc/nbsed をインストール予定。
pkgsrc(http://pkgsrc.org/)

#3.質問

BSD版sedのソースコードを入手。
./configure 、make、sudo make として例えばprefixを/usr/localでコマンド名をbsdsed、又はbsed等々でインストールしたい。
openBSD、NetBSDのどちらでも構いません。自分で試したい。

pkgsrc 導入事例が知りたい。
textproc/nbsed 導入事例が知りたい。

#4.結果

後日記載予定

以上

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikedas

2019/03/22 04:00

タイトルが質問したいこととずれているので、修正してはどうですか。
ikedas

2019/03/26 22:37

> しかし、このURLのsedディレクトリにはOS用のMakefileしか存在しない為、ビルドは出来ない。(freebsd公式からの回答です。) は? その「freebsd公式からの回答」とやらの内容を明示してください (質問文に追記してください)。 あと、結果が「後日記載予定」となっているので、回答された内容をみていろいろ試してフィードバックしてくれるのだな、とおもって待っているのですが。回答されたことを試してみましたか。
kuuki

2019/03/27 13:32

>This is the correct source. But you need to install FreeBSD to use the specific source. >Kind regards, >Diomidis Spinellis
ikedas

2019/03/27 13:47 編集

そりゃそう答えるでしょう。彼はFreeBSDの中心的な開発者の一人なんだから。でもこれを「freebsd公式からの回答」なんていって吹聴して回ったら彼に迷惑だよ。なぜ彼がこういう答えをしたか、わかりませんか。 とにかく、当のこの質問ページで回答されたことを試した結果を、フィードバックお願いします。
kuuki

2019/03/27 16:05

貴方が上の英文を読んでどう思うか書いてください
archiver

2019/03/29 23:45

質問タイトルの「うちけし」は何でしょう?一部修正したことをタイトルにも明示したということでしょうか? これだと、質問を撤回したかのように見えるので、もしそうでないのならば、タイトルの「うちけし」は外したほうが良いです。
guest

回答4

0

ベストアンサー

  • configure スクリプトを実行してビルド環境を設定し、ビルドとインストールをするには、ソースパッケージがconfigure スクリプトを含むように作られていないといけません。なので今回は無理です。
    • homebrew にはbsdmakeのformulaeがあるようです。これを使えばBSD用のMakefileでビルドできそうです。ただし、このmakeから呼び出されるツール (installなど) もBSD向けのものを使わなければならない可能性があります (わたしは試してないので推測ですが)。これらをhomebrew でどのくらい面倒見てくれるかは不明です。

追記

質問者さんがいつまでたっても試してくれないので、自分でやってみることにしました。

試した環境はmacOS Sierra 10.12.xです。

まず、BSD系ならmakeにはGNU makeではなくBSD makeが必要になるだろうことは容易に想像がつきます (portsコレクションなどには逆にgmakeでないとビルドできないパッケージもありますが、コアツールでは確実にこれが必要です)。

  • homebrewでbsdmakeをインストールしました (手順は略)。BSDのビルドシステムで使われるインクルードファイル (bsd.prog.mkなど) もちゃんと含まれています。

Cコンパイラ、リンカは標準化のおかげでどのOSも似たようなものなので、OSに入っているclangやgccを使うことにします。

NetBSD

「最新の」という条件なのでCURRENTがいいのかもしれませんが、とりあえずRELEASE-8でやってみました。
https://ftp.netbsd.org/pub/NetBSD/NetBSD-release-8/src/usr.bin/sed/

できました。詳細な手順は書きません (自分で試せば以下の説明で十分わかるはずです)。

  • Nullabilityのチェックでコンパイルが失敗するので、bsdmakeの実行時変数としてCOPTS-Wno-nullability-completenessを追加。
  • __UNCONSTという識別子が未定義だとしてコンパイルが失敗する。NetBSDでは <sys/cdefs.h> で定義されているらしいが、macOSの <sys/cdefs.h> にはない。ソースコードを見たところとりあえずなくしてしまっても動きそうなので、#define __UNCONST(x) (x)をmacOSのsys/cdefs.hに追加定義したものを作り、それのパスを-Iオプションで前記のCOPTSに加えた。
  • BINDIRが定義されていないのでinstallが失敗する。本来なら/etc/mk.confで定義するものなのだろうが、面倒なのでこれも実行時変数として指定する。
  • 実行ファイルの名前をbsdsedとかにしたい? これもできるので、調べてください。

FreeBSD

これもCURRENTがいいのかもしれませんが、とりあえずRELENG-12にしましょう。
https://svn.freebsd.org/base/releng/12.0/usr.bin/sed/

できました。

  • ビルドシステム用のインクルードファイルが増えていますので、これも取ってきてbsdmakeに-mオプションでパスを指定してみましたが、Makefileの読み込みの際に文法エラーになります。bsdmakeのソースコードを探してみると、どうもFreeBSD 5.4あたり (正確ではありません) のバージョンを元にしているようで、その後の拡張に対応していないようです。
    おそらく新しいFreeBSDのmakeのソースを取ってきてコンパイルすれば新しいBSD makeが手に入るのでしょう。
  • NetBSDの実行結果を見て、何をすればビルドできるのかはわかっているので、自分でMakefileを書きました。最初からこうすればよかった。[3/30追記] こうなると、makeはBSDでもGNUでもなんでもいいですね。

configureシステム

これもできます。できるのがわかっているのでわたしは試しません。

ここまで説明したことを実際に自分で試していれば、configure.acMakefile.amの記述のしかたを知るだけでできます。といってもネット上の情報は英語が多いし読みづらいので、参考書を挙げておきます。

pkgsrc

macOSでもpkgsrcを使えます。しかしBSD sedのようなコアツールは含まれていないので、自分でパッケージを作ればいいでしょう。

ここまで説明したことを実際に自分で試していれば、あとはパッケージの作りかたを知るだけでできます。やりかたは自分で調べてください。

回答終り。

投稿2019/03/21 12:51

編集2019/03/30 02:09
ikedas

総合スコア4317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuuki

2019/03/29 11:18

pkgsrcで悪戦苦闘しています。 configureオプション変更が今後必要かもしれませんがconfigureまでは出来ています。 おそらくNetBSDの上2つのコメントと同等の内容でpkgsrcでのビルドも上手く行ってないと思います。私の止まっている箇所と思います。頂いたコメントがそのままかはわかりませんが役に立ちそうです。
kuuki

2019/03/29 11:19

今忙しくなってしまったので、更新は週一以下になりそうです。
ikedas

2019/03/29 11:31

了解です。こっちは追加質問がなければ特に何もしませんので、気遣い無用です。自分のペースでやってください。 が、「freebsd公式の回答」なるあなたの説明は事実でなかったわけですから、それは撤回しといてください。今後この質問ページに立ち寄った人に誤解を与えかねません。
kuuki

2019/03/29 12:23

>「freebsd公式の回答」なるあなたの説明は事実でなかった 本文は修正します。
guest

0

BSD版のsedのソースという考え方がわからないですが、こちらから取得できると思います。
ftp://ftp.gnu.org/gnu/sed/

混同した回答を書きました。
netbsdならこちらの様です。
ftp://ftp.netbsd.org/pub/NetBSD/

sedがこの中に含まれているかまでは未確認です。

投稿2019/03/20 03:14

編集2019/03/21 07:29
yut148

総合スコア752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Stan_Dma

2019/03/21 05:27

Very good chance to learn about UNIX as well as the gloriuos development of Berkeley Software Distribution.
yut148

2019/03/21 07:29

確かに。これはマイナスな回答とされても仕方ないですね。混同していました。編集してftp://ftp.netbsd.org/pub/NetBSD/を追加しました。
ikedas

2019/03/21 13:21

sed はFreeBSDと同様、src/usr.bin/sed という場所にあります。確認して追記しては (+1しました)。
guest

0

OS用のMakefileしか存在しない

というのが、よく分かりませんが、自分でMakefileを書くか、Makefileを使わないでコンパイルすればどうでしょうか?

と、そのページ見るとファイル数少ないので、
cc -o mybsdsed *.cでいいのでは?

ライブラリーとかが足りてないと追加が必要です。

投稿2019/03/20 00:20

otn

総合スコア84507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

結論から申しますと、macOSにFreeBSDやNetBSDのバイナリは導入できません。

macOSにおいては、/usr/binなどのシステムのディレクトリに格納されているバイナリは全てApple社が提供しているものになります。
それらはOSの一部と見なされるため、ユーザが変更するという行為は、それ以降サポートの対象外となる恐れがあります。

このため、一般ユーザ権限でインストールできるHomeBrewなどのパッケージ管理システムが生まれています。

投稿2019/03/19 23:22

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/03/20 00:08

バイナリじゃなくてソースコードの質問では?
kuuki

2019/03/20 00:11

はい。BSD版sedのソースコードを./configure し、make、sudo make したいです。
kuuki

2019/03/20 00:17

kazto 様。 アドバイス有難うございます。私の質問が条件不足で申し訳ありませんでした。本文に追記しました。
Stan_Dma

2019/03/21 05:09

At first, using a configure script means that you use GNU Autotools behind the scene, which does not exist in *BSD boxes usually. Sorry to say that I would not like to build the BSD sed on my Linux because it seems for me too difficult or awesome to build successfully. How about asking BSD users elsewhere, who may be not here?
pepperleaf

2019/03/21 11:38

本題とは直接、関係ありませんが、 > ユーザが変更するという行為は、 通常、ユーザは、 /usr/local/bin に入れるのじゃなかったですか? そっちを優先すれば、使えますね。ただ、同じ名前は混乱の元なので、別名に変える事が多いとは思いますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問