NetBSDのホームディレクトリでpkgsrcを使用する
私はNetBSDを初めて使用しますが、ubuntuでpkgsrcを使用することがよくあります。 ubuntuのパッケージ依存関係に影響を与えることなく、ソースからパッケージをビルドしてインストールできます。
たとえば、Ruby 2.2がapt-getによってインストールされている場合でも、Ruby 2.3をpkgsrcによって$HOME/pkg/bin
にビルドしてインストールできます。依存関係の問題なしにRuby 2.3を使用してください。
この機能は私にとって非常に役に立ちました。それが私がこれまでpkgsrcを愛している理由です。
ここで、NetBSD7.1を別のPCにインストールしました。 NetBSD自体がpkgsrcを使用していても、ubuntuで行っているようなシステム全体の影響なしに、自分のパッケージマネージャーとしてpkgsrcをダウンロードし、ホームディレクトリ($HOME/pkg/bin
)にパッケージをビルドしたいと思います。
ホームディレクトリで./bootstrap --unpriviledged
を試したところ、機能しませんでした。詳細なエラーメッセージで理由を尋ねる前に、NetBSDが、システム環境に影響を与えることなく、ユーザーごとに別のpkgsrcをダウンロードして使用するように設計または検討されているかどうかを尋ねます。
P.S英語は私の母国語ではありません。入力、文法、または単語の選択エラーを許してください。
PDATE(2017/04/08)
Greg A. Woodsの回答のおかげで、詳細なエラーメッセージを表示する必要があることがわかりました。
最初は、rootアカウントでpkg_addを使用してバイナリからインストールしていました。
-bash-4.4$ uname -a
NetBSD hello-netbsd 7.1 NetBSD 7.1 (GENERIC.201703111743Z) AMD64
-bash-4.4$ pkg_info -a
Sudo-1.8.17p1 Allow others to run commands as root
bash-4.4.012 The GNU Bourne Again Shell
cvs-1.12.13nb4 Concurrent Versions System
gcc6-6.3.0 The GNU Compiler Collection (GCC) - 6 Release Series
次に、root以外のユーザーとしてログインし、pkgsrcとbootstrapをダウンロードしました。
-bash-4.4$ cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r pkgsrc-2017Q1 -P pkgsrc
-bash-4.4$ cd pkgsrc/bootstrap
-bash-4.4$ ./bootstrap --unprivileged
...
...
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/vagrant/pkgsrc/bootstrap/work/bmake':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
===> exited with status 1
aborted.
$PATH
を変更しました。
-bash-4.4$ vi ~/.profile
PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R7/bin:/usr/X11R6/bin:/usr/pkg/bin
PATH=${PATH}:/usr/pkg/sbin:/usr/games:/usr/local/bin:/usr/local/sbin
GCC_PATH=/usr/pkg/gcc6/bin
PATH=${PATH}:${GCC_PATH}
-bash-4.4$ . ~/.profile
-bash-4.4$ echo $PATH
/home/vagrant/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R7/bin:/usr/X11R6/bin:/usr/pkg/bin:/usr/pkg/sbin:/usr/games:/usr/local/bin:/usr/local/sbin:/usr/pkg/gcc6/bin
その後、再試行しました。
-bash-4.4$ rm -fr work
-bash-4.4$ ./bootstrap --unprivileged
...
...
checking for gcc... gcc
checking for C compiler default output file name...
configure: error: in `/home/vagrant/pkgsrc/bootstrap/work/bmake':
configure: error: C compiler cannot create executables
See `config.log' for more details.
===> exited with status 77
aborted.
config.logは次のようになりました。
-bash-4.4$ view work/bmake/config.log
1 This file contains any messages produced by compilers while
2 running configure, to aid debugging if configure makes a mistake.
3
4 It was created by bmake configure 20140214, which was
5 generated by GNU Autoconf 2.64. Invocation command line was
6
7 $ configure --prefix=/home/vagrant/pkgsrc/bootstrap/work --with-default-sys-path=/home/vagrant/pkgsrc/bootstrap/work
/share/mk --with-machine-Arch=x86_64
8
9 ## --------- ##
10 ## Platform. ##
11 ## --------- ##
12
13 hostname = hello-netbsd
14 uname -m = AMD64
15 uname -r = 7.1
16 uname -s = NetBSD
17 uname -v = NetBSD 7.1 (GENERIC.201703111743Z)
18
19 /usr/bin/uname -p = x86_64
20 /bin/uname -X = unknown
21
22 /bin/Arch = unknown
23 /usr/bin/Arch -k = unknown
24 /usr/convex/getsysinfo = unknown
25 /usr/bin/hostinfo = unknown
26 /bin/machine = unknown
27 /usr/bin/oslevel = unknown
28 /bin/universe = unknown
29
30 PATH: /home/vagrant/pkg/bin
31 PATH: /home/vagrant/pkg/sbin
32 PATH: .
33 PATH: /home/vagrant/bin
34 PATH: /bin
34 PATH: /bin
35 PATH: /sbin
36 PATH: /usr/bin
37 PATH: /usr/sbin
38 PATH: /usr/X11R7/bin
39 PATH: /usr/X11R6/bin
40 PATH: /usr/pkg/bin
41 PATH: /usr/pkg/sbin
42 PATH: /usr/games
43 PATH: /usr/local/bin
44 PATH: /usr/local/sbin
45 PATH: /usr/pkg/gcc6/bin
46 PATH: /sbin
47 PATH: /usr/sbin
48
49
50 ## ----------- ##
51 ## Core tests. ##
52 ## ----------- ##
53
54 configure:2371: checking for gcc
55 configure:2387: found /usr/pkg/gcc6/bin/gcc
56 configure:2398: result: gcc
57 configure:2627: checking for C compiler version
58 configure:2636: gcc --version >&5
59 gcc (GCC) 6.3.0
60 Copyright (C) 2016 Free Software Foundation, Inc.
61 This is free software; see the source for copying conditions. There is NO
62 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
63
64 configure:2647: $? = 0
65 configure:2636: gcc -v >&5
66 Using built-in specs.
67 COLLECT_GCC=gcc
68 COLLECT_LTO_WRAPPER=/usr/pkg/gcc6/libexec/gcc/x86_64--netbsd/6.3.0/lto-wrapper
69 Target: x86_64--netbsd
70 Configured with: ../gcc-6.3.0/configure --disable-libstdcxx-pch --enable-nls --with-libiconv-prefix=/usr --enable-__cx
a_atexit --with-gxx-include-dir=/usr/pkg/gcc6/include/c++/ --enable-languages='c obj-c++ objc fortran c++' --enable-shared --e
nable-long-long --with-local-prefix=/usr/pkg/gcc6 --disable-libssp --enable-threads=posix --with-boot-ldflags='-static-libstdc
++ -static-libgcc -Wl,-R/usr/pkg/lib ' --with-Arch=nocona --with-tune=nocona --with-fpmath=sse --with-gnu-ld --with-ld=/usr/bi
n/ld --with-gnu-as --with-as=/usr/bin/as --prefix=/usr/pkg/gcc6 --build=x86_64--netbsd --Host=x86_64--netbsd --infodir=/usr/pk
g/gcc6/info --mandir=/usr/pkg/gcc6/man
71 Thread model: posix
72 gcc version 6.3.0 (GCC)
73 configure:2647: $? = 0
74 configure:2636: gcc -V >&5
75 gcc: error: unrecognized command line option '-V'
76 gcc: fatal error: no input files
77 compilation terminated.
78 configure:2647: $? = 1
79 configure:2636: gcc -qversion >&5
80 gcc: error: unrecognized command line option '-qversion'; did you mean '--version'?
81 gcc: fatal error: no input files
82 compilation terminated.
83 configure:2647: $? = 1
84 configure:2669: checking for C compiler default output file name
85 configure:2691: gcc conftest.c >&5
86 In file included from conftest.c:9:0:
87 /usr/pkg/gcc6/lib/gcc/x86_64--netbsd/6.3.0/include-fixed/stdio.h:54:23: fatal error: sys/cdefs.h: No such file or dire
ctory
88 #include <sys/cdefs.h>
89 ^
90 compilation terminated.
91 configure:2695: $? = 1
92 configure:2732: result:
93 configure: failed program was:
94 | /* confdefs.h */
95 | #define PACKAGE_NAME "bmake"
96 | #define PACKAGE_TARNAME "bmake"
97 | #define PACKAGE_VERSION "20140214"
98 | #define PACKAGE_STRING "bmake 20140214"
99 | #define PACKAGE_BUGREPORT "sjg@NetBSD.org"
100 | #define PACKAGE_URL ""
101 | /* end confdefs.h. */
102 | #include <stdio.h>
103 | int
104 | main ()
105 | {
106 | FILE *f = fopen ("conftest.out", "w");
107 | return ferror (f) || fclose (f) != 0;
108 |
109 | ;
110 | return 0;
111 | }
112 configure:2738: error: in `/home/vagrant/pkgsrc/bootstrap/work/bmake':
113 configure:: error: C compiler cannot create executables
114 See `config.log' for more details.
115
116 ## ---------------- ##
117 ## Cache variables. ##
118 ## ---------------- ##
119
120 ac_cv_env_CC_set=
121 ac_cv_env_CC_value=
122 ac_cv_env_CFLAGS_set=
123 ac_cv_env_CFLAGS_value=
124 ac_cv_env_CPPFLAGS_set=
125 ac_cv_env_CPPFLAGS_value=
126 ac_cv_env_CPP_set=
127 ac_cv_env_CPP_value=
128 ac_cv_env_LDFLAGS_set=
129 ac_cv_env_LDFLAGS_value=
130 ac_cv_env_LIBS_set=
131 ac_cv_env_LIBS_value=
132 ac_cv_env_build_alias_set=
133 ac_cv_env_build_alias_value=
134 ac_cv_env_Host_alias_set=
135 ac_cv_env_Host_alias_value=
136 ac_cv_env_target_alias_set=
137 ac_cv_env_target_alias_value=
138 ac_cv_prog_ac_ct_CC=gcc
139
140 ## ----------------- ##
141 ## Output variables. ##
142 ## ----------------- ##
143
144 CC='gcc'
145 CFLAGS=''
146 CPP=''
147 CPPFLAGS=''
148 DEFS=''
149 ECHO_C=''
150 ECHO_N='-n'
151 ECHO_T=''
152 EGREP=''
153 EXEEXT=''
154 GCC=''
155 GREP=''
156 INSTALL=''
157 INSTALL_DATA=''
158 INSTALL_PROGRAM=''
159 INSTALL_SCRIPT=''
160 LDFLAGS=''
161 LIBOBJS=''
162 LIBS=''
163 LTLIBOBJS=''
164 OBJEXT=''
165 PACKAGE_BUGREPORT='sjg@NetBSD.org'
166 PACKAGE_NAME='bmake'
167 PACKAGE_STRING='bmake 20140214'
168 PACKAGE_TARNAME='bmake'
169 PACKAGE_URL=''
170 PACKAGE_VERSION='20140214'
171 PATH_SEPARATOR=':'
172 Shell='/bin/sh'
173 ac_ct_CC='gcc'
174 ac_exe_suffix=''
175 bindir='${exec_prefix}/bin'
176 bmake_path_max=''
177 build_alias=''
178 datadir='${datarootdir}'
179 datarootdir='${prefix}/share'
180 default_sys_path=''
181 diff_u=''
182 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
183 dvidir='${docdir}'
184 exec_prefix='NONE'
185 filemon_h='no'
186 force_machine=''
187 Host_alias=''
188 htmldir='${docdir}'
189 includedir='${prefix}/include'
190 infodir='${datarootdir}/info'
191 libdir='${exec_prefix}/lib'
192 libexecdir='${exec_prefix}/libexec'
193 localedir='${datarootdir}/locale'
194 localstatedir='${prefix}/var'
195 machine=''
196 machine_Arch=''
197 mandir='${datarootdir}/man'
198 mksrc=''
199 oldincludedir='/usr/include'
200 pdfdir='${docdir}'
201 prefix='/home/vagrant/pkgsrc/bootstrap/work'
202 program_transform_name='s,x,x,'
203 psdir='${docdir}'
204 sbindir='${exec_prefix}/sbin'
205 sharedstatedir='${prefix}/com'
206 sysconfdir='${prefix}/etc'
207 target_alias=''
208 use_meta='yes'
209
210 ## ----------- ##
211 ## confdefs.h. ##
212 ## ----------- ##
213
214 /* confdefs.h */
215 #define PACKAGE_NAME "bmake"
216 #define PACKAGE_TARNAME "bmake"
217 #define PACKAGE_VERSION "20140214"
218 #define PACKAGE_STRING "bmake 20140214"
219 #define PACKAGE_BUGREPORT "sjg@NetBSD.org"
220 #define PACKAGE_URL ""
221
222 configure: exit 77
いくつかのファイルが欠落していると思いましたが、どうしたらよいか理解できませんでした。
pdate2(2017/04/11)以下は `gcc -v 'の結果です
-bash-4.4$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/pkg/gcc6/libexec/gcc/x86_64--netbsd/6.3.0/lto-wrapper
Target: x86_64--netbsd
Configured with: ../gcc-6.3.0/configure --disable-libstdcxx-pch --enable-nls --with-libiconv-prefix=/usr --enable-__cxa_atexit --with-gxx-include-dir=/usr/pkg/gcc6/include/c++/ --enable-languages='c obj-c++ objc fortran c++' --enable-shared --enable-long-long --with-local-prefix=/usr/pkg/gcc6 --disable-libssp --enable-threads=posix --with-boot-ldflags='-static-libstdc++ -static-libgcc -Wl,-R/usr/pkg/lib ' --with-Arch=nocona --with-tune=nocona --with-fpmath=sse --with-gnu-ld --with-ld=/usr/bin/ld --with-gnu-as --with-as=/usr/bin/as --prefix=/usr/pkg/gcc6 --build=x86_64--netbsd --Host=x86_64--netbsd --infodir=/usr/pkg/gcc6/info --mandir=/usr/pkg/gcc6/man
Thread model: posix
gcc version 6.3.0 (GCC)
そして、インストールプロセスで最小インストールを選択しました。それは間違っていますか?
私はついにこの問題を解決しました。彼らが言ったように、私がすべきことは、comp.tgzをダウンロードして解凍することでした。さらに、 NetBSD WebサイトのFAQ がありました。
# cd /
# ftp ftp://ftp.netbsd.org (as an anonymous user)
> cd pub/NetBSD/NetBSD-7.1/AMD64/binary/sets
> get comp.tgz
> exit
# tar --unlink -zxvpf comp.tgz
これを行った後、./bootstrap --unprivileged
私のホームディレクトリで(root以外のユーザーとして)働いていました。
常に詳細なエラーメッセージを提供してください! (または、少なくとも、実際にどのような問題が発生しているかについての手がかりを与えるには十分すぎるほどです。これにより、不必要な余分な交換が回避されます。意味のある方向性を提供するのに十分な情報がない場合、多くの人々は質問を単に無視します)
とにかく、./bootstrap --unprivileged
はNetBSDホストで動作するはずです(私にとっては動作しました)。
しかし、それが良い考えかどうかはわかりません。システムファイルを変更するか、setuidをインストールする必要があるため、非特権モードでインストールできない(およびインストールできない)ものもあります。
私は通常のユーザーとしてパッケージをビルドしますが、常にroot
としてインストールします。
cコンパイラ(など)であるnetbsd用の「comp」セットをインストールしなかったようです。 「gcc-v」を実行してみてください。
FWIW、最高のNetBSDとpkgsrcのヘルプは、メーリングリストを介して達成されます。私はこれを偶然に見ただけです http://netbsd.fi/