私のソースにリポジトリを追加しようとしています。リポジトリでは、ユーザー名とパスワードを追加する必要があります。また、特殊文字をUrlencodeする必要があることを警告します。。
だから私は次のように付け加えました。
deb https://[email protected]:p@[email protected]/enterprise stable main
しかしapt-get update
、言えば:
W: Failed to fetch https://[email protected]/enterprise/dists/stable/main/binary-amd64/Packages Could not resolve host: [email protected]
この時点で私は@
次のように変更しました%40
。
deb https://user%40mail.com:p%[email protected]/enterprise stable main
しかし、サイコロがない場合、エラーはまったく同じままです。
特殊文字を削除するためにパスワードを変更し、エラーが見つからないように送信されないようにする前に、誰かがapt-getが特殊文字とパスワードで保護されているリポジトリをどのように処理するかについて理解していないことを説明してください。mail.com:[email protected]
答え1
これ@
はURLに予約されている文字です。
すべて[RFC 3986、URI(Uniform Resource Identifier):汎用構文、セクション2.2、予約文字] [1]:
2.2.予約された文字
URIには、「予約済み」セットの文字で区切られたコンポーネントとサブコンポーネントが含まれます。これらの文字は、ユニバーサル構文、各スキーム固有の構文の実装固有の構文、またはURI逆参照アルゴリズムによって区切り文字として定義される場合と定義されない場合があるため、「予約済み」文字と呼ばれます。 URIコンポーネントのデータが予約文字を区切り文字として使用することと競合する場合は、URIを形成する前に競合するデータをパーセントでエンコードする必要があります。
reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
予約文字の目的は、URIの他のデータと区別できる区切り文字セットを提供することです。予約された文字をその割合でエンコードされたオクテットに置き換える方法が異なるURIは同じではありません。予約された文字をパーセントでエンコードするか、予約された文字に対応するパーセントでエンコードされたオクテットをデコードすると、ほとんどのアプリケーションがURIを解釈する方法が変わります。したがって、予約されたセットの文字は正規化の影響を受けないため、スキーマ固有およびプロデューサ固有のアルゴリズムで安全に使用してURI内のデータサブコンポーネントを区別することができます。
@
「gen-delims」の1つとしてリストされています。 [1]:https://www.rfc-editor.org/rfc/rfc3986#section-2.2
答え2
APT認証プロファイルの使用
APTは認証に別々の構成ファイルを使用します(この情報は構成ファイルの「APT行」には表示されません)。これらのファイルは/etc/apt/auth.conf.d/
ユースケースに対して次の場所にあり、構文があります。
machine FQDN login USERNAME password PASSWORD
FQDN
あなたの場合はdebian.datastax.com
そうですUSERNAME
。[email protected]
パスワードはですp@ssword
。 APTは自動的に残りのタスクを処理します(特殊文字をURLにエンコード)。