최근에 Kali Linux를 설치했는데 유연하지 못한 미러 선택으로 인해 모든 deb 패키지가 내가 신뢰하지 않는 미러에서 다운로드되었습니다. 새로운 미러를 사용하도록 source.list가 업데이트되었다고 가정하면 apt/dselect에 모든 패키지를 다시 다운로드하고 다시 설치하도록 지시할 수 있습니까?
답변1
Alex가 지적했듯이:
sudo apt-get clean
sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f 1)
첫 번째는 apt의 캐시가 비어 있는지 확인합니다. 이 방법으로 apt-get은 저장소에서 패키지를 다운로드해야 합니다. 둘째, 먼저 이 부분이 수행하는 작업인 설치된 모든 패키지 목록이 필요하며 $(...)
그런 다음 apt-get을 사용하여 해당 패키지를 다시 설치합니다. 적성과 관련된 또 다른 방법이 있습니다.
sudo aptitude --reinstall install '~i'
~i
"설치된 패키지"를 검색하십시오 .
두 가지 방법 모두 자동으로 설치된 패키지가 없으므로 apt-mark showauto > packages
이 작업을 수행하기 전에 sudo apt-mark auto $(cat packages)
목록을 사용하고 다시 작성 해야 합니다.
답변2
여기에 있는 답변은 문제를 해결하는 데 도움이 되었습니다. 이 솔루션은 가장 효율적이지는 않지만 작업을 완료합니다.
#!/bin/bash
for package in `dpkg --get-selections | grep -w 'install$' | cut -f 1`; do
apt-get install --reinstall $package;
done
답변3
저는 이 스크립트를 사용했고 가끔 '예'를 묻는 요청을 받은 다음 스크립트가 계속되었습니다. 하지만 꽤 오랜 시간이 걸리기 때문에 완료하는 데 더 오랜 시간이 걸립니다. 스크립트를 변경하고 --yes force-yes
Def/old 구성을 자동으로 수락하도록 권장 사항을 삽입했습니다.
#!/bin/bash
for package in `dpkg --get-selections | grep -w 'install$' | cut -f 1`; do
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install --reinstall $package
done