빈 패키지 데이터베이스의 임시/로컬 사용

빈 패키지 데이터베이스의 임시/로컬 사용

이런 이상한 일이 어디서 일어났는지 알아냈어

pacman -S -w awesome xorg-xinit xorg-server xorg-server-utils

팩맨필요한 모든 종속성을 다운로드하지 않습니다.

패키지를 다운로드하는 이유는 필요한 특정 패키지만 포함하는 로컬 저장소를 만들기 때문입니다.(전체 저장소를 다운로드하는 대신 Arch 커뮤니티는 대역폭 제한으로 인해 다운로드하는 것을 원하지 않으므로 이는 존중됩니다)

이제 위에 정의된 패키지는 잘 다운로드되고 다운로드 xorg-server등을 수행 -w하며 설치되지 않도록 합니다. 그러나 -S어떤 이유로 다운로드되지 않은 종속성도 다운로드해야 합니다.

나중에 로컬 저장소를 사용하여 위 패키지를 설치하려고 할 때의 출력은 다음과 같습니다.

warning: cannot resolve "xorg-xset", a dependency of "xorg-server-utils"
warning: cannot resolve "xorg-xauth", a dependency of "xorg-xinit"

목록은 계속됩니다... 저장소를 확인하면 패키지가 확실히 누락되었으며 어디에도 다운로드되지 않았습니다.

어떤 아이디어가 있나요? 내가 뭐 놓친 거 없니? 논리적으로 또는 매개변수적으로?

답변1

지적한대로현실적인그리고데몬 매드맨 3~에#아치리눅스irc 채널이 바로 그 이유입니다.pacman 이미 로컬에 설치되어 있으면 아무것도 다시 다운로드되지 않습니다. 하지만 사용자가 구체적으로 지시한 것은 무엇이든 다운로드됩니다., 생각해 보면 이해가 됩니다.

이는 사용자 정의/로컬 리포지토리용 패키지를 다운로드하려는 경우 다운로드 중인 패키지가 로컬에 설치되지 않았는지 확인하거나 다음 옵션 중 하나를 수행해야 함을 의미합니다.

빈 패키지 데이터베이스의 임시/로컬 사용

pacman -y --dbpath /tmp ...

이는 로컬에 아무것도 설치되지 않고 필요한 모든 패키지가 다운로드된다는 착각을 불러일으킵니다. 또한 -y구성 데이터베이스에 마스터 패키지 목록이 없기 때문에 이 작업을 수행해야 합니다 .

시스템 업그레이드 수행

pacman -Syuw ...

이렇게 하면 모든 패키지(이미 설치되었는지 여부에 관계없이)를 다시 설치/업그레이드해야 합니다.
노트:검토되지 않음(나는 팩맨의 논리에 대해 거의 알지 못하며 그것을 테스트하는 데 시간 딜레마에 빠져 있습니다.)

다운로드한 파일 격리

주석에서 지적했듯이, 다운로드한 파일을 별도의 디렉토리에 넣어서 작업할 수 있도록 하고 싶을 가능성이 높습니다 --cachedir. 이 작업은 다음과 같이 수행됩니다.

pacman --cachedir /tmp/somewhere ...

최종 예

sudo pacman -Syw --cachedir /tmp/somewhere --dbpath /tmp/pacmandb base base-devel linux linux-firmware

그런 다음 다음을 사용하여 이미지에 추가하고 싶을 것입니다.저장소가 추가됨다음과 같은 것을 방출함으로써:

repo-add /tmp/somewhere/my_mirror.db.tar.gz /tmp/somewhere/{*.pkg.tar.xz,*.pkg.tar.zst}

다음을 사용하여 종속성 목록 생성확장하다

expac -S '%E' -l '\n' base base-devel linux linux-firmware | tr '\n' ' '

expac항소<package string> (다운로드하려는 모든 패키지)다운로드 중인 항목을 실행하는 데 필요한 패키지 목록이 제공됩니다. 이 목록을 사용하여 설치하려는 기존 패키지 문자열을 가져오거나 추가할 수 있습니다.

expac기본적으로 각 개별 종속성은 한 줄로 구분되지만 패키지 간에 분할되므로 각 단일 줄 문자열을 여러 줄 바꿈으로 변환한 다음 tr을 사용하여 줄 바꿈을 공백으로 변환합니다.


나는 프로그래밍 방식으로 저장하고 많은 스크립트에서 사용할 수 있기 때문에 이 expac버전을 선호하지만, 빠르고 더러운 버전은 팩맨이 확인하는 데이터베이스를 리디렉션할 뿐입니다.

관련 정보