
오늘 openssh rpm을 설치할 때 문제가 발생했습니다.
[root@local_host ]# rpm -i openssh-6.7p1-1.i386.rpm
error: Failed dependencies:
libcrypto.so.1.0.0 is needed by openssh-6.7p1-1.i386
아? 정말 이상해:
[root@local_host ]# ls -l /lib/libcrypto*
lrwxrwxrwx 1 root root 19 Jan 20 15:18 /lib/libcrypto.so.1.0.0 -> libcrypto.so.1.0.1l
-rwxr-xr-x 1 root root 1815536 Jan 19 04:57 /lib/libcrypto.so.1.0.1l
rpm에 대한 종속성은 내가 설치한 것과 동일한 파일을 나열하는 것 같습니다.
[root@local_host ]# rpm -qpR openssh-6.7p1-1.i386.rpm
config(openssh) = 6.7p1-1
...
libcrypto.so.1.0.0
강제로 설치하면 작동합니다. 물론 필요한 라이브러리가 설치되어 있기 때문에 작동합니다. 하지만 이것이 불안정해지는 원인은 무엇입니까?
새로운 openssl(또한 수동으로 롤링) 설치 후에 ldconfig를 실행했으므로 이러한 라이브러리가 시스템에 표시되어야 합니다.
상자는 CentOS 5.4입니다.
추가 정보
@nlu에 따르면 어떤 패키지가 관련 파일을 소유하고 있는지 확인했습니다. ssh rpm이 원하는 파일은 실제로 실제 파일에 대한 심볼릭 링크입니다.
[root@local_host ~]# rpm -qf /lib/libcrypto.so.1.0.0
file /lib/libcrypto.so.1.0.0 is not owned by any package
[root@local_host ~]# rpm -qf /lib/libcrypto.so.1.0.1l
openssl-1.0.1l-1
그러나 rpm에는 표시되지 않습니다.
[root@local_host ~]# rpm -ql openssl-1.0.1l-1
...
/lib/libcrypto.so.1.0.1l
...
그래서 좀 더 일을 했습니다. rpm에서 심볼릭 링크를 패키징하는 방법을 알아냈고, openssl의 표준 설치를 반영하도록 이름을 수정하고 rpm을 다시 회전시켰습니다. 설치에는 문제가 없습니다. 그런 다음 openssh를 설치했는데 똑같은 오류가 발생했습니다!
지금 상자에는 다음이 들어 있습니다.
[root@local_host ]# ls -l /lib/libcrypto*
lrwxrwxrwx 1 root root 27 Jan 21 14:16 /lib/libcrypto.so.1.0.0 -> /usr/lib/libcrypto.so.1.0.0
lrwxrwxrwx 1 root root 27 Jan 21 14:16 /lib/libcrypto.so.6 -> /usr/lib/libcrypto.so.1.0.0
[root@local_host ]# ls -l /usr/lib/libcrypto*
lrwxrwxrwx 1 root root 27 Jan 21 14:16 /usr/lib/libcrypto.so -> /usr/lib/libcrypto.so.1.0.0
-rwxr-xr-x 1 root root 1815536 Jan 21 05:43 /usr/lib/libcrypto.so.1.0.0
[root@local_host ]# rpm -ql openssl-1.0.1l
...
/lib/libcrypto.so.1.0.0
/lib/libcrypto.so.6
/usr/lib/libcrypto.so
/usr/lib/libcrypto.so.1.0.0
이제 모든 것이 제자리에 있어야 할 것 같은데요? 내가 놓친 게 무엇입니까?
답변1
RPM 데이터베이스의 내용과 파일 시스템의 내용은 독립적입니다.
libcrypto가 RPM에서 설치되었음을 증명하려면 파일이 rpm에 속하는지 확인해야 합니다.
rpm -qf /lib/libcrypto.so.1.0.0
rpm -qf /lib/libcrypto.so.1.0.1l
또는 당신은 할 수 있습니다
rpm -ql {RPM of libcrypto}
답변2
아하!
나는 다음을 추가했다:
Provides: libcrypto.so.1.0.0 libssl.so.1.0.0
spec 파일에 다시 회전하여 설치하십시오. 이제.... openssh는 문제 없이 설치됩니다!
이제 질문은...왜? openssh.spec 파일에 라이브러리나 필수 구성 요소가 표시되지 않습니다.
고쳐 쓰다
요구 사항에 대해 설명해주셔서 감사합니다. 속성이 AutoReqProv
"아니요"로 설정되어 있다는 사실을 알게 되었습니다. "예"여야 합니다. 이제 잘 작동합니다(위의 Provide 줄을 추가할 필요가 없습니다). 감사합니다!