Linux 시스템에 설치된 모든 패키지를 가져오는 표준 방법을 찾고 있지만 배포 독립적으로 수행하고 싶습니다.
내가 좀 찾았어매우 좋아요 답변다음은 Debian/Ubuntu, Fedora/CentOS 등과 같은 일부 특정 배포판이지만 배포판과 독립적인 방식으로 이 정보를 얻는 데는 성공하지 못했습니다.
/opt
내 첫 번째 옵션은 다음과 같습니다. 또는 와 같은 특정 위치에 있는 모든 디렉터리를 나열합니다 /usr/bin
. 하지만 이 방법을 사용하면 설치된 버전에 대한 정보가 없습니다. 가장 좋은 경우에는 설치된 패키지의 이름 등을 얻을 수 있습니다.
일부 배경:
IP 주소 및 포트 목록(스프레드시트)이 있고 각 시스템에 SSH를 통해 설치된 패키지와 해당 버전을 가져와야 하지만 배포는 크게 다를 수 있습니다.
이는 일회성 작업이지만 향후 다른 스프레드시트가 나올 예정이므로 동일한 솔루션을 여러 번 사용할 것입니다.
스프레드시트에 있는 컴퓨터 중 일부를 알고 있고 고객의 정보를 기반으로 하여 목록이 서버용이고 일부 데스크톱에만 해당된다는 것을 추론할 수 있습니다. 이전에 말했듯이 배포판은 크게 다를 수 있지만 저는 Ubuntu, Debian 및 CentOS 시스템을 많이 소유하고 있다고 해도 무방합니다.
데스크탑의 경우 대부분 Ubuntu와 일부 macOS입니다.
도움이 된다면 Bash, Python 또는 PHP 스크립트를 사용할 수 있습니다.
첫 번째 버전에서는 , , 등과 npm
같은 언어별 패키지 관리자를 무시하기로 결정했습니다 . 이러한 패키지는 전역적으로 설치됩니다.rvm
composer
간단히 말해서, 설치된 모든 패키지 배포를 독립적으로 만드는 표준 방법이 있습니까?
답변1
오늘날 일부 배포판에서는 tar
"패키지 관리자"를 사용하기 때문에 완전히 그런 것은 아닙니다. 그러나 일반적 /etc/issue
으로 문제가 되는 시스템의 릴리스 이름과 버전을 보고 몇 가지 추론을 할 수 있습니다. 또는 yum
, up2date
, apt
, emerge
, , 등과 같은 바이너리가 있는지 간단히 확인할 수도 있습니다 pacman
. 그러나 흥미롭게도 데비안 파생 시스템에서는 이것이 실패할 수 있으므로 누군가가 그것을 시도하기로 결정하고 작업을 시작했습니다.brew
port
choco
yum
답변2
머신/서버/호스트의 운영 체제를 확인한 다음 해당 패키지 관리자 명령을 사용하여 패키지 이름을 나열하는 Ansible 플레이북을 확실히 개발할 수 있습니다.