Khi tôi nâng cấp từ 11.10 lên 12.04, cách tốt nhất để kích hoạt lại PPA của tôi và thêm kho lưu trữ là gì?
Khi tôi nâng cấp từ 11.10 lên 12.04, cách tốt nhất để kích hoạt lại PPA của tôi và thêm kho lưu trữ là gì?
Câu trả lời:
Bạn cần thêm tất cả chúng trở lại / kích hoạt lại chúng một cách riêng lẻ bằng cách bỏ ghi chú các dòng trong tệp trong /etc/apt/sources.list.d/
thư mục.
Mặc dù thời gian nâng cấp là thời điểm tốt để đánh giá lại nếu bạn cần PPA ngay từ đầu nếu bạn chỉ sử dụng một gói để có phiên bản mới hơn của gói.
Tôi đã viết một tập lệnh bash loại bỏ ký tự băm hàng đầu khỏi tất cả các tệp trong sources.list.d
đó đã bị vô hiệu hóa trong quá trình nâng cấp.
Các mã sau đây là để nâng cấp raring
nguồn lên saucy
.
Nếu bạn muốn giữ hậu tố # disabled on upgrade to ...
, sử dụng
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
nếu bạn muốn xóa hậu tố # disabled on upgrade to ...
, sử dụng
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
Đây là tập lệnh python sử dụng API Python APT để tìm và kích hoạt các nguồn đó, trong khi đặt bản phát hành thành bản phát hành hiện tại:
#! /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()
Nếu bạn chạy nó mà không có sudo
, nó sẽ không thể lưu các thay đổi, nhưng nó sẽ hiển thị những nguồn nào sẽ được kích hoạt. Chạy với sudo
để lưu các thay đổi.
sources.list.d
và ba tệp ngoài hành tinh sources.list
. Có thể đây là thứ mà Ubuntu tự động chăm sóc?
Tôi đã tạo một vài tập lệnh để bật (bật lại) và vô hiệu hóa PPA, đặc biệt sau khi nâng cấp. Họ đây rồi:
Kịch bản kích hoạt lại 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"
Kịch bản vô hiệu hóa 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"
Các sudo
được bao gồm để bạn có thể lưu trữ kịch bản này trong thư mục bin nhà của bạn