sublime package control失敗

https://blog.csdn.net/jyfu2_12/article/details/86667132php

 

安裝時的錯誤提示以下:html

Error installing Package Control: HTTPS error encountered, falling back to HTTP – <urlopen error="" [errno="" 60]="" operation="" timed="" out="">Error installing Package Control: HTTP error encountered, giving up –</urlopen> <urlopen error="" [errno="" 60]="" operation="" timed="" out="">error: An error occurred installing Package Control</urlopen>git

Please check the Console for details程序員

Visit https://packagecontrol.io/installation for manual instructions正則表達式

那咱們就 順着 https://packagecontrol.io/installation 向下來。先給本頁面代理,並替換安裝地址,最終代理後的地址以下: http://www.miaoqiyuan.cn/products/proxy.php/https://packagecontrol.io/installationjson

1. 直接訪問上面提到的安裝地址,獲取安裝代碼緩存

程序會自動替換安裝腳本的網絡路徑,已我已經部署好的地址爲例,安裝代碼爲:
bash

 
image

 

import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://www.miaoqiyuan.cn/products/proxy.php/http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by) 

2. 打開Sublime Text 控制檯,複製代碼安裝服務器

打開 Sublime Text,在 View 菜單下,找到 Show Console。在底部控制檯複製上面的代碼後,按回車,很快就會安裝完畢(和官方安裝方法一致)。
網絡

 
image

 

安裝完畢後,別忘了參考上面的教程更改 channels,請參考文章:http://www.miaoqiyuan.cn/p/package-control-error

項目已經在 Gitee.com 開源,能夠直接去 https://gitee.com/mqycn/Proxy-for-Chinese-programmer/下載。

已經實現:

一、支持自動更新 雖然以前可使用,可是由於 是手工保存到服務器靜態文件,只能使用老的插件。如今設置的每兩小時更新一次

二、在官網出現故障時仍能訪問 在自動和官網同步時,會 判斷 官網是否返回正確的代碼

三、一套最好能支持多個代理 借用 PHP 的PATH_INFO,能夠很是方面的傳入任何 URL,能夠對全網實現代理。固然,本程序也提供了白名單。

固然代理是有前提的:

一、對於被牆的代理,必須將域名放到 境外服務器

二、對於Sublime Text,服務器必須支持 IPv6

 

今天 Sublime Text 安裝 插件是,提示錯誤:

Package Control
There are no packages available for installation
Please see https://packagecontrol.io/docs/troubleshooting for help


控制檯提示:

Package Control: Attempting to use Urllib downloader due to WinINet error: Error downloading channel. Connection refused (errno 12029) during HTTP write phase of downloading https://packagecontrol.io/channel_v3.json.
Package Control: Error downloading channel. URL error [WinError 10060] 因爲鏈接方在一段時間後沒有正確答覆或鏈接的主機沒有反應,鏈接嘗試失敗。 downloading https://packagecontrol.io/channel_v3.json.

也考慮過最簡單的方法,將channel_v3.json 保存到本身的服務器上,修改 Sublime Text 的配置文件。這種缺點也很明顯,會和官方插件不一樣步(雖然新出的插件頁用不到),編寫了一個小代理腳本,會兩個小時自動同步一次,完美的解決了這個問題。固然,官網服務器加入出現故障時,本腳本不會更新,仍使用本地緩存。

Package Control 不能使用?

使用方法以下(以我我已經部署好的地址爲例,若是不放心我,能夠在頁面底部下載源碼自行部署):
1. 打開 Settings User

打開 Sublime Text,選擇 references -> Package Setting -> Package Control -> Settings User

2. 輸入配置信息 打開配置文件後,輸入 channels 信息(請參考頁面頂部路徑說明 ,以線上地址爲例):

這裏輸入代碼

3. 保存後,Package Control 已經能夠正常使用了

Package Control 不能安裝?

Package Control 能夠安裝插件了,在備用機例發現 Package Control 如今居然沒法安裝成功,這個有點繁瑣,還在用同一個腳本也解決了。

安裝時的錯誤提示以下:

Error installing Package Control: HTTPS error encountered, falling back to HTTP – 
Error installing Package Control: HTTP error encountered, giving up – 
error: An error occurred installing Package Control

Please check the Console for details

Visit https://packagecontrol.io/installation for manual instructions

那咱們就 順着 https://packagecontrol.io/installation 向下來。先給本頁面代理,並替換安裝地址,最終代理後的地址以下: http://www.miaoqiyuan.cn/products/proxy.php/https://packagecontrol.io/installation

1. 直接訪問上面提到的安裝地址,獲取安裝代碼

程序會自動替換安裝腳本的網絡路徑,已我已經部署好的地址爲例,安裝代碼爲:

1
import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://www.miaoqiyuan.cn/products/proxy.php/http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

2. 打開Sublime Text 控制檯,複製代碼安裝

