Fedora의 DNF 저장소에 있는 g++와 gcc-c++ 사이의 링크는 무엇입니까?

Fedora의 DNF 저장소에 있는 g++와 gcc-c++ 사이의 링크는 무엇입니까?

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

관련 정보