사용자 도구

사이트 도구


linux:apt

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linux:apt [2019/07/08 12:44]
kwon37xi
linux:apt [2023/02/19 16:31] (현재)
kwon37xi [다음 패키지를 과거 버전으로 유지합니다:]
줄 2: 줄 2:
   * Debian 계열 패키지 package 관리 프로그램.    * Debian 계열 패키지 package 관리 프로그램. 
   * apt는 [[linux:yum|Linux yum]]과 같은 역할이고, dpkg는 rpm과 같은 역할   * apt는 [[linux:yum|Linux yum]]과 같은 역할이고, dpkg는 rpm과 같은 역할
 +  * [[linux:ubuntu:package_management|Ubuntu 패키지 관리]]
 +  * [[linux:apt_offline|apt-offline]]
 +  * [[linux:deb_get|deb-get]]
 +  * [[linux:aptitude|aptitude]]
 +  * [[linux:nala|nala]]
 +  * [[linux:debian:makedeb_mpm|makedeb / mpm]]
 +
 +===== 설치 =====
 +<code sh>
 +sudo apt install <packagename>
 +
 +sudo apt install <packagename>=<version>
 +# apt-mark hold 로 버전 고정
 +</code>
  
 ===== 검색 ===== ===== 검색 =====
줄 8: 줄 22:
 </code> </code>
  
-===== apt-file =====+===== apt-file / package 소유 파일 목록 =====
   * 어떤 파일이 어느 패키지에 들어있는지 여부를 찾아주는 툴   * 어떤 파일이 어느 패키지에 들어있는지 여부를 찾아주는 툴
   * ''apt-file search 파일명''   * ''apt-file search 파일명''
 +  * 이 전에 먼저 ''sudo apt-file update'' 로 데이베이스 생성해둬야함.
 +<code sh>
 +sudo apt-file update
  
 +apt-file list <package-name>
 +</code>
 +
 +  * [[linux:dpkg|dpkg]] 명령으로 보기
 +<code sh>
 +dpkg -L <package-name>
 +
 +# *.deb 파일의 컨텐츠 보여주기
 +dpkg -c <package-file.deb>
 +</code>
 ===== cache clean ===== ===== cache clean =====
 <code sh> <code sh>
-sudo apt-get clean+# 캐시 삭제 
 +sudo apt clean --dry-run # 일단 확인만 
 +sudo apt clean 
 + 
 + 
 +# 새 버전이 존재하는 패키지는 cache에서 지운다. 
 +sudo apt autoclean --dry-run # 일단 확인만 
 +sudo apt autoclean
 </code> </code>
  
 +===== fix-broken =====
 +  * ''dpkg'' 등으로 설치를 했는데, 그에 대한 의존성은 설치가 덜 됐을 때 덜 설치된 의존성을 보정해준다.
 +<code sh>
 +sudo apt-get --fix-broken install
 +</code>
  
 ===== 특정 패키지의 의존성 목록 ===== ===== 특정 패키지의 의존성 목록 =====
줄 23: 줄 62:
  
 ===== 특정 패키지의 저장소 정보 ===== ===== 특정 패키지의 저장소 정보 =====
 +  * 존재하는 모든 버전과 해당 저장소 목록을 볼 수 있다.
 <code sh> <code sh>
 apt-cache policy [package-name] apt-cache policy [package-name]
 +</code>
 +
 +===== 설치된 패키지 목록 =====
 +<code sh>
 +apt list --installed
 +</code>
 +
 +===== Upgrade 가능 목록 =====
 +<code sh>
 +apt list --upgradable
 </code> </code>
  
