Как добавить PPA на сервер?

160

Серверная версия Ubuntu не имеет add-apt-repositoryкоманды. Как добавить личный архив пакетов (PPA) на сервер без этой команды?

Луис Альварадо
источник
в последней версии synaptic вы можете добавлять ppa непосредственно в исходные тексты программ вместо строки deb
Dirk Hartzer Waldeck
1
- @ Doug верен для Ubuntu 16.04 - @ fossfreedom верен для Ubuntu 14.04 В Ubuntu 16.04 действительно правильный пакет software-properties-common, как показано: $ type add-apt-repository add-apt-repository хэшируется (/ usr / bin / add-apt-repository) $ apt-file search / usr / bin / add-apt-repository software-properties-common: / usr / bin / add-apt-repository в предыдущих версиях его действительно можно найти в python-software-properties--- ОБНОВЛЕНИЕ: я комментирую это здесь, потому что я не мог добавить это как комментарий!
azbarcea
apt-add-repository работает прямо из коробки.
Atifm

Ответы:

196

Вы можете просто добавить add-apt-repositoryкоманду. В 13.10 и позже вам также нужно выполнить эту команду:

sudo apt-get install software-properties-common

Примечание: в 11.04 они добавили символическую ссылку, add-apt-repositoryчтобы ее можно было запускать, apt-add-repositoryчто для меня совершенно логично. Все остальное apt начинается с «apt».

ПРИМЕЧАНИЕ: это часть python-software-propertiesпакета (до 13.10):

sudo apt-get install python-software-properties
Марк Рассел
источник
Видя, что это на самом деле функция apt, это на самом деле логично для меня. "добавить репозиторий с помощью apt"> "apt-add-repository"
MrChrisDruif
5
Что делать, если «python-software-properties» уже установлен, и вы все еще получаете «command not found» при попытке использовать «apt-add-repository»?
monkut
Вы также пробовали "add-apt-respository"? В версиях до 11.04 вы должны поставить «add» перед «apt».
Марк Рассел
Что вы должны делать, когда «apt-get install python-software-properties» не работает, потому что это зависит от python-curl, который «не устанавливается»? В моей системе 12.04 она жалуется, что «не может исправить проблемы - у вас есть поврежденные пакеты»
Hoobajoob
Это software-properties-commonнабор определенных инструментов или набор утилит?
Алекс
74

Позволь мне научить тебя ловить рыбу. apt-fileпозволяет узнать, какой пакет предоставляет данный файл. dpkg -Sделает то же самое, но только для установленных пакетов. apt-fileработает независимо от того, был ли установлен пакет.

Итак, сначала установить APT-файл: sudo apt-get install apt-file. Затем вам нужно обновить информацию, так же , как вы должны с APT-GET: sudo apt-file update. Теперь он готов к использованию:

$ apt-file search add-apt-repository
python-software-properties: /usr/bin/add-apt-repository
python-software-properties: /usr/share/man/man1/add-apt-repository.1.gz

Таким образом, в этом случае следующая вещь должна была бы установить python-software-properties.

Джо-Эрленд Шинстад
источник
3
отличный совет - его, возможно, не следует скрывать в этом вопросе - для этого стоит выделить отдельный вопрос.
fossfreedom
@fossfreedom Это то, о чем ты говоришь? - askubuntu.com/questions/13792/…
jrg
9
Благодаря этому совету я обнаружил, что в 12.10 сервер apt-add-repository находится в общих свойствах программного обеспечения (больше не в свойствах программного обеспечения python)
Kat Amsterdam
Почему я продолжаю забывать, что эта невероятно полезная команда существует! Отличный ответ.
Lleaff
53

Это не обязательно лучший ответ, но он будет функционировать:

Старомодный способ (до Ubuntu 9.10, как они его называют) редактирования /etc/apt/sources.listвсе еще работает. Вам также нужно будет вручную получить ключ GPG в системе.

В старых (до 9.10) системах Ubuntu:

Шаг 1: Посетите обзорную страницу PPA в Launchpad. Найдите заголовок «Добавление этого PPA в вашу систему» ​​и нажмите «Технические подробности» по этой ссылке PPA.

Шаг 2: Используйте раскрывающийся список Показать источники.список, чтобы выбрать версию Ubuntu, которую вы используете.

Шаг 3: Вы увидите, что текстовое поле непосредственно ниже выглядит примерно так:

deb http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu jaunty main

Скопируйте эти строки.

Шаг 4: Откройте терминал и введите:

sudo gedit /etc/apt/sources.list

Откроется текстовый редактор, содержащий список архивов, которые ваша система использует в настоящее время. Прокрутите до конца файла и вставьте строки, скопированные на шаге выше.

Сохраните файл и выйдите из текстового редактора.

Шаг 5: Вернитесь на страницу обзора PPA и найдите заголовок Ключ подписи. Вы увидите что-то вроде:

1024R / 72D340A3 (Что это?)

Скопируйте часть после косой черты, но не включая ссылку справки; например, просто 72D340A3.

Шаг 6: Теперь вам нужно добавить этот ключ в вашу систему, чтобы Ubuntu могла проверять пакеты из PPA. В своем терминале введите:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 72D340A3

(Замените 72D340A3 на то, что вы скопировали в шаге 5.)

Это теперь вытащит ключ PPA и добавит его в вашу систему.

