나는 우분투에서 pkgsrc를 정기적으로 사용하지만 NetBSD를 처음 사용합니다. 우분투의 패키지 종속성에 영향을 주지 않고 소스에서 패키지를 빌드하고 설치할 수 있습니다.
예를 들어, apt-get을 통해 Ruby 2.2를 설치했더라도 $HOME/pkg/bin
pkgsrc를 통해 Ruby 2.3을 빌드하고 설치할 수 있습니다. 의존성 문제 없이 Ruby 2.3을 사용할 수 있습니다.
이 기능은 나에게 매우 도움이 되었으며 지금까지 pkgsrc를 좋아하는 이유이기도 합니다.
이제 다른 PC에 NetBSD 7.1을 설치하겠습니다. pkgsrc를 내 패키지 관리자로 다운로드하고 $HOME/pkg/bin
우분투에서처럼 시스템 전체에 영향을 주지 않고 NetBSD 자체에서도 패키지를 내 홈 디렉토리( )에 빌드하고 싶습니다. pkgsrc를 사용하십시오.
내 홈 디렉토리에서 시도 하면 ./bootstrap --unpriviledged
작동하지 않습니다. 자세한 오류 메시지가 나오는 이유를 묻기 전에 NetBSD가 시스템 환경에 아무런 영향을 주지 않고 각 사용자마다 다른 pkgsrc를 다운로드하여 사용하도록 설계되었거나 고려되었는지 물어보겠습니다.
PS 영어는 제 모국어가 아닙니다. 오타, 문법, 단어 선택 오류를 양해해 주시기 바랍니다.
업데이트(2017/04/08)
Greg A. Woods의 답변 덕분에 자세한 오류 메시지를 표시해야 한다는 점을 이해했습니다.
처음에는 항상 루트 계정을 사용하여 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
그런 다음 루트가 아닌 사용자로 로그인하고 pkgsrc 및 bootstrap을 다운로드했습니다.
-bash-4.4$ cvs -q -z2 -d [email protected]:/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 "[email protected]"
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='[email protected]'
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 "[email protected]"
220 #define PACKAGE_URL ""
221
222 configure: exit 77
일부 파일이 누락된 것 같은데 어떻게 해야 할지 모르겠습니다.
업데이트 2(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)
그리고 설치 과정에서 최소 설치를 선택했습니다. 이게 잘못된 건가요?
답변1
항상 자세한 오류 메시지를 제공하세요! (또는 적어도 직면한 실제 문제에 대한 단서를 제공하기에 충분합니다. 이렇게 하면 불필요한 추가 의사소통을 피할 수 있습니다. 의미 있는 방향을 제공할 만큼 정보가 충분하지 않으면 많은 사람들이 단순히 문제를 무시할 것입니다.)
어쨌든 ./bootstrap --unprivileged
NetBSD 호스트에서 작동해야 합니다(저에게는 효과적이었습니다).
그러나 그것이 좋은 생각인지는 잘 모르겠습니다. 일부 항목은 시스템 파일을 수정하거나 setuid 등을 설치해야 하기 때문에 비권한 모드에서는 설치되지 않습니다(설치할 수 없습니다).
일반 사용자로 패키지를 빌드하지만 항상 root
.
답변2
C 컴파일러 등인 netbsd의 "comp" 세트가 설치되어 있지 않은 것 같습니다. "gcc -v"를 실행해 보세요.
FWIW, 최고의 NetBSD 및 pkgsrc 도움말은 메일링 리스트를 통해 제공됩니다. 저는 우연히 이것을 여기에서 보았습니다.http://netbsd.fi/
답변3
마침내 이 문제를 해결했습니다. 그들이 말했듯이, 내가 해야 할 일은 comp.tgz를 다운로드하고 압축을 푸는 것입니다. 또한,NetBSD 웹사이트 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
내 홈 디렉터리에서 루트가 아닌 사용자로 작업합니다.