====== Linux apt (Advanced Packaging Tool) 및 Debian 계열 패키지 관리 ====== * Debian 계열 패키지 package 관리 프로그램. * 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]] ===== 설치 ===== sudo apt install sudo apt install = # apt-mark hold 로 버전 고정 ===== 검색 ===== apt-cache search keyword ===== apt-file / package 소유 파일 목록 ===== * 어떤 파일이 어느 패키지에 들어있는지 여부를 찾아주는 툴 * ''apt-file search 파일명'' * 이 전에 먼저 ''sudo apt-file update'' 로 데이베이스 생성해둬야함. sudo apt-file update apt-file list * [[linux:dpkg|dpkg]] 명령으로 보기 dpkg -L # *.deb 파일의 컨텐츠 보여주기 dpkg -c ===== cache clean ===== # 캐시 삭제 sudo apt clean --dry-run # 일단 확인만 sudo apt clean # 새 버전이 존재하는 패키지는 cache에서 지운다. sudo apt autoclean --dry-run # 일단 확인만 sudo apt autoclean ===== fix-broken ===== * ''dpkg'' 등으로 설치를 했는데, 그에 대한 의존성은 설치가 덜 됐을 때 덜 설치된 의존성을 보정해준다. sudo apt-get --fix-broken install ===== 특정 패키지의 의존성 목록 ===== * ''apt-cache showpkg [package-name]'' : 해당 패키지가 의존하는 패키지 목록 * ''dpkg -I package.deb'' ===== 특정 패키지의 저장소 정보 ===== * 존재하는 모든 버전과 해당 저장소 목록을 볼 수 있다. apt-cache policy [package-name] ===== 설치된 패키지 목록 ===== apt list --installed ===== Upgrade 가능 목록 ===== apt list --upgradable ===== unauthorized ===== sudo apt-get update --allow-unauthenticated ===== apt-mark ===== * 특정 버전으로 고정. 업그레이드를 망지한다. # 현재 설치 버전으로 고정 sudo apt-mark hold jenkins # 고정 풀기 sudo apt-mark unhold jenkins # 고정 목록 sudo apt-mark showhold * 기타 방법 - [[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** 메뉴로도 가능. # dpkg echo " hold" | sudo dpkg --set-selections # hold echo " install" | sudo dpkg --set-selections # unhold dpkg --get-selections # 상태 조회 dpkg --get-selections # 특정 패키지 상태조회 dpkg --get-selections | grep "\ sudo aptitude unhold ===== Aptik ===== * http://www.teejeetech.in/2014/09/aptik-v16.html ===== Pinning ===== * [[https://help.ubuntu.com/community/PinningHowto|Pinning HowTo]] ===== apt-key ===== man apt-key 8 * ''apt-key'' 명령은 deprecated 상태라고 보면 된다. 아래와 같은 명령을 사용한다면 후자로 변경해줘야 한다. 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 * 명시적 ''signed-by'' 키의 경우 **''/etc/apt/keyrings/''** 아래에 저장하고 repository source 파일에 ''deb [signed-by=/usr/share/keyrings/filename.gpg] ...'' 처럼 지정해준다. * ASCII armored 파일의 경우 파일 확장자가 **''.asc''** 여야 한다. * Open PGP 바이너리의 경우(''%%gpg --dearmor%%'' 로 저장했거나) **''.gpg''** 확장자로 저장해야 한다. ===== CheatSheet ===== * [[http://www.cyberciti.biz/tips/linux-debian-package-management-cheat-sheet.html|Debian Linux apt-get package management cheat sheet]] * [[http://www.tecmint.com/useful-basic-commands-of-apt-get-and-apt-cache-for-package-management/|25 Useful Basic Commands of APT-GET and APT-CACHE for Package Management]] * [[http://www.tecmint.com/apt-advanced-package-command-examples-in-ubuntu/|15 Examples of How to Use New Advanced Package Tool (APT) in Ubuntu/Debian]] ===== Repository ===== * [[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]] ==== 신규 패키지와 함께 업그레이드 ==== * 신규 설치 패키지를 보여주며 업그레이드한다. 그런데 지워야 할 패키지가 있을 경우에는 작동하지 않는 듯 하다. sudo apt-get --with-new-pkgs upgrade ==== 명시적 install ==== * upgrade 가 안되는 패키지를 명확하게 다시 ''apt install '' 로 설치명령을 내리면 어떤 패키지의존성이 변경되었고 무엇을 더 설치하고 무엇을 지우는지 등이 나온다. 이를 확인하고서 설치 여부를 결정하면 된다. sudo apt install package1 package2 ... 다음의 추가 패키지가 설치될 것입니다 : <어쩌구 저쩌구> 다음 패키지를 지울 것입니다: <어쩌구 저쩌구> 계속 하시겠습니까? [Y/n] <-- 선택하면 됨. ==== 강제 업그레이드 ==== * 신규 의존성을 모두 강제로 업그레이드한다. * 다소 위험할 수도 있다. sudo apt dist-upgrade ===== 참조 ===== * [[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]]