Cách tốt nhất để kích hoạt lại PPA / repos sau khi nâng cấp là gì?


Câu trả lời:


28

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.


8

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 raringnguồ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

4

Đâ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.


Ví dụ, điều này có thay thế '# deb cran.rstudio.com/bin/linux/ubfox artful /' bằng '# deb cran.rstudio.com/bin/linux/ub Ubuntu bionic' không? Điều gì sẽ xảy ra nếu bạn không làm điều đó (như phản hồi trước đó)?
Jeffrey Benjamin Brown

@JeffreyBenjaminBrown, và nếu bạn không thay thế nó, điều đó có thể xảy ra là sự phụ thuộc không thể được thỏa mãn.
muru

Tôi thấy rằng từ "artful" (tên mã 17.10) đã được thay thế bằng "bionic" trong một số dòng được nhận xét "bị vô hiệu hóa khi nâng cấp ...", trong khi những từ khác thì không. Tôi chỉ bỏ qua tất cả các dòng với nhận xét "bị vô hiệu hóa" đó và apt đã tiếp tục hoạt động (mặc dù tôi phải cài đặt lại gcc vì một số lý do). Và tôi sử dụng rất nhiều repos của bên thứ ba - 13 tệp trong sources.list.dvà ba tệp ngoài hành tinh sources.list. Có thể đây là thứ mà Ubuntu tự động chăm sóc?
Jeffrey Benjamin Brown

@JeffreyBenjaminBrown Có thể, tôi đã không nâng cấp trong thời gian gần đây (cài đặt mới, thường), vì vậy dunno.
muru

1
Điều này dường như đã phá vỡ các tệp nguồn apt của tôi cho 19.10
Dreamcat4

1

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.