打開 Sublime Text,在 View 菜單下,找到 Show Console。在底部控制檯複製上面的代碼後,按回車,很快就會安裝完畢(和官方安裝方法一致)。

安裝完畢後,別忘了參考上面的教程更改 channels

問題解決,吹吹牛

這樣處理後已經能用了,趁如今心情好,順便吹吹牛,煽煽情:

最爲一箇中國的開發者,吃飯的傢伙常常 由於 牆 的問題 無法使用。

雖然 阿里、網易 的鏡像能解決大部分問題,可是對於小衆的軟件就只沒辦法了(好比 神器 Sublime Text),每次出問題都把本身折騰的焦頭爛額,影響工做進度。好比 Sublime Text,以前從同行的博客分享中找到了 channel_v3.json,他的站點由於備案問題,今天也不能訪問了。。。

個人目標是這樣項目把全部 小工具因牆出現的問題 都解決了,讓中國程序員不怕斷網、不怕被牆,開開心心快快樂樂的編碼。(無論能不能實現,這個牛先吹着)

代理腳本也很簡單,只有60行代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
 
     define( 'CACHE' , './proxy/cache/' );
     define( 'CONFIG' , './proxy/conf/' );
 
     $url = isset( $_SERVER [ 'PATH_INFO' ]) ? $_SERVER [ 'PATH_INFO' ] : '' ;
     $url = substr ( $url , 1);
     $url = preg_replace( '/(https|http):\//' , '$1://' , $url );
 
     //驗證請求是否合法
     $white = json_decode( file_get_contents (CONFIG . 'white.json' ), true);
     $matched = false;
     $verify = false;
     foreach ( $white as $item ) {
         if (preg_match( $item [ 'pattern' ], $url )) {
             $matched = true;
             $verify = $item [ 'verify' ];
             break ;
         }
     }
     if (!matched) {
         header( '404 Not Found' );
         die ("
<h2>Only whitelisted links are allowed</h2>
 
");
     }
 
     //根據請求獲取MIME
     $mimes = json_decode( file_get_contents (CONFIG . 'mime-lite.json' ), true);
     $ext = explode ( "." , $url );
     $ext = $ext [ count ( $ext ) - 1];
     $ext = '.' . $ext ;
     if ( empty ( $mimes [ $ext ])) {
         $ext = '.html' ;
     }
     $mime = $mimes [ $ext ];
 
     //緩存文件,兩小時更新一次
     $cache_file = CACHE . md5( $cache ) . $ext ;
     if (! is_file ( $cache_file )) {
         $will_refrech = true;
     } elseif (time() - filemtime ( $cache_file ) > 7200) {
         $will_refrech = true;
     } else {
         $will_refrech = false;
     }
 
     if ( $will_refrech ) {
         $body = file_get_contents ( $url );
         if ( empty ( $verify ) || preg_match( $verify , $body )) {
             file_put_contents ( $cache_file , $body );
         }
     }
 
     //輸出結果
     if ( is_file ( $cache_file )) {
         header( "Content-Type: ${mime}" );
         header( "Last-Modified:" . gmdate ( "D, d M Y H:i:s" , filemtime ( $cache_file )) . " GMT" );
         header( "Content-Length:" . filesize ( $cache_file ));
         echo file_get_contents ( $cache_file );
     } else {
         header( '404 Not Found' );
         die ("
<h2>Server Error!</h2>
 
");
     }

項目已經在 Gitee.com 開源,能夠直接去 https://gitee.com/mqycn/Proxy-for-Chinese-programmer/ 下載。

已經實現:

一、支持自動更新 雖然以前可使用,可是由於 是手工保存到服務器靜態文件,只能使用老的插件。如今設置的每兩小時更新一次

二、在官網出現故障時仍能訪問 在自動和官網同步時,會 判斷 官網是否返回正確的代碼

三、一套最好能支持多個代理 借用 PHP 的PATH_INFO,能夠很是方面的傳入任何 URL,能夠對全網實現代理。固然,本程序也提供了白名單。

固然代理是有前提的:

一、對於被牆的代理,必須將域名放到 境外服務器

二、對於Sublime Text,服務器必須支持 IPv6

白名單設置說明
配置文件在: proxy/conf/white.json

1
2
3
4
5
6
7
8
9
10
[
   {
     "pattern" : "/https\\:\\/\\/packagecontrol\\.io\\/channel_v3\\.json/" ,
     "verify" : "/\"repositories\"/"
   },
   {
     "pattern" : "網址正則正則表達式,只有在列表中匹配到的url才能夠訪問" ,
     "verify" : "內容正則正則表達式,只有返回的內容能匹配本規則,纔會寫入緩存。也能夠爲false,不判斷直接寫入緩存"
   },
]
本條目發佈於 二月 11, 2019。屬於 PHP分類。
做者:那貓小帥 連接:https://www.jianshu.com/p/02665121caf9 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索