当我从11.10升级到12.04时,重新启用我的PPA和添加的软件源的最佳方法是什么?
/etc/apt/sources.list.d/
目录中的文件中的行,以将它们全部添加回来/重新启用。sources.list.d
目录下所有文件的前导哈希字符。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
如果您想删除后缀#禁用升级到...
,请使用
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
#! /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
来保存更改。#! /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"
#! /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"
为了将此脚本存储在您的主目录 bin 目录中,包括了 sudo
#!/bin/bash
CODENAME="$(lsb_release -cs)"
for file in /etc/apt/sources.list.d/*.list;
do
APT_URL="$(cat $file | grep -Eo '(http|https)://[a-zA-Z0-9./?=_-]*' | sort | uniq)"
CURRENT_CODES="$(cat $file | rev | awk '{NF=2}1' | rev | awk '{print $1;}')"
LENGTH=${#APT_URL}
[[ ${APT_URL:LENGTH-1:1} != */ ]] && APT_URL="$APT_URL/"; :
NEW_APT_URL="${APT_URL}dists/${CODENAME}"
echo -n "$NEW_APT_URL"
STATUS=$(curl --head --location --write-out %{http_code} --silent --output /dev/null ${NEW_APT_URL})
if [[ $STATUS == 200 ]]; then
echo -en "\e[93m OK\033[0m"
for code in $CURRENT_CODES;
do
[[ $code != $CODENAME ]] && sudo sed -i "s/$code/$CODENAME/g" $file
done;
sudo sed -i 's/^# \(.*\) # disabled on upgrade to.*/\1/g' $file
echo -e "\e[92m DONE\033[0m"
else
echo -e "\e[91m NOT FOUND\033[0m"
fi
done;
sources.list.d
目录下有13个文件,sources.list
中还有三个外部软件源。也许这是Ubuntu现在自动处理的事情吗? - Jeffrey Benjamin Brownsources.list
是什么样子的,我就无法做太多事情。 - muru