리눅스/OpenSUSE

Zypper 명령 - 기타(Other) 명령

씨실과 날실 2020. 8. 3. 09:00


기타 명령

버전 비교

$ zypper versioncmp version1 version2

$ zypper vcmp version1 version2


일반 옵션 :

-m, --match

인수로 제공된 버전을 비교하고 version1이 version2보다 오래되었는지 아니면 새로운 것인지 확인하거나 또는 두 개의 버전 문자열이 일치하는지 확인합니다..

기본 출력은 인간 친화적 인 형태입니다. --terse global 옵션을 사용하면 결과는 정수입니다. version1이 version2보다 오래되면 음수,  더 최신이면 양수이고 일치하면 0입니다.


study@localhost:~> zypper vcmp 0.15.3 0.15.3-2
0.15.3이(가) 0.15.3-2보다 이전입니다.
study@localhost:~> 


study@localhost:~>study@localhost:~> zypper vcmp -m 0.15.3 0.15.3-2
0.15.3이(가) 0.15.3-2과(와) 일치합니다.
study@localhost:~> 

운영체제 ID 출력

$ sudo zypper targetos

$ sudo zypper tos



대상 운영 체제의 ID 문자열을 표시합니다. 문자열은 distroname-architecture 형식입니다. 문자열은 libzypp에 의해 결정되고, distroname은 (current-rootdir) /etc/products.d/baseproduct에서 읽히고 아키텍처는 uname 및 CPU 플래그에서 결정됩니다.


study@localhost:~> zypper targetos
openSUSE-Leap-15.2-x86_64
study@localhost:~> 

라이선스 보고서 출력

$ sudo zypper licenses



라이선스 및 설치된 패키지의 EULA에 대한 보고서를 표준 출력으로 인쇄합니다.

먼저, 모든 패키지의 목록과 그들 패키지들의 라이센스 또는 EULA가 표시됩니다.

그 다음에는 설치된 총 패키지 수, EULA가 설치된 패키지 수, 사용자의 확인이 필요한 요약을 포함합니다.

EULA는 시스템에 저장되지 않으며 리포지토리 메타 데이터에서만 읽을 수 있으므로 요약에는 리포지토리에 해당 패키지가 있는 설치 패키지 수도 포함됩니다.

보고서는 설치된 패키지에서 사용하는 모든 라이센스 목록으로 끝납니다.

이 명령은 appliances와 같은 사용자 지정 배포를 재배포하는 회사가 어떤 라이센스를 사용하는지 파악하는 데 유용 할 수 있습니다.


study@localhost:~> zypper licenses | less


리포지토리 데이터 로드 중...
설치된 패키지를 읽는 중...
mikachan-fonts-9.1.2006.08.09-lp152.3.4 (꾸러미)
라이센스: SUSE-NonFree
-
AppStream-0.12.6-lp152.2.11 (꾸러미)
라이센스: GPL-2.0-or-later AND LGPL-2.1-or-later
-
AppStream-lang-0.12.6-lp152.2.11 (꾸러미)
라이센스: GPL-2.0-or-later AND LGPL-2.1-or-later
-
GeoIP-1.6.12-lp152.3.2 (꾸러미)
라이센스: LGPL-2.1-or-later
-
GeoIP-data-1.6.12-lp152.3.2 (꾸러미)
라이센스: CC-BY-SA-3.0
-
ImageMagick-7.0.7.34-lp152.11.6 (꾸러미)
라이센스: ImageMagick
-
ImageMagick-config-7-SUSE-7.0.7.34-lp152.11.6 (꾸러미)
라이센스: ImageMagick
-
Mesa-19.3.4-lp152.27.1 (꾸러미)
라이센스: MIT
-
Mesa-demo-x-8.3.0-lp152.3.7 (꾸러미)
라이센스: MIT
lines 1-28


