apt-add-repository: Dockerfile में कमांड को त्रुटि नहीं मिली


92

मैंने अभी-अभी अपने टर्मिनल में एक बहुत ही सरल डॉकर फ़ाइल बनाई, मूल रूप से मैंने निम्नलिखित कार्य किया:

mkdir pgrouted
cd pgrouted
touch Dockerfile

अब मैं नैनो एडिटर में डॉकर फाइल खोलता हूं , और मैं निम्नलिखित कमांड्स को डॉकर फाइल में जोड़ता हूं:

FROM ubuntu

MAINTAINER Gautam <gautamx07@yahoo.com>

LABEL Description="pgrouting excercise" Vendor="skanatek" Version="1.0"

ENV BBOX="-122.8,45.4,-122.5,45.6"

# Add pgRouting launchpad repository
RUN sudo apt-add-repository -y ppa:ubuntugis/ppa
RUN sudo apt-add-repository -y ppa:georepublic/pgrouting
RUN sudo apt-get update

# Install pgRouting package (for Ubuntu 14.04)
RUN sudo apt-get install postgresql-9.3-pgrouting

# Install osm2pgrouting package
RUN sudo apt-get install osm2pgrouting

# Install workshop material (optional, but maybe slightly outdated)
RUN sudo apt-get install pgrouting-workshop

# For workshops at conferences and events:
# Download and install from http://trac.osgeo.org/osgeo/wiki/Live_GIS_Workshop_Install
RUN wget --no-check-certificate https://launchpad.net/~georepublic/+archive/pgrouting/+files/pgrouting-workshop_2.0.6-ppa1_all.deb

RUN sudo dpkg -i pgrouting-workshop_2.0.6-ppa1_all.deb

# Review: Not sure weather this should be in the dockerfile
RUN cp -R /usr/share/pgrouting/workshop ~/Desktop/pgrouting-workshop

# Log in as user "user"
RUN psql -U postgres

# Create routing database
RUN CREATE DATABASE routing;

# Add PostGIS functions
RUN CREATE EXTENSION postgis;

# Add pgRouting core functions
CREATE EXTENSION pgrouting;

# Download using Overpass XAPI (larger extracts possible than with default OSM API)
wget --progress=dot:mega -O "sampledata.osm" "http://www.overpass-api.de/api/xapi?*[bbox=${BBOX}][@meta]"

संपूर्ण डॉकरीफ़ाइल को एक नज़र में यहाँ देखा जा सकता है ।

अब जब मैं Dockerfile बनाने की कोशिश कर रहा हूँ, जैसे:

docker build -t gautam/pgrouted:v1 .

Dockerfile चलता है और फिर मुझे नीचे की त्रुटि मिलती है:

Step 4 : RUN sudo apt-add-repository -y ppa:ubuntugis/ppa
 ---> Running in c93c3c5fd5e8
sudo: apt-add-repository: command not found
The command '/bin/sh -c sudo apt-add-repository -y ppa:ubuntugis/ppa' returned a non-zero code: 1

क्यों यह त्रुटि आ रही है?

जवाबों:


124

apt-add-repository सिर्फ आधार उबंटू इमेज में नहीं है। आपको पहले इसे इंस्टॉल करना होगा। प्रयत्नapt-get install software-properties-common

वैसे, आपको Dockerfile में sudo का उपयोग करने की आवश्यकता नहीं है क्योंकि कमांड डिफ़ॉल्ट रूप से रूट के रूप में चलते हैं जब तक कि आप USERकमांड के साथ किसी अन्य उपयोगकर्ता को नहीं बदलते ।


2
मैंने pt-get install software-properties-commonपहले RUN pt-get install software-properties-commonकमांड के रूप में जोड़ा , जैसे कि, अब मुझे यह त्रुटि मिली chopapp.com/#8a4vdsnw
अलेक्जेंडर सोलोनिक

1
आपके उबंटू संस्करण के आधार पर, यह python-software-propertiesया तो हो सकता हैsoftware-properties-common
20:29 बजे user2915097

4
ubuntu 16.04 पर यह 46MiB अतिरिक्त डेटा स्थापित करना चाहता है: / एक साधारण कमांड को निष्पादित करने में सक्षम होने के लिए बहुत अधिक।
cweiske

27
न तो अजगर-सॉफ़्टवेयर-गुण और न ही सॉफ़्टवेयर-गुण-सामान्य मान्य हैं
जोनाथन न्यूफ़ेल्ड

11
बस उन लोगों के लिए जो अभी भी कुछ त्रुटि प्राप्त कर रहे हैं। मैंने एक ही लाइन पर अद्यतन और स्थापित करके हल किया apt-get update && apt-get install -y software-properties-common:। पहले अपडेट चलाना और फिर इंस्टॉल करना काम नहीं लगता। संभवतः एक
डॉक

59

apt-add-repositoryकमांड चलाने से पहले इन पंक्तियों को जोड़ें

RUN apt-get update && \
    apt-get install -y software-properties-common && \
    rm -rf /var/lib/apt/lists/*

2
मुझे पहली पंक्ति में उपसर्ग-लापता जोड़ना था।
एडहलर

rmके प्रभाव नाश कर देती है apt-get update। कंटेनर परत में पैकेज मेटाडेटा को संग्रहीत करने का कोई मतलब नहीं है। यदि आप बाद में apt-get installअतिरिक्त पैकेज चाहते हैं, तो आपको एक नया करना चाहिए apt-get update
टॉक्सरीस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.