답변:
sources.list.d
업그레이드 중에 비활성화 된 모든 파일에서 선행 해시 문자를 제거하는 bash 스크립트를 작성했습니다 .
다음 코드는 raring
소스를 로 업그레이드 하기 위한 것 saucy
입니다.
접미사를 유지 # disabled on upgrade to ...
하려면
for f in /etc/apt/sources.list.d/*.list; do sudo sed -i 's/raring/saucy/g' $f; sudo sed -i 's/^# \(.*disabled on upgrade to.*\)/\1/g' $f;done
접미사를 삭제 # disabled on upgrade to ...
하려면
for f in /etc/apt/sources.list.d/*.list; do sudo sed -i 's/raring/saucy/g' $f; sudo sed -i 's/^# \(.*\) # disabled on upgrade to.*/\1/g' $f;done
다음은 릴리스를 현재 릴리스로 설정하면서 Python APT API를 사용하여 이러한 소스를 찾아서 활성화하는 Python 스크립트입니다.
#! /usr/bin/python3
import aptsources.sourceslist as sl
import lsb_release
codename = lsb_release.get_distro_information()['CODENAME']
sources = sl.SourcesList()
for source in sources.list:
if source.comment.lower().find("disabled on upgrade") >= 0:
source.dist = codename
source.set_enabled(True)
print(source)
sources.save()
없이 실행 sudo
하면 변경 사항을 저장할 수 없지만 사용할 수있는 소스가 표시됩니다. sudo
변경 사항을 저장하려면 다음을 실행하십시오 .
sources.list.d
과 3 개의 외계인 파일 을 사용 sources.list
합니다. 이것이 우분투가 자동으로 처리하는 것일 수 있습니까?
특히 업그레이드 후 PPA를 활성화 (재 활성화) 및 비활성화하기위한 몇 가지 스크립트를 만들었습니다. 여기 있습니다:
PPA 재 활성화 스크립트
#! /bin/bash
# PPA re-enable script
# Use: ppa-reenable source.list
# to reenable a PPA without its source line
# Use: ppa-reenable src source.list
# to reenable a PPA with its source line
mod=1
file="$1"
if [ $1 == "src" ]; then mod=""; file="$2"; fi;
sudo sed -i "${mod}s/^# \(.*\) \(disabled on upgrade.*\)\?/\1/" "$file"
PPA 비활성화 스크립트
#! /bin/bash
# PPA disable script
# Use: ppa-disable source.list
# to disable the PPA completely
# Use: ppa-disable src source.list
# to disable the source of the PPA only
file="${1}"
mod=""
# If its only needed to disable the source
if [ $1 = "src" ]; then mod="2"; file="${2}"; fi;
# If source line is disabled, don't comment it out
second="`sed -n 2p \"$file\"`"
second="${second:0:1}"
if ( [ $second == "#" ] && [ $mod != "2" ] ); then
mod="1"
fi
sudo sed -i "${mod}s/^/# /" "$file"
은 sudo
당신의 가정 bin 디렉토리에이 스크립트를 저장할 수 있도록 포함되어 있습니다