apparmor-20171206-lp152.34.2 (패턴)
-
apparmor_opt-20171206-lp152.34.2 (패턴)
-
base-20171206-lp152.34.2 (패턴)
-
basesystem-20171206-lp152.34.2 (패턴)
-
enhanced_base-20171206-lp152.34.2 (패턴)
-
enhanced_base_opt-20171206-lp152.34.2 (패턴)
-
minimal_base-20171206-lp152.34.2 (패턴)
-
x11-20171206-lp152.34.2 (패턴)
-
x11_enhanced-20171206-lp152.34.2 (패턴)
-
x11_opt-20171206-lp152.34.2 (패턴)
-
multimedia-20170319-lp152.5.3 (패턴)
-
multimedia_opt-20170319-lp152.5.3 (패턴)
-
fonts-20190130-lp152.2.3 (패턴)
-
fonts_opt-20190130-lp152.2.3 (패턴)
-
lines 7389-7416


설치된 패키지: 2492
리포지토리에 상대 프로그램과 함께 설치된 패키지: 2491
EULA와 함께 설치된 패키지: 0
Package licenses (236):
* (GPL-2.0+ or LGPL-2.1+ or MPL-1.1+) and LGPL-2.1+
* (GPL-2.0-only OR GPL-3.0-only) AND LGPL-2.1-only
* (GPL-2.0-or-later AND LGPL-2.0-or-later) AND BSD-2-Clause
* (GPL-2.0-or-later OR LGPL-3.0-or-later) AND GPL-3.0-or-later
* (GPL-3.0-or-later AND Apache-2.0)
* (LGPL-2.1+ or MPL-2.0+) and BSD-3-Clause
* (LGPL-2.1-only OR LGPL-3.0-only) AND (GPL-2.0-only OR GPL-3.0-only)
* (LGPL-2.1-or-later OR MPL-2.0) AND GPL-2.0-or-later
* (LGPL-3.0+ or GPL-2.0+) and GPL-3.0+ and MIT
* AFL-2.1 or GPL-2.0+
* AGPL-3.0-only
* AGPL-3.0-only AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND CC-BY-SA-1.0 AND CC-BY-SA-3.0 AND GFDL-1.1-only AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND GPL-3.0-or-later AND LGPL-2.0-only AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND LGPL-3.0-or-later AND MPL-1.1
* Apache-1.1 AND Apache-2.0 AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-only WITH Classpath-exception-2.0 AND LGPL-2.0-only AND MPL-1.0 AND MPL-1.1 AND SUSE-Public-Domain AND W3C
* Apache-2.0
* Apache-2.0 AND W3C AND SUSE-Public-Domain
* Apache-2.0 WITH LLVM-exception OR NCSA
* Artistic-1.0
* Artistic-1.0 OR GPL-1.0-or-later
* Artistic-1.0 or GPL-1.0+
lines 7451-7475

* SUSE-Firmware
* SUSE-Firmware AND GPL-2.0-only AND GPL-2.0-or-later AND MIT
* SUSE-Freetype OR GPL-2.0-or-later
* SUSE-GPL-2.0-with-FLOSS-exception
* SUSE-GPL-2.0-with-OSI-exception
* SUSE-GPL-2.0-with-openssl-exception AND LGPL-2.0-or-later
* SUSE-GPL-2.0-with-openssl-exception and LGPL-2.1
* SUSE-GPL-3.0-with-FLOSS-exception
* SUSE-IDPL-1.0 AND SUSE-IBPL-1.0
* SUSE-IEEE
* SUSE-Liberation
* SUSE-NonFree
* SUSE-Permissive
* SUSE-Public-Domain
* SUSE-Public-Domain AND CC-BY-SA-3.0
* SUSE-Public-Domain and BSD-3-Clause
* SUSE-Public-Domain and HPND
* SUSE-SGI-FreeB-2.0
* SUSE-Xano
* Sleepycat
* TCL
* Vim
* W3C
* W3C and LGPL-2.1+
* WTFPL
* X11
* Zlib
* curl
lines 7665-7692/7692 (END)

rpm 패키지 다운로드

$ sudo zypper download [옵션] 패키지명