Шаг 7: Теперь, как единовременный, вы должны сказать своей системе, чтобы она вынимала последний список программного обеспечения из каждого архива, о котором она знает, включая PPA, который вы только что добавили:

sudo apt-get update

Теперь вы готовы начать установку программного обеспечения с PPA!

Broam
источник
1
Если другой, более быстрый и удобный для пользователя ответ не дан, тогда я поставлю его как правильный. Это решает проблему «особым» способом;)
Луис Альварадо
1
Несмотря на то, что add-apt-repository проще, при установке на сервере мне нравится сохранять простоту, поэтому я не против делать это вручную. Это был ответ, который я искал.
D. Strout
1
Этот метод намного лучше, чем установка apt-add-repositoryи всякая ерунда, которая идет с необходимым пакетом.
Дмитрий Минковский
4
Пакет software-properties-common - ОГРОМНЫЙ, кажется слишком большим, чтобы просто добавить текст в файл и выполнить пару команд. Такая трата пространства при использовании в Docker. Этот ответ очень полезен!
rsmoorthy
3
Это должен быть принятый ответ, так как ОП спросил, как обойтись без использования add-apt-repository ... Спасибо большое за это!
djBo
15

add-apt-repositoryпредоставляется пакетом python-software-properties.

Таким образом, если вы должны установить через

sudo apt-get install python-software-properties
fossfreedom
источник
Спасибо! Сразу скажу, что нахожу довольно нелогичное имя. Кроме того, у вас есть идея, почему я не установлен стандартно?
Питер Смит
2
согласился с нелогичностью - почему вы можете предположить, что серверы обычно «исправлены» с точки зрения запуска программного обеспечения. Таким образом, вам не нужна «роскошь» частого добавления и удаления репозиториев ... конец спекуляции!
fossfreedom
Почему это нелогично? Это набор инструментов Python для работы со свойствами программного обеспечения. add-apt-repository является одним из таких инструментов.
Джо-Эрленд Шинстад
Я уже python-software-propertiesустановил, но я продолжаю получать эту ошибку. Я пробовал apt-addи add-aptнотации, и никто не работает ... что делать?
Мохамад
1
@ Мохамад, потому что это неправильно, по крайней мере, для Ubuntu 14.04. Все, что вам нужно установить, это software-properties-common.
Теодор Р. Смит
15

Запустите эту команду:

sudo apt-get install software-properties-common

И тогда вы можете добавить свой репозиторий, работающий:

sudo add-apt-repository [REPOSITORY]

Renember для замены [REPOSITORY]на имя репозитория, которое вы хотите добавить.

Doug
источник
Это сработало отлично.
Аарон
0

У меня была дискуссия с коллегой об этом несколько недель назад. Дать

apt-add-repository

попытка Не нужно никаких других пакетов. Обратите внимание, что apt появляется перед добавлением. Порядок имеет значение, потому что необходимо установить add-apt-repository.

Для тех скептиков там. Попробуйте этот файл Vagrant. Обратите внимание, я начинаю со свежего верного изображения и добавляю ppa прямо из коробки.

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu/trusty64"
  config.ssh.username = "vagrant"

  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-add-repository ppa:george-edison55/cmake-3.x -y
    sudo apt update
    sudo apt upgrade
    sudo apt install -y virtualbox-guest-dkms
    sudo apt-get install -y curl g++ libpng12-dev  \
      libtiff5-dev libssl-dev libxml2-dev libxslt1-dev libpq-dev postgresql-client \
      postgresql pgadmin3 liblcms2-dev libcrypto++9 libcrypto++-dev \
      graphviz-dev libboost1.55-dev libboost-filesystem1.55-dev libboost-system1.55-dev \
      libexpat1-dev python-software-properties qtbase5-dev qttools5-dev  \
      libqt5svg5-dev qtscript5-dev qtdeclarative5-dev qtmultimedia5-dev \
      libsqlite3-dev qt5-default cmake

  SHELL
end

Обновление: просто чтобы прояснить, похоже, что образы облаков для Ubuntu точны, и на них уже установлен правильный пакет. Так что, говорим ли мы о скриптах cloud-init или о бродячем файле, apt-add-repository присутствует. Поскольку add-apt-repository находится в том же пакете, который также должен работать.

Atifm
источник
Заказ не имеет значения. См. Askubuntu.com/questions/83489/… .
Edwinksl
1
Объясните, почему этот бродячий файл работает тогда. Обратите внимание, я не спорю, что они делают что-то другое. Они делают то же самое. Вам просто нужен пакет для надстройки, где, как и другие, работает с нуля.
Atifm
@atifm: Смотрите этот ответ : $ apt-file search add-apt-repository software-common-properties: / usr / bin / add-apt-repository software-properties-common: / usr / share / man / man1 / add- apt-repository.1.gz $ apt-file search apt-add-repository свойства программного обеспечения-общие: / usr / bin / apt-add-repository свойства-программного обеспечения-общие: / usr / share / man / man1 / apt- add-repository.1.gz
tricasse
@tricasse: Спасибо за ссылку на apt-файл, который будет полезен в другом месте. Итак, вы правы, они находятся в одном пакете, что проверено apt-файлом. Тем не менее, похоже, что облачные образы Ubuntu (для vagrant) точно и достоверно уже установили пакет. Не уверен, что так было всегда, но, похоже, так оно и есть на данный момент
Atifm