Fedora 35에서:
# dnf install g++
Last metadata expiration check: 0:07:14 ago on Fri May 6 09:44:09 2022.
Package gcc-c++-11.3.1-2.fc35.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
# dnf info g++
Last metadata expiration check: 0:08:26 ago on Fri May 6 09:44:09 2022.
Error: No matching Packages to list
나는 gcc-c++
이것이 패키지라는 것을 알고 있으며 C++를 컴파일하려면 패키지를 설치해야 합니다.
g++
패키지가 아닌 경우 설치(또는 제거)가 작동하는 이유는 무엇입니까?
보너스 질문: 실제 이름이 아닌 gcc-c++
참조로만 설치되었는지 어떻게 확인할 수 있나요 ?g++
답변1
실행하면 dnf install <something>
먼저 패키지 이름을 찾은 <something>
다음 다음을 포함하는 패키지를 찾습니다.공급 <something>
. "provides" 값은 실제로 가상 패키지 이름입니다( Provides:
RPM 사양 파일의 키워드를 사용하여 설정).
어떤 패키지가 사용 가능한지 확인할 수 있습니다.공급 g++
다음을 실행하여:
dnf repoquery --whatprovides g++
(Fedora 35에서)는 다음을 생성합니다.
gcc-c++-0:11.2.1-1.fc35.i686
gcc-c++-0:11.2.1-1.fc35.x86_64
gcc-c++-0:11.3.1-2.fc35.x86_64
이 dnf repoquery
명령은 저장소 구성을 쿼리합니다. 로컬에 설치된 패키지에 대해 묻는 동일한 질문을 사용할 수도 있으므로 rpm -q --whatprovides
다음을 수행하십시오.
보너스 질문: 실제 이름 대신 g++를 참조하여 gcc-c++가 설치되었는지 어떻게 확인할 수 있나요?
빨리 달려:
rpm -q --whatprovides g++
반환 코드는 설치된 패키지가 사용 가능한지 알려줍니다 g++
.
이 기능은 일반적으로 특정 패키지가 아닌 특정 기능에 연결되는 패키지 종속성을 지정하는 데 사용됩니다. 예를 들어 웹 서버가 필요한 항목이 있는 경우 특정 패키지(예: httpd
또는 ) 에 종속되게 만드는 대신 nginx
사양 파일에 다음을 작성할 수 있습니다.
Requires: webserver
그런 다음 이러한 패키지 중 하나가 설치되면 종속성이 충족됩니다.
$ dnf repoquery --whatprovides webserver
caddy-0:2.3.0-2.fc35.x86_64
httpd-0:2.4.51-2.fc35.x86_64
httpd-0:2.4.53-1.fc35.x86_64
lighttpd-0:1.4.59-3.fc35.x86_64
lighttpd-0:1.4.64-1.fc35.x86_64
nginx-1:1.20.1-6.fc35.x86_64
nginx-1:1.20.2-1.fc35.x86_64