일반 옵션 :

--all-matches
--dry-run
-r, --repo alias|name|#|URI
--from alias|name|#|URI

명령행에 지정된 rpm을 로컬 디렉토리로 다운로드합니다.

기본 패키지는 libzypp 패키지 캐시 (/var/cache/zypp/packages/)로, 그리고 루트가 아닌 사용자의 경우 $ XDG_CACHE_HOME/zypp/packages/)로 다운로드되지만 전역 옵션 --pkg-cache-dir을 사용하여 변경할 수 있습니다.

zypper --xmlout에 의해 생성된 구문 분석 가능한 XML 출력에는 zypper가 다운로드하려고 시도한 각 패키지에 대한 <download-result> 노드가 포함됩니다. 성공하면 다운로드된 패키지의 위치는 <localfile> 하위 노드의 경로 속성 (xpath: download-result/localpath@path)에 있습니다.


<download-result>
<solvable>
<kind>package</kind>
<name>zypper</name>
<edition epoch="0" version="1.9.17" release="26.1"/>
<arch>x86_64</arch>
<repository name="repo-oss-update (13.1)" alias="openSUSE:repo-oss-update"/>
</solvable>
<localfile path="/var/cache/zypp/pac.../zypper-1.9.17-26.1.x86_64.rpm"/>
</download-result>


study@localhost:~> sudo zypper download smplayer
리포지토리 데이터 로드 중...
설치된 패키지를 읽는 중...
꾸러미 smplayer-20.4.2-lp152.1.2.x86_64 검색 중                                      (1/1),   2.0 MiB (  4.6 MiB 압축 풀기)
(1/1) /var/cache/zypp/packages/repo-oss/x86_64/smplayer-20.4.2-lp152.1.2.x86_64.rpm .................................[완료]
study@localhost:~> 


study@localhost:~> zypper --xmlout download smplayer
<?xml version='1.0'?>
<stream>
<message type="info">&apos;주 업데이트 저장소&apos; 리포지토리가 오래되었습니다. 루트 권한으로 &apos;zypper refresh&apos;를 실행하면 업데이트할 수 있습니다.</message>
<message type="info">리포지토리 데이터 로드 중...</message>
<message type="info">설치된 패키지를 읽는 중...</message>
<message type="info">꾸러미 smplayer-20.4.2-lp152.1.2.x86_64 검색 중 (1/1),   2.0 MiB (  4.6 MiB 압축 풀기)</message>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="0"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="100"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="0"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="1"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="22"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="40"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="55"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="69"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="85"/>
<progress id="" name="(1/1) smplayer-20.4.2-lp152.1.2.x86_64 (Main Repository)" value="100"/>
<progress id="" name="(1/1) /home/study/.cache/zypp/packages/repo-oss/x86_64/smplayer-20.4.2-lp152.1.2.x86_64.rpm" value="100"/>
<progress id="" name="(1/1) /home/study/.cache/zypp/packages/repo-oss/x86_64/smplayer-20.4.2-lp152.1.2.x86_64.rpm" done="1"/>
<download-result><solvable><kind>package</kind><name>smplayer</name><edition epoch="0" version="20.4.2" release="lp152.1.2"/><arch>x86_64</arch><repository name="Main Repository" alias="repo-oss"/></solvable><localfile path="/home/study/.cache/zypp/packages/repo-oss/x86_64/smplayer-20.4.2-lp152.1.2.x86_64.rpm"/></download-result></stream>
study@localhost:~>


소스 rpm 다운로드

$ sudo zypper source-download [옵션] 패키지명


일반 옵션 :

-d, --directory dir
--delete
--no-delete
--status

설치된 모든 패키지의 소스 rpm을 로컬 디렉토리로 다운로드합니다.


