Ubuntuにppaリポジトリを追加するために、次のコマンドを実行しました。
sudo add-apt-repository ppa:ppaname/ppa
このコマンドは、ppa名が正しい形式ではないというエラーを返します。それから見てここしたがって、次のコマンドを実行します。
sudo -E add-apt-repository ppa:ppaname/ppa
上記のコマンドは魔法のように動作します。その後、マニュアルページを読み、環境変数を保存するように指示sudo
します。sudo -E
私が理解していないのは、環境変数を維持することが私にどのように役立つかです。
注:私はプロキシの背後で作業します。
答え1
インターネット接続にプロキシを使用している場合は、システムにユーザーがプロキシサーバーのIPを設定できるように、いくつかの環境変数が設定されている可能性があります。オプションなしでsudoを使用すると、-E
環境変数が保持されず、インターネットに接続できず、add-apt-repository
このエラーが表示されます。add-apt-repository
ソースコードを見ると、次のような内容を見ることができます。
try:
ppa_info = get_ppa_info_from_lp(user, ppa_name)
except HTTPError:
print _("Cannot add PPA: '%s'.") % line
if user.startswith("~"):
print _("Did you mean 'ppa:%s/%s' ?" %(user[1:], ppa_name))
sys.exit(1) # Exit because the user cannot be correct
# If the PPA does not exist, then try to find if the user/team
# exists. If it exists, list down the PPAs
_maybe_suggest_ppa_name_based_on_user(user)
sys.exit(1)
したがって、インターネットに接続できない場合に_maybe_suggest_ppa_name_based_on_user()
呼び出されます。実装は次のとおりです。
def _maybe_suggest_ppa_name_based_on_user(user):
try:
from launchpadlib.launchpad import Launchpad
lp = Launchpad.login_anonymously(lp_application_name, "production")
try:
user_inst = lp.people[user]
entity_name = "team" if user_inst.is_team else "user"
if len(user_inst.ppas) > 0:
print _("The %s named '%s' has no PPA named '%s'"
%(entity_name, user, ppa_name))
print _("Please choose from the following available PPAs:")
for ppa in user_inst.ppas:
print _(" * '%s': %s" %(ppa.name, ppa.displayname))
else:
print _("The %s named '%s' does not have any PPA"
%(entity_name, user))
except KeyError:
pass
except ImportError:
print _("Please check that the PPA name or format is correct.")
ご覧のとおり、インポートPlease check that the PPA name or format is correct
できない場合はメッセージが表示されますLaunchpad
。あなたはインストールする必要がありますpython-launchpadlibインポートに成功するには
ノート
launchpadlib
機能するにはインターネット接続も必要なので、報告するのは不明だと思います。この場合、より明確に報告するには、スクリプトがインターネットに接続されていないことを確認する必要があります。