回答編集履歴

4

edit

2021/03/21 04:36

投稿

yumetodo
yumetodo

スコア5850

test CHANGED
@@ -2,15 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- 基本的にCMakeやautotoolsを使ってmakeなどを吐いてビルドするようなものは、makeだけではビルドしただけで、それをmake installするときにライブラリ・実行ファイル・ヘッダーファイル・manファイルなどを適切な位置に配置するようになっています。
5
+ 基本的にCMakeやautotoolsを使ってmakeなどを吐いてビルドするようなものは、makeだけではビルドしただけで、それをmake installするときにライブラリ・実行ファイル・ヘッダーファイル・manファイルなどを適切な位置に配置するようになっています。これは安全のために分けられていると考えることが出来ます。例えば適切な場所への配置にはroot権限が必要になるかもしれません。しかしビルド自体にそんな権限はいらないわけです。ビルド段階の様々なプロセスにまでroot権限を与えるのは必要以上に権限を与えておりあまり安全側に倒した行動とはいえません。
6
6
 
7
7
 
8
8
 
9
- これは、人によってどこに配置したいかが違うからです。`/usr`, `/usr/local`, `/mingw32`, `/mingw64`, `/opt/foo-x.y.z`, `~/`などなど。
10
-
11
-
12
-
13
- どこに配置するかをmakeを吐く段階(cmakeやconfigure)で与え(`cmake -DCMAKE_INSTALL_PREFIX=<path>`/`./configure --prefix=<path>`)、make install(べつにmakeじゃなくてninjaとかでもいいのだけど)した段階でその情報に基づく配置が行われます。
9
+ `/usr`, `/usr/local`, `/mingw32`, `/mingw64`, `/opt/foo-x.y.z`, `~/`などなど、どこに配置するかをmakeを吐く段階(cmakeやconfigure)で与え(`cmake -DCMAKE_INSTALL_PREFIX=<path>`/`./configure --prefix=<path>`)、make install(べつにmakeじゃなくてninjaとかでもいいのだけど)した段階でその情報に基づく配置が行われます
14
10
 
15
11
 
16
12
 

3

m

2021/03/21 04:36

投稿

yumetodo
yumetodo

スコア5850

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  >
34
34
 
35
- > If you compile a package that links against libfoo, you may notice that it is linked to `/usr/pkg/libfoo/1.1/lib/libfoo.so.1` instead of `/usr/lib/libfoo.so.1` as you would expect. The correct approach is to use the DESTDIR strategy to **fake installation** of the package
35
+ > If you compile a package that links against libfoo, you may notice that it is linked to `/usr/pkg/libfoo/1.1/lib/libfoo.so.1` instead of `/usr/lib/libfoo.so.1` as you would expect. The correct approach is to use the DESTDIR strategy **to fake installation** of the package
36
36
 
37
37
 
38
38
 

2

ap

2021/03/21 04:32

投稿

yumetodo
yumetodo

スコア5850

test CHANGED
@@ -1,5 +1,39 @@
1
+ # 回答
2
+
3
+
4
+
1
5
  基本的にCMakeやautotoolsを使ってmakeなどを吐いてビルドするようなものは、makeだけではビルドしただけで、それをmake installするときにライブラリ・実行ファイル・ヘッダーファイル・manファイルなどを適切な位置に配置するようになっています。
2
6
 
3
7
 
4
8
 
5
9
  これは、人によってどこに配置したいかが違うからです。`/usr`, `/usr/local`, `/mingw32`, `/mingw64`, `/opt/foo-x.y.z`, `~/`などなど。
10
+
11
+
12
+
13
+ どこに配置するかをmakeを吐く段階(cmakeやconfigure)で与え(`cmake -DCMAKE_INSTALL_PREFIX=<path>`/`./configure --prefix=<path>`)、make install(べつにmakeじゃなくてninjaとかでもいいのだけど)した段階でその情報に基づく配置が行われます。
14
+
15
+
16
+
17
+ # 以下余談
18
+
19
+
20
+
21
+ このとき事後的にprefixに介入・・・というよりはprefixの場所に展開するという了解のもとにその構造を別の場所に書き出す、環境変数`DESTDIR`を用いる例もありますが([これ](https://github.com/msys2/MINGW-packages/blob/508dd4f161b248d0c38f066a471b2e33c9e2997d/mingw-w64-eigen3/PKGBUILD#L56)とか[これ](https://github.com/msys2/MINGW-packages/blob/1a14a5d8b54b386b2be12e2430b38b9b93e4c8a0/mingw-w64-dumb/PKGBUILD#L57)とか)、
22
+
23
+
24
+
25
+ コメント欄に言及のあったURLの先にも書かれていて
26
+
27
+
28
+
29
+ > [http://www.linuxfromscratch.org/lfs/view/development/chapter08/pkgmgt.html](http://www.linuxfromscratch.org/lfs/view/development/chapter08/pkgmgt.html)
30
+
31
+ > (強調はyumetodoによるもの)
32
+
33
+ >
34
+
35
+ > If you compile a package that links against libfoo, you may notice that it is linked to `/usr/pkg/libfoo/1.1/lib/libfoo.so.1` instead of `/usr/lib/libfoo.so.1` as you would expect. The correct approach is to use the DESTDIR strategy to **fake installation** of the package
36
+
37
+
38
+
39
+ コメントでも指摘のある通りパッケージを作るような限定的な条件でのみ使うものと考え忘れて構いません。

1

fix

2021/03/21 04:29

投稿

yumetodo
yumetodo

スコア5850

test CHANGED
@@ -1,4 +1,4 @@
1
- 基本的にOpenCVやautotoolsを使ってmakeなどを吐いてビルドするようなものは、makeだけではビルドしただけで、それをmake installするときにライブラリ・実行ファイル・ヘッダーファイル・manファイルなどを適切な位置に配置するようになっています。
1
+ 基本的にCMakeやautotoolsを使ってmakeなどを吐いてビルドするようなものは、makeだけではビルドしただけで、それをmake installするときにライブラリ・実行ファイル・ヘッダーファイル・manファイルなどを適切な位置に配置するようになっています。
2
2
 
3
3
 
4
4