study@localhost:~> sudo zypper source-download
'/var/cache/zypper/source-download'에서 다운로드 디렉토리를 사용 중입니다.
다운로드 디렉토리 스캔 중 ...........................................................................................[완료]
'Source Repository' 리포지토리 메타 데이터를 검색하는 중 ............................................................[완료]
리포지토리 'Source Repository' 캐시 빌드 중 .........................................................................[완료]
리포지토리 데이터 로드 중...
설치된 패키지를 읽는 중...
설치된 패키지를 스캔하는 중 .........................................................................................[완료]

설치된 패키지:      2394
필수 소스 패키지:   1380

[ ]  다운로드 디렉토리에서 사용할 수 있는 필수 소스 패키지:      9
[-]  다운로드할 필수 소스 패키지:                             1371
[+]  다운로드 디렉토리의 필요 없는 소스 패키지:                  0

삭제할 필요 없는 소스 패키지가 없습니다.
필수 소스 패키지를 다운로드하는 중...
(   1/1371) AppStream-0.12.6-lp152.2.11.src (Source Repository) .....................................................[완료]
(   2/1371) GeoIP-1.6.12-lp152.3.2.src (Source Repository) ..........................................................[완료]
(   3/1371) ImageMagick-7.0.7.34-lp152.11.6.src (Source Repository) .................................................[완료]
(   4/1371) Mesa-19.3.4-lp152.27.1.src (Source Repository) ..........................................................[완료]
(   5/1371) Mesa-demo-8.3.0-lp152.3.7.src (Source Repository) .......................................................[완료]

-하략 -


삭제된 파일 사용 프로세스 나열

$ sudo zypper ps


-s, --short
--print format
-d, --debugFile filename

패키지를 업그레이드하거나 제거한 후에는 시스템에서 프로세스가 실행되어 삭제된 파일을 계속 사용할 수 있습니다.

zypper ps는 삭제된 파일을 사용하는 모든 프로세스와 해당 파일 및 서비스 이름 힌트 (알려진 서비스 인 경우)를 나열합니다.

업데이트 후 다시 시작해야 할 서비스에 대한 힌트를 제공합니다. 일반적으로 삭제된 공유 라이브러리를 계속 사용하는 프로그램입니다. 이 목록에는 다음 정보가 포함되어 있습니다.

PID : 프로세스 ID

PPID : 부모 프로세스 ID

UID : 프로세스를 실행 중인 사용자의 ID

Login : 프로세스를 실행 중인 사용자의 로그인 이름

Command : 프로세스를 실행하기 위해 사용된 명령

Service : 명령이 시스템 서비스와 연관된 경우 서비스 이름

Files : 삭제된 파일 목록

Examples:

$ zypper ps -ss

Show only processes associated with a system service.

$ zypper ps -sss

Short for zypper ps --print "%s"; list services which might need a restart.

$ zypper ps --print "systemctl status %s"

Let zypper print the commands to retrieve status information for services which might need a restart.


tudy@localhost:~> zypper ps
삭제된 파일을 사용하고 있는 프로세스가 없습니다.

코어 라이브러리 또는 서비스가 업데이트되지 않았습니다.
재부팅이 필요하지 않은 것 같습니다.

참고: 루트로 실행하지 않는 경우 system stat(2) 함수로 검사할 권한이 있는 파일만 검색할 수 있습니다. 결과가 불완전할 수 있습니다.
study@localhost:~> 

재부팅 필요 플래그 나열

$ sudo zypper needs-rebooting



재부팅이 필요한 플래그가 코어 라이브러리 또는 서비스의 이전 업데이트/설치에 의해 설정되었는지 확인합니다.

+ 재부팅이 필요한 플래그는 미리 정의 된 목록 (/etc/zypp/needreboot)의 패키지가 업데이트되거나 설치될 때 설정됩니다.

종료 코드 ZYPPER_EXIT_INF_REBOOT_NEEDED는 재부팅이 필요함을 나타내며, 그렇지 않으면 종료 코드가 ZYPPER_EXIT_OK로 설정됩니다.


study@localhost:~> zypper needs-rebooting
코어 라이브러리 또는 서비스가 업데이트되지 않았습니다.
재부팅이 필요하지 않은 것 같습니다.
study@localhost:~>