Làm cách nào để thêm kho lưu trữ từ shell trong Debian?


141

Trong Ubuntu người ta có thể thêm một kho lưu trữ thông qua lệnh sau -

sudo add-apt-repository ppa:yannubuntu/boot-repair

Vì Ubuntu dựa trên cơ sở mã Debian, tôi đã hy vọng rằng điều tương tự cũng sẽ hoạt động trong Debian, nhưng nó không hoạt động.

  • Lý do cho điều này là gì?
  • Có một số lệnh shell khác mà tôi có thể sử dụng để đạt được điều tương tự không?

Lưu ý: Tôi biết tôi có thể chỉnh sửa /etc/apt/sources.list, nhưng tôi muốn đạt được điều này từ trình bao. Tôi cũng muốn biết tại sao cùng một lệnh sẽ không hoạt động khi cơ sở mã giống nhau.

Câu trả lời:


182

Debian Jessie và sau đó (2014-)

Như @vol thếx đã chỉ ra trong các bình luận, giờ đây nó có thể được tìm thấy trong software-properties-commongói:

sudo apt-get install software-properties-common

Debian Wheezy và trước đó:

Chương trình này add-apt-repository có sẵn trong Debian. Nó nằm trong python-software-propertiesgói:

sudo apt-get install python-software-properties

Nó đã được thêm vào gói đó trong phiên bản 0,75. Phiên bản hiện tại trong Debian Stable ('bóp ") là 0,60, vì vậy nó không có. Phiên bản hiện tại trong Thử nghiệm Debian (" wheezy ") là 0.82.7.1debian1, vì vậy nó có sẵn ở đó.


9
Ít nhất là trong sid, tập lệnh add-apt-repository dường như đã chuyển sang phần mềm thuộc tính chung
Adam Baxter

Phiên bản 0.92 thuộc tính phần mềm python ở đây và (một lần nữa) bị thiếu :-(
gatopeich

3
Xem bình luận ở trên của bạn - bây giờ là trongsoftware-properties-common
Jim Paris

đã gặp rắc rối khi cập nhật
peterretief 11/05/2015

17

Giả sử bạn đang chạy phiên bản Debian không cổ (Etch trở lên), bạn chỉ có thể thả một tệp trong /etc/apt/sources.list.d/Tên tệp phải kết thúc bằng .list; Debian Stretch (chưa được phát hành) có thể sẽ thêm .sourcesvới một định dạng khác.

Định dạng giống như tệp nguồn.list chính.

Ưu điểm là, đặc biệt nếu đây là phần mềm dành cho một số phần mềm bạn đang phân phối, bạn không phải lo lắng về việc hợp nhất các thay đổi của mình thành tệp /etc/apt/source.list có thể chỉnh sửa (đặc biệt khó xử lý nếu chương trình của bạn là gỡ cài đặt). Bạn có thể sử dụng dpkghỗ trợ conffile để đặt tệp vào /etc/apt/sources.list.d/.


sources.list.dtồn tại kể từ khi khắc, tôi nghĩ.
Gilles

1
Vâng, nhưng apt-add-repositoryquan tâm đến những thứ như dịch "ppa:" sang một http://ppa.launchpad...loại, và để tải xuống và cài đặt khóa kho lưu trữ để các gói không bị coi là đáng ngờ
Ricardo Cárdenes

@Gilles Tôi nghĩ rằng bạn đúng. Nó không phải trên máy SUND tôi có, và trên máy Etch.
derobert

13

add-apt-repositorybây giờ có thể được tìm thấy trong software-properties-commongói.


@rbaleksandar điều này không có trong tất cả các bản phân phối vì nó có rất nhiều thứ bạn có thể không muốn, đặc biệt là trong docker. Vì mục tiêu cuối cùng của nhiệm vụ này là thêm một cái gì đó vào /etc/apt/sources.list, bạn có thể xem câu trả lời của @Goez trong câu hỏi này.
Mike D

8

Ubuntu dựa trên Debian nhưng bao gồm những thứ Debian không (và lần lượt thường được tích hợp vào Debian sau này). Các add-apt-repositorylệnh là một ví dụ trong đó đã được đưa vào Ubuntu đầu tiên.

Thực add-apt-repositorytế chỉ cần thực thi một vài lệnh để thêm kho lưu trữ:

  • nối thêm kho vào /etc/apt/sources.list
  • thêm khóa kho vào máy.

Một tập lệnh sắp xếp tương tự có thể tìm thấy ở đây được trích dẫn bên dưới

#!/bin/bash
if [ $# -eq 1 ]
NM=$(uname -a && date)
NAME=$(echo $NM | md5sum | cut -f1 -d" ")
then
    ppa_name=$(echo "$1" | cut -d":" -f2 -s)
    if [ -z "$ppa_name" ]
    then
        echo "PPA name not found"
        echo "Utility to add PPA repositories in your debian machine"
        echo "$0 ppa:user/ppa-name"
    else
        echo "$ppa_name"
        echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu lucid main" >> /etc/apt/sources.list
        apt-get update >> /dev/null 2> /tmp/${NAME}_apt_add_key.txt
        key=$(cat /tmp/${NAME}_apt_add_key.txt | cut -d":" -f6 | cut -d" " -f3)
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        rm -rf /tmp/${NAME}_apt_add_key.txt
    fi
else
    echo "Utility to add PPA repositories in your debian machine"
    echo "$0 ppa:user/ppa-name"
fi

Không nên sử dụng ppa repo trong bản phân phối Debian của bạn. Không có kiểm soát về việc cài đặt làm điều đó.
Francis Coleues
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.