줄 32: 줄 82:
 </code> </code>
  
 +===== apt-mark =====
 +  * 특정 버전으로 고정. 업그레이드를 망지한다.
 +
 +<code sh>
 +# 현재 설치 버전으로 고정
 +sudo apt-mark hold jenkins
 +
 +# 고정 풀기
 +sudo apt-mark unhold jenkins
 +
 +# 고정 목록
 +sudo apt-mark showhold
 +</code>
 +  * 기타 방법 - [[https://askubuntu.com/questions/18654/how-to-prevent-updating-of-a-specific-package|updates - How to prevent updating of a specific package? - Ask Ubuntu]]
 +  * ''synaptic''에서 **Package -> Lock Version** 메뉴로도 가능.
 +<code sh>
 +# dpkg
 +echo "<package-name> hold" | sudo dpkg --set-selections # hold
 +echo "<package-name> install" | sudo dpkg --set-selections # unhold
 +dpkg --get-selections # 상태 조회
 +dpkg --get-selections <package-name> # 특정 패키지 상태조회
 +dpkg --get-selections | grep "\<hold$" # hold 목록
 +
 +# aptitude
 +sudo aptitude hold <package-name>
 +sudo aptitude unhold <package-name>
 +</code>
 ===== Aptik ===== ===== Aptik =====
   * http://www.teejeetech.in/2014/09/aptik-v16.html   * http://www.teejeetech.in/2014/09/aptik-v16.html
줄 37: 줄 114:
 ===== Pinning ===== ===== Pinning =====
   * [[https://help.ubuntu.com/community/PinningHowto|Pinning HowTo]]   * [[https://help.ubuntu.com/community/PinningHowto|Pinning HowTo]]
 +
 +===== apt-key =====
 +<code sh>
 +man apt-key 8
 +</code>
 +  * ''apt-key'' 명령은 deprecated 상태라고 보면 된다. 아래와 같은 명령을 사용한다면 후자로 변경해줘야 한다.
 +<code sh>
 +wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -
 +wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc
 +</code>
 +  * 명시적 ''signed-by'' 키의 경우 **''/etc/apt/keyrings/''** 아래에 저장하고 repository source 파일에 ''deb [signed-by=/usr/share/keyrings/filename.gpg] ...'' 처럼 지정해준다.
 +  * ASCII armored 파일의 경우 파일 확장자가 **''.asc''** 여야 한다.
 +  * Open PGP 바이너리의 경우(''%%gpg --dearmor%%'' 로 저장했거나) **''.gpg''** 확장자로 저장해야 한다.
  
 ===== CheatSheet ===== ===== CheatSheet =====
줄 46: 줄 136:
 ===== Repository ===== ===== Repository =====
   * [[http://www.hackgnar.com/2016/01/creating-remote-apt-package.html|hackgnar: Creating Remote APT Package Repositories on Github]]   * [[http://www.hackgnar.com/2016/01/creating-remote-apt-package.html|hackgnar: Creating Remote APT Package Repositories on Github]]
 +  * [[https://pmateusz.github.io/linux/2017/06/30/linux-secure-apt-repository.html|Personal DEB Package Repository using GitHub Pages | Building Pyramids]]
 +
 +===== 가장 빠른 미러 찾기 =====
 +  * [[https://linuxconfig.org/how-to-select-the-fastest-apt-mirror-on-ubuntu-linux|How to select the fastest apt mirror on Ubuntu Linux - Linux Tutorials - Learn Linux Configuration]]
 +
 +===== 다음 패키지를 과거 버전으로 유지합니다:  =====
 +  * ''The following packages have been kept back:''
 +  * 설치돼 있는 패키지의 의존성에 어떤 변경이 발생해서 제대로 변경된 의존성을 설치하고 다른 것은 제거 하는 등의 작업이 일어날 때 발생하는 오류.
 +  * [[https://askubuntu.com/|apt - "The following packages have been kept back:" Why and how do I solve it? - Ask Ubuntu]]
 +
 +==== 신규 패키지와 함께 업그레이드 ====
 +  * 신규 설치 패키지를 보여주며 업그레이드한다. 그런데 지워야 할 패키지가 있을 경우에는 작동하지 않는 듯 하다.
 +<code sh>
 +sudo apt-get --with-new-pkgs upgrade
 +
 +</code>
 +
 +==== 명시적 install ====
 +  * upgrade 가 안되는 패키지를 명확하게 다시 ''apt install <package>'' 로 설치명령을 내리면 어떤 패키지의존성이 변경되었고 무엇을 더 설치하고 무엇을 지우는지 등이 나온다. 이를 확인하고서 설치 여부를 결정하면 된다.
 +
 +<code sh>
 +sudo apt install package1 package2 ...
 +
 +다음의 추가 패키지가 설치될 것입니다 :
 +  <어쩌구 저쩌구>
 +다음 패키지를 지울 것입니다:
 +  <어쩌구 저쩌구>
 +계속 하시겠습니까? [Y/n] <-- 선택하면 됨.
 +</code>
 +
 +==== 강제 업그레이드 ====
 +  * 신규 의존성을 모두 강제로 업그레이드한다.
 +  * 다소 위험할 수도 있다.
 +<code sh>
 +sudo apt dist-upgrade
 +</code>
  
 +===== 참조 =====
 +  * [[https://wnw1005.tistory.com/359|씨실과 날실 - IT :: 데비안(Debian), 우분투(Ubuntu)의 APT 계열 명령 연재 목록]]
 +  * [[https://askubuntu.com/questions/1093451/how-to-switch-apt-mirror-from-the-commandline|command line - How to switch APT mirror from the commandline? - Ask Ubuntu]]
 +  * https://wiki.debian.org/PackageManagement
 +  * [[https://www.ubuntupit.com/how-to-remove-broken-packages-in-ubuntu-linux/|How to Remove Broken Packages in Ubuntu Linux]]
linux/apt.1562557481.txt.gz · 마지막으로 수정됨: 2019/07/08 12:44 저자 kwon37xi