libimobiledevice 설치 중 make 명령어 오류 (CRYPTO_LOCK을 찾을 수 없습니다)
글쓴이: misohouse / 작성시간: 토, 2016/05/14 - 9:22오후
http://stackoverflow.com/questions/37185443/i-cant-find-crypto-lock-in-openssl-crypto-h
위 주소는 먼저 스택오버플로우에 올린 질문입니다.
보시면 아시겠지만 openssl이 깔려있음에도 불구하고 openssl의 crypto.h에 있는 CRYPTE_LOCK 변수를 인식하지 못하고 계속 에러가 나는 것을 확인할 수 있었습니다.
답글에 달렸듯이 Makefile에 내용을 바꿨는데도 불구하고 오류가 나더라구요..
Makefile에는
openssl_CFLAGS = -I/usr/local/include
이라고 나와있는데, 실제로 crypto.h가 2개 저장되어있고 하나는 /usr/local/include/openssl에 다른 하나는 /usr/include/openssl에 저장되어있습니다.
저 변수가 정의되어있는 crypto.h는 /usr/include/openssl에 있어서 Makefile의 내용을 바꿨는데도 불구하고 여전히 같은 오류가 납니다.
==
여기까지가 스택오버플로우에 올린 질문과 답글을 수행한 결과고 아직도 해결을 못하고 있습니다.
제가 생각한대로 Makefile의 내용을 바꾸는게 맞는지 아니면 다른 문제가 있는 건지 궁금합니다.
답변해주시면 감사하겠습니다. ^^
Forums:
음 ..
시스템에 이미 openssl-dev 가 설치되어 있는 상태에서, openssl 을 git 로 받아서 추가로 설치한 듯 한데..
가급적 openssl-dev 를 그냥 이용하시는게 낫고, 새 버전의 openssl 이 필요하면 git 보다는 download 에서 tar.gz 으로 배포된 소스를 받아서 설치하는게 낫습니다.
git 에서 설치한 openssl (/usr/local/include/openssl) 쪽은 그냥 삭제하시고, libimobiledevice 에서 새로 configure 해보시죠.
그리고 어느 Makefile 을 고쳤는지 모르겠지만, automake 로 돌아가는 애들은..
Makefile 을 직접 고치기 보다는 configure 할 때 환경변수나 옵션 등으로 넣는게 낫습니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
.
apt-get install openssl로 설치했었는데 그러면 apt-get remove openssl로 삭제하고 다시 진행해보면 될까요?
그리고 고친 Makefile은 libimobiledevice 폴더 내부에 있는 Makefile이었습니다.
automake로 돌아가는지 여부는 어떻게 판단하나요??
어떻게든 되는 것은 없다.
음 ..
작업하신 내역에 대한 설명이 없으니 계속 추정만 하게 되는데..
/usr/include/openssl 이 있다는 말로 미루어 openssl-dev 를 설치하신 것 같고..
openssl-dev 패키지가 설치되어 있다면 그냥 그걸로 된 것 같네요. 그건 건드릴 필요는 없을 것 같구요.
git 소스 트리가 있는 url 과 /usr/local/include/openssl 에 대한 것으로 볼 때, git 로 받아서 make install 까지 하신것 같은데..
일단 /usr/local/lib 과 /usr/local/include/openssl 에 각각 설치된 라이브러리와 헤더를 삭제하면, git 로 설치된 것은 날아가고..
openssl-dev 만 남을테니.. 이 상태에서 다시 configure 해보시란 말이었습니다.
configure, automake 는 떨어질 수 없는 조합이니.. 이를 제대로 이용하시려면 configure 옵션이나 환경 변수를 이용하시고..
필요하면 configure.ac 나 Makefile.am 등을 고치고 다시 configure 를 하는게 맞다는 얘기입니다.
그냥 Makefile 하나 고쳐봐야, 이 변수들이 하위 Makefile 에 상속되거나 환경 변수로 export 되게 하지 않았다면..
제대로 적용 안 될 가능성이 높습니다.
게다가 Makefile 고쳐봐야 configure 하면 다시 초기화 되니까 고치나 마나죠..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
.
history로 확인해본 결과는 아래와 같습니다. 그냥 닥치는 대로 openssl에 관한 건 다 설치 한 것 같네요.
마지막 1751번째 명령어는 올려주신 댓글을 보고 openssl을 지워본 다음에 다시 make를 실행하기 위해 실행한 명령어 입니다.
1411 git clone git://git.openssl.org/openssl.git
1413 cd openssl
1428 openssl version
1429 apt-get remove openssl
1431 apt-cache search openssl
1432 apt-get install openssl
1434 openssl version
1435 apt-get install libcrypt-openssl-bignum-perl
1436 apt-get install libcrypt-openssl-random-perl
1751 apt-get remove openssl
이후 make 명령어를 수행했는데 지웠는데 여전히
root@localhost:~/iphone_test/libimobiledevice# make
make all-recursive
make[1]: Entering directory `/root/iphone_test/libimobiledevice'
Making all in common
make[2]: Entering directory `/root/iphone_test/libimobiledevice/common'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/root/iphone_test/libimobiledevice/common'
Making all in src
make[2]: Entering directory `/root/iphone_test/libimobiledevice/src'
CC idevice.lo
idevice.c: In function 'locking_function':
idevice.c:57:13: error: 'CRYPTO_LOCK' undeclared (first use in this function)
if (mode & CRYPTO_LOCK)
^
idevice.c:57:13: note: each undeclared identifier is reported only once for each function it appears in
idevice.c: In function 'internal_idevice_deinit':
idevice.c:105:2: warning: 'ERR_remove_thread_state' is deprecated (declared at /usr/local/include/openssl/err.h:362) [-Wdeprecated-declarations]
ERR_remove_thread_state(NULL);
^
idevice.c: In function 'idevice_connection_enable_ssl':
idevice.c:706:2: warning: implicit declaration of function 'SSLv3_method' [-Wimplicit-function-declaration]
SSL_CTX *ssl_ctx = SSL_CTX_new(SSLv3_method());
^
idevice.c:706:2: warning: passing argument 1 of 'SSL_CTX_new' makes pointer from integer without a cast [enabled by default]
In file included from idevice.c:39:0:
/usr/local/include/openssl/ssl.h:1381:17: note: expected 'const struct SSL_METHOD *' but argument is of type 'int'
__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
^
idevice.c:760:2: warning: 'ERR_remove_thread_state' is deprecated (declared at /usr/local/include/openssl/err.h:362) [-Wdeprecated-declarations]
ERR_remove_thread_state(NULL);
^
idevice.c: At top level:
idevice.c:55:13: warning: 'locking_function' defined but not used [-Wunused-function]
static void locking_function(int mode, int n, const char* file, int line)
^
idevice.c:63:22: warning: 'id_function' defined but not used [-Wunused-function]
static unsigned long id_function(void)
^
make[2]: *** [idevice.lo] Error 1
make[2]: Leaving directory `/root/iphone_test/libimobiledevice/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/iphone_test/libimobiledevice'
make: *** [all] Error 2
root@localhost:~/iphone_test/libimobiledevice#
오류가 나네요
시스템에 존재하는 crypto.h 파일들의 위치는 다음과 같습니다.
root@localhost:~# find / -name "crypto.h"
/root/iphone_test/openssl-master/include/openssl/crypto.h
/root/iphone_test/openssl/include/openssl/crypto.h
/usr/local/include/openssl/crypto.h
/usr/include/openssl/crypto.h
/usr/include/gnutls/crypto.h
/usr/src/linux-headers-4.2.0-27/include/linux/crypto.h
/usr/src/linux-headers-4.2.0-27-generic/include/config/crypto.h
/usr/src/linux-headers-4.2.0-27-generic/include/config/crypto/dev/ccp/crypto.h
/usr/src/linux-headers-4.2.0-27-generic/include/config/rt2x00/lib/crypto.h
root@localhost:~#
와 같은 위치에 crypto.h 가 존재하고 제가 원하는 crypto.h 즉, make 오류 발생 시 정의되지 않았다는 CRYPTO_LOCK 변수가 선언되어있는 crypto.h 파일은 /usr/include/openssl/crypto.h 입니다.
아래는 ./configure를 했을 때 화면입니다.
Configuration for libimobiledevice 1.2.1:
-------------------------------------------
Install prefix: .........: /usr/local
Debug code ..............: no
Python bindings .........: no
SSL support backend .....: OpenSSL
Now type 'make' to build libimobiledevice 1.2.1,
and then 'make install' for installation.
root@localhost:~/iphone_test/libimobiledevice#
근데 원래 설치법에는 ./autogen.sh 실행이후 make를 하라고 해서 ./autogen.sh 결과 화면도 보여드리겠습니다.
Configuration for libimobiledevice 1.2.1:
-------------------------------------------
Install prefix: .........: /usr/local
Debug code ..............: no
Python bindings .........: no
SSL support backend .....: OpenSSL
Now type 'make' to build libimobiledevice 1.2.1,
and then 'make install' for installation.
root@localhost:~/iphone_test/libimobiledevice#
(근데 이렇게 보니까 똑같네요..ㅎㅎ;;)
이게 제가 한 작업의 전부입니다. 뭐가 문제일까요
어떻게든 되는 것은 없다.
음 ..
openssl-dev 가 아니라 libssl-dev 인데 잘못 썼네요. 미안합니다. 얘는 왜 이리 매번 헷갈리는지.. ;;
다른 라이브러리와는 달리 openssl 버전에 dependency 가 없으니..
git 에서 받아서 수동으로 설치한 것은 필요 없으니 지우면 된다는 뜻입니다.
일단 openssl, libssl-dev 이 패키지가 설치된 상태에서, 다시 ./configure, make 해보세요.
거기서부터가 시작이고.. 그 상태에서 안된다면 이제 하나씩 따져봐야 할겁니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
.
openssl은 apt-get으로 다시 설치했고, libssl-dev는 이미 최신버전이 존재하고 있었습니다.
configure 후 make 명령을 실행하니 여전히 같은 오류가 발생합니다.
해당 폴더에 있는 파일들은 아래와 같습니다.
root@localhost:~/iphone_test/libimobiledevice# ls
AUTHORS README config.h cython libtool
COPYING aclocal.m4 config.h.in depcomp ltmain.sh
COPYING.LESSER autogen.sh config.log docs m4
Makefile autom4te.cache config.status doxygen.cfg missing
Makefile.am common config.sub doxygen.cfg.in src
Makefile.in compile configure include stamp-h1
NEWS config.guess configure.ac install-sh tools
root@localhost:~/iphone_test/libimobiledevice#
어떤 파일을 열어서 점검해봐야할까요?
어떻게든 되는 것은 없다.
음 ..
config.log 에서 openssl 체크하는 부분 로그는 어떻게 나왔는지..?
환경변수 PKG_CONFIG_PATH 가 /usr/local 쪽으로 설정되어 있는지..?
/usr/local/openssl 쪽은 삭제하셨는지..?
make clean 또는 패키지를 새로 압축을 푼 후에 ./configure 해보셨는지..?
http://www.libimobiledevice.org/
위 링크에 있는 libimobiledevice-1.2.0.tar.bz2, libplist-1.12.tar.bz2, libusbmuxd-1.0.10.tar.bz2 와..
ubuntu 에 있는 libssl-dev 를 이용해서 다음 순서대로 빌드해 봤음..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
.
이제 같은 곳에서는 에러가 안나는데 새로운 곳에서 아래 같은 에러가 뜨네요..
아 진짜 make 돌릴 때 한 번에 되는걸 본적이 없네요 ㅠㅠ
Making all in tools
make[2]: Entering directory `/root/iphone_test/libimobiledevice-1.2.0/tools'
CC idevice_id-idevice_id.o
CCLD idevice_id
../src/.libs/libimobiledevice.so: undefined reference to `CRYPTO_set_locking_callback'
../src/.libs/libimobiledevice.so: undefined reference to `CRYPTO_num_locks'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_library_init'
../src/.libs/libimobiledevice.so: undefined reference to `CRYPTO_set_id_callback'
../src/.libs/libimobiledevice.so: undefined reference to `CRYPTO_cleanup_all_ex_data'
../src/.libs/libimobiledevice.so: undefined reference to `EVP_cleanup'
../src/.libs/libimobiledevice.so: undefined reference to `SSLv3_method'
collect2: error: ld returned 1 exit status
make[2]: *** [idevice_id] Error 1
make[2]: Leaving directory `/root/iphone_test/libimobiledevice-1.2.0/tools'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/iphone_test/libimobiledevice-1.2.0'
make: *** [all] Error 2
root@localhost:~/iphone_test/libimobiledevice-1.2.0#
어떻게든 되는 것은 없다.
.
실행한 명령들은 아래와 같습니다.
1867 cd libplist-1.12/
1868 clear
1869 ./configure --without-cython --prefix=/usr/local
1870 make && make install
1871 clear
1872 cd ..
1873 cd libusbmuxd-1.0.10/
1874 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/home/ymir/local
1875 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local
1876 make && make install
1877 cd ..
1878 ls
1879 cd libimobiledevice-1.2.0/
1880 clear
1881 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local --without-cython
1882 make && make install
어떻게든 되는 것은 없다.
음 ..
링커가 openssl (libcrypto.so, libssl.so) 라이브러리를 찾지 못했기 때문에 발생한 에러일겁니다.
openssl 라이브러리가 설치되지 않았거나, 엉뚱한 경로에서 라이브러리를 찾고 있거나.. 뭔가 문제가 있겠죠.
위에 댓글 앞부분에 있는 질문 내용 다 체크해 보셨나요?
예전에 작업하던 소스에서 계속 뭔가 하고 있는거라면 config cache 에 남아 있던 내용이라던가, 이전에 빌드했던 찌꺼기들이 남아서..
예전 configure 결과를 참조할 수도 있습니다. make clean 하고 빌드 해보시고, 아니면 소스 새로 압축 풀어서 다시 해보세요.
그 전에 위의 openssl 라이브러리들 제대로 설치 되어 있는지 확인해 보시구요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
.
1. config.log 에서 openssl 체크하는 부분 로그는 어떻게 나왔는지..?
2. 환경변수 PKG_CONFIG_PATH 가 /usr/local 쪽으로 설정되어 있는지..?
1.
config.log 에서 openssl 관련해서 확인한 부분의 내용은 아래와 같습니다.
pkg_cv_openssl_CFLAGS='-I/usr/local/include '
openssl_CFLAGS='-I/usr/local/include '
2.
환경변수 값을 보는 명령어가 echo $변수명으로 알고 있는데 변수명 부분에 PKG_CONFIG_PATH 입력해도 아무 값도 안나와서 잘못 알고 있는 것 같습니다..
3.
openssl, libcrypto, libssl 모두 다 설치되어있었고 /usr/local/ 위치에 openssl이 없는 상황에서 진행하였습니다.
4.
ymir 님께서 말씀해주신 사이트에 있는 패키지들을 다운받아서 설치했고 그 전에 기존에 작업했던 폴더들은 전부 make clean 후 삭제하였습니다.
5.
아마 openssl을 엉뚱한 경로에서 찾고 있는 것 같은데.. 이럴 경우 어떻게 수정을 해줘야할까요?
설치에 필요한 패키지들은 다 있는 것 같은데 설치가 안되는 걸로 봐서는 이렇게 밖에 해석이 되지 않습니다.
도와주셔서 감사합니다.
음 ..
PKG_CONFIG_PATH 를 /usr/local/lib/pkgconfig 으로 주었으니, pkg-config 이 거기에서 라이브러리를 우선 찾았을 거고..
그래서 openssl_CFLAGS 에 /usr/local/include 가 들어간게 아닐까 싶네요.
/usr/local/lib/pkgconfig 에 openssl.pc 파일이 있는지 확인해 보시고, 있으면 얘도 지우셔야 할겁니다.
다시 configure 하고, grep -i openssl config.log 로 확인해 보세요. 달라진게 있는지..
근데 /usr/local/lib 에 libssl.so 와 libcrypto.so 가 없다면, /usr/lib 에서 찾을 것 같은데.. 좀 이상하네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
.
말씀해주신 위치에 있는 openssl.pc 파일을 찾아서 지운 후에
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local --without-cython
명령을 통해 ./configure를 진행하였고
변경된 사항을 확인해보니 openssl_CFLAGS의 값이 없어진 것을 확인할 수 있었습니다.
root@localhost:~/iphone_test/libimobiledevice-1.2.0# grep -i openssl config.log
configure:17273: checking for openssl
configure:17280: $PKG_CONFIG --exists --print-errors "$pkg_req_openssl"
configure:17297: $PKG_CONFIG --exists --print-errors "$pkg_req_openssl"
ac_cv_env_openssl_CFLAGS_set=
ac_cv_env_openssl_CFLAGS_value=
ac_cv_env_openssl_LIBS_set=
ac_cv_env_openssl_LIBS_value=
pkg_cv_openssl_CFLAGS=' '
pkg_cv_openssl_LIBS='-lssl -lcrypto '
openssl_CFLAGS=' '
openssl_LIBS='-lssl -lcrypto '
ssl_requires='openssl >= 0.9.8'
#define HAVE_OPENSSL 1
root@localhost:~/iphone_test/libimobiledevice-1.2.0#
그러나 여전히 make는 같은 오류가 납니다..ㅠㅠ (make clean 후 해도 마찬가지 입니다)
말씀하신 파일들의 위치는 아래와 같습니다.
root@localhost:~/iphone_test/libimobiledevice-1.2.0# find / -name libssl.so
/usr/local/lib/libssl.so
/usr/lib/x86_64-linux-gnu/libssl.so
root@localhost:~/iphone_test/libimobiledevice-1.2.0# find / -name libcrypto.so
/usr/local/lib/libcrypto.so
/usr/lib/x86_64-linux-gnu/libcrypto.so
root@localhost:~/iphone_test/libimobiledevice-1.2.0#
음 ..
애초에 libssl-dev 만 설치했거나, openssl 의 git 대신 Downloads 에 있는 tar.gz 를 설치했더라면 아마도 이런 상황은 없었을 것 같은데.. 조금 안타깝네요.
어쨌거나 이 둘 중의 하나가 제대로 설치된 상태로 돌아가야 할 겁니다.
위에서 먼저 git 로 설치한 건 다 지우시라고 했는데.. 라이브러리는 안 지우신것 같네요. (/usr/local/lib 에 있는..)
ld 의 라이브러리 검색 경로가 /usr/lib 보다 /usr/local/lib 이 우선이라, 계속 /usr/local/lib 을 참조하고 있는 것일 수도 있습니다.
일단, git 로 설치했던 흔적들을 모두 제거하고 libssl-dev 패키지의 파일들이 모두 정상적인 상태인지 확인해 보시죠.
/usr/local 에 있는 openssl 과 관련된 모든 라이브러리, 헤더, openssl 실행파일, .pc 파일 등을 모두 제거한 후에..
dpkg -V libssl-dev 로 설치된 패키지들이 모두 정상인지 확인, 만약 아니라면 sudo apt-get install --reinstall libssl-dev 로 재설치..
해서 libssl-dev 만 설치된 상태인지 확인해 보고.. 소스를 다시 풀어서 시도해 보시죠.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
.
apt-get remove openssl
apt-get remove libssl-dev
명령어 실행하고
/usr/local/lib에서 rm libssl* 명령어 실행한 후에
apt-get install --reinstall libssl-dev 명령어로 재설치 한 후에
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local --without-cython
명령어로 configure하고
make한 결과 아래와 같은 오류가 나타납니다.
/usr/bin/ld: warning: libssl.so.1.1, needed by ../src/.libs/libimobiledevice.so, not found (try using -rpath or -rpath-link)
../src/.libs/libimobiledevice.so: undefined reference to `SSL_write@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_set_connect_state@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_CTX_free@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_set_bio@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_shutdown@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_set_verify@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_read@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_CTX_new@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_CTX_use_RSAPrivateKey@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_do_handshake@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_CTX_use_certificate@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_free@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_COMP_get_compression_methods@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_new@OPENSSL_1_1_0'
얼핏 보니 openssl이 없다는 거 같은데, 말씀해주신 Downloads에 있는 tar.gz를 설치했어야 한다는게 무슨 말씀인지 모르겠습니다.
그리고 git으로 설치했다는게 apt-get 으로 설치했다는걸 의미하는건지도 궁금합니다.
뭔가 openssl만 제대로 깔면 해결될듯한데.. 어떻게 할까요?
어떻게든 되는 것은 없다.
음 ..
_orz..
libssl-dev 패키지나 https://www.openssl.org/source/openssl-1.0.2h.tar.gz 둘 중에 하나를 설치해야 하는데..
www.openssl.org/source/gitrepo.html 에 있는 소스를 받아서 설치하는 바람에 문제가 생긴 겁니다.
git 로 받은 소스를 빌드하면 /usr/local 에 설치되는데.. 이걸 제대로 삭제하지 않아서 문제가 아직도 해결되지 않고 있는 상태...
openssl-1.0.2h.tar.gz 을 소스 빌드해서 설치하면, git 로 받은 소스를 빌드했을 때와 마찬가지로 /usr/local 에 설치되는데..
그냥 얘 설치해서 했어도 마찬가지로 정상적으로 빌드되었을 겁니다.
지금 계속 말씀드리고 있는 것은.. 그냥 패키지 관리툴로 libssl-dev 를 제대로 설치하고..
이전에 git 로 받아 빌드해서 설치했던 것들을 제대로 지우시라는 겁니다.
- 설치해야 하는 것 : libssl-dev, openssl 패키지
- 지워야 하는 것 : /usr/local/lib/{libssl|libcrypto}.*, /usr/loca/lib/pkgconfig/{openssl|libssl|libcrypto}.pc
그래도 안되면 그냥 apt-get 으로 libimobiledevice-dev 를 설치해서 쓰시는게 나을것 같네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
.
아.. 제가 지워야하는 것을 제대로 못지웠네요 ㅠㅠ
저거 다 지우고 설치야할것 설치하고 하니까 제대로 됬습니다.
마지막으로.. PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local --without-cython 여기서
KG_CONFIG_PATH=/usr/local/lib/pkgconfig
--prefix=/usr/local
--without-cython
이거만 설명해주실 수 있나요..?
도와주셔서 정말 감사합니다.
이제 idevicerestore를 설치해보려구요.. 여전히 여기서도 오류가 나지만 좀 더 고민해보겠습니다..ㅎㅎ;;
정말 정말 감사합니다!
어떻게든 되는 것은 없다.
음 ..
https://help.ubuntu.com/community/EnvironmentVariables#Bash.27s_quick_assignment_and_inheritance_trick
man pkg-config
./configure --help 하신 후에 내용을 꼼꼼히 읽어 보세요.
--without-cython 은 제 시스템에 불필요한 cython 패키지를 설치하고 싶지 않아서 건너뛴겁니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
소스트리로부터 수작업으로 make install된
소스트리로부터 수작업으로 make install된 파일들을 지울 때,
아마도 제대로 된 근본적인 해결방법들이 있을 것 같기는 합니다만,
그냥 이도 저도 귀찮고 일단 저질러진 찜찜함을 얼른 청소하고 싶다 할 때 쓰던 방법이 있습니다.
소스트리로부터 make install 된 파일들은 일정범위 안에서 (즉, make install 실행되는 시간)
타임스탬프가 형성되므로 find 명령으로 타임스탬프 범위를 적당히 주면
특정 패키지에 의해 설치된 파일들을 파악할 수 있습니다.
예를 들어, 서너시간 전에 --prefix=/usr/local 로 설치된 패키지를 구분하려면
정도로 주면 변경시각이 3000분 ~ 1000분 사이인 파일들을 찾아줄테니
나오는 목록을 훑어보고 맞다 싶으면 아래와 같이 지워주면 됩니다.
시간은 상황에 따라 적당히 지정하면 됩니다.
경우에 따라서는 -mmin 대신 -mtime 옵션으로 날짜 단위로만 지정해도 충분할 수 있습니다.
만약 다른 패키지들과 타임스탬프 범위가 겹치거나 간격이 너무 촘촘해서 시간지정이 어렵다 싶을때는
지우고 싶은 패키지 소스트리에서 make install 을 다시 해서 변경시각을 갱신해주고
정도 해 주면 최근 10분 안에 변경된 파일들만 나올테니 구분이 가능하겠죠.
근사한 방법은 아니지만 가끔 귀찮은 상황에서 빠져나오는데는 도움이 되었습니다.
음 ..
사실 find 로 하는게 간편하긴 하죠.
다만 그 정도로 /usr/local 을 지저분(?)하게 쓰는 타입은 아니라서, 미처 생각을 못했네요.
쓰다보면 가끔 make uninstall 을 제공해주는 고마운 애들이 있더라구요.
없어도 뭐 Makefile 에서 install 을 찾아서 그 부분을 uninstall 할 수 있게끔 바꿔서 추가해 주면 되고..
아니면 /usr/local 이 아닌 별도의 디렉토리에 설치해서 PATH 추가해서 쓰다가 디렉토리 통채로 날리는 정도..
일반적인 개발 환경은 대개 소스 빌드 하지 않고.. 가급적 패키지 설치로 끝내는데..
크로스 빌드 환경이라면, 어차피 그냥 로컬 디렉토리에 다 모아놓고 쓸 수 밖에 없으니..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
제가 misohouse님께 남기는 댓글을 ymir님
제가 misohouse님께 남기는 댓글을 ymir님 글에 붙여놨네요.
ymir님 댓글들 보며 여러가지 많이 배우고 있습니다.
오해의 소지가 있을 수 있는데 가벼이 넘겨주셔서 고맙습니다.
.
두 분다 감사합니다!
더 열심히 공부하겠습니다 ^^
어떻게든 되는 것은 없다.
댓글 달기