[{"data":1,"prerenderedAt":1317},["ShallowReactive",2],{"navigation_docs_zh_CN":3,"\u002Fzh-CN\u002Freference\u002Fcheckers":85,"\u002Fzh-CN\u002Freference\u002Fcheckers-surround":1312},[4,19,41,75],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"快速开始","i-lucide-book-open","\u002Fzh-CN\u002Fgetting-started","zh-CN\u002F1.getting-started",[10,14],{"title":11,"path":12,"stem":13},"安装","\u002Fzh-CN\u002Fgetting-started\u002Finstallation","zh-CN\u002F1.getting-started\u002F1.installation",{"title":15,"path":16,"stem":17},"第一个 Pin","\u002Fzh-CN\u002Fgetting-started\u002Ffirst-pin","zh-CN\u002F1.getting-started\u002F2.first-pin",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"使用指南","i-lucide-route","\u002Fzh-CN\u002Fguides","zh-CN\u002F2.guides",[25,29,33,37],{"title":26,"path":27,"stem":28},"更新与选择","\u002Fzh-CN\u002Fguides\u002Fupdating","zh-CN\u002F2.guides\u002F1.updating",{"title":30,"path":31,"stem":32},"组合 Checker 与 Fetcher","\u002Fzh-CN\u002Fguides\u002Fcombinations","zh-CN\u002F2.guides\u002F2.combinations",{"title":34,"path":35,"stem":36},"多 Source 与补丁","\u002Fzh-CN\u002Fguides\u002Fmulti-source","zh-CN\u002F2.guides\u002F3.multi-source",{"title":38,"path":39,"stem":40},"Package 与依赖哈希","\u002Fzh-CN\u002Fguides\u002Fdependencies","zh-CN\u002F2.guides\u002F4.dependencies",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":18},"参考文档","i-lucide-code","\u002Fzh-CN\u002Freference","zh-CN\u002F3.reference",[47,51,55,59,63,67,71],{"title":48,"path":49,"stem":50},"CLI","\u002Fzh-CN\u002Freference\u002Fcli","zh-CN\u002F3.reference\u002F1.cli",{"title":52,"path":53,"stem":54},"运行配置","\u002Fzh-CN\u002Freference\u002Fconfiguration","zh-CN\u002F3.reference\u002F2.configuration",{"title":56,"path":57,"stem":58},"Pin 声明","\u002Fzh-CN\u002Freference\u002Fpins","zh-CN\u002F3.reference\u002F3.pins",{"title":60,"path":61,"stem":62},"Checker","\u002Fzh-CN\u002Freference\u002Fcheckers","zh-CN\u002F3.reference\u002F4.checkers",{"title":64,"path":65,"stem":66},"Fetcher","\u002Fzh-CN\u002Freference\u002Ffetchers","zh-CN\u002F3.reference\u002F5.fetchers",{"title":68,"path":69,"stem":70},"Package Builder","\u002Fzh-CN\u002Freference\u002Fbuilders","zh-CN\u002F3.reference\u002F6.builders",{"title":72,"path":73,"stem":74},"Reader 与 Pins File","\u002Fzh-CN\u002Freference\u002Freader","zh-CN\u002F3.reference\u002F7.reader",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":18},"排错指南","i-lucide-wrench","\u002Fzh-CN\u002Ftroubleshooting","zh-CN\u002F4.troubleshooting",[81],{"title":82,"path":83,"stem":84},"常见错误","\u002Fzh-CN\u002Ftroubleshooting\u002Fcommon-errors","zh-CN\u002F4.troubleshooting\u002F1.common-errors",{"id":86,"title":60,"body":87,"description":1305,"extension":1306,"links":1307,"meta":1308,"navigation":1309,"path":61,"seo":1310,"stem":62,"__hash__":1311},"docs_zh_CN\u002Fzh-CN\u002F3.reference\u002F4.checkers.md",{"type":88,"value":89,"toc":1289},"minimark",[90,107,115,138,277,284,295,386,411,572,580,587,603,731,738,749,872,879,901,1036,1043,1054,1178,1185,1188,1282,1285],[91,92,93,94,97,98,102,103,106],"p",{},"Checker 只决定 Pin 的 Version。获取源码由 ",[95,96,64],"a",{"href":65},"负责。除 ",[99,100,101],"code",{},"cmd"," 外，下面的构造器接收属性集；它们不直接接收 ",[99,104,105],{},"pin.github"," 那种字符串简写。",[108,109,111,112],"h2",{"id":110},"githubpincheckergithub","GitHub：",[99,113,114],{},"pin.checker.github",[91,116,117,118,121,122,125,126,129,130,133,134,137],{},"参数为 ",[99,119,120],{},"target = \"owner\u002Frepo\"","，或 ",[99,123,124],{},"owner"," 与 ",[99,127,128],{},"repo","。不能混用。读取 GitHub 的 ",[99,131,132],{},"\u002Freleases\u002Flatest","，使用 ",[99,135,136],{},"tag_name"," 的原始字符串；这与按 Git tag 排序不同。",[139,140,145],"pre",{"className":141,"code":142,"language":143,"meta":144,"style":144},"language-nix shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ pin }: {\n  patchelf = pin.mk {\n    checker = pin.checker.github { target = \"NixOS\u002Fpatchelf\"; };\n    fetcher = pin.fetcher.github { target = \"NixOS\u002Fpatchelf\"; };\n  };\n}\n","nix","",[99,146,147,166,186,230,265,271],{"__ignoreMap":144},[148,149,152,156,160,163],"span",{"class":150,"line":151},"line",1,[148,153,155],{"class":154},"sMK4o","{",[148,157,159],{"class":158},"sHdIc"," pin",[148,161,162],{"class":154}," }:",[148,164,165],{"class":154}," {\n",[148,167,169,173,176,178,181,184],{"class":150,"line":168},2,[148,170,172],{"class":171},"spNyl","  patchelf",[148,174,175],{"class":154}," =",[148,177,159],{"class":158},[148,179,180],{"class":154},".",[148,182,183],{"class":158},"mk",[148,185,165],{"class":154},[148,187,189,192,194,196,198,201,203,206,209,212,214,217,221,224,227],{"class":150,"line":188},3,[148,190,191],{"class":171},"    checker",[148,193,175],{"class":154},[148,195,159],{"class":158},[148,197,180],{"class":154},[148,199,200],{"class":158},"checker",[148,202,180],{"class":154},[148,204,205],{"class":158},"github",[148,207,208],{"class":154}," {",[148,210,211],{"class":171}," target",[148,213,175],{"class":154},[148,215,216],{"class":154}," \"",[148,218,220],{"class":219},"sfazB","NixOS\u002Fpatchelf",[148,222,223],{"class":154},"\"",[148,225,226],{"class":154},";",[148,228,229],{"class":154}," };\n",[148,231,233,236,238,240,242,245,247,249,251,253,255,257,259,261,263],{"class":150,"line":232},4,[148,234,235],{"class":171},"    fetcher",[148,237,175],{"class":154},[148,239,159],{"class":158},[148,241,180],{"class":154},[148,243,244],{"class":158},"fetcher",[148,246,180],{"class":154},[148,248,205],{"class":158},[148,250,208],{"class":154},[148,252,211],{"class":171},[148,254,175],{"class":154},[148,256,216],{"class":154},[148,258,220],{"class":219},[148,260,223],{"class":154},[148,262,226],{"class":154},[148,264,229],{"class":154},[148,266,268],{"class":150,"line":267},5,[148,269,270],{"class":154},"  };\n",[148,272,274],{"class":150,"line":273},6,[148,275,276],{"class":154},"}\n",[108,278,280,281],{"id":279},"gitpincheckergit","Git：",[99,282,283],{},"pin.checker.git",[91,285,286,287,290,291,294],{},"目标为 ",[99,288,289],{},"target"," 或 ",[99,292,293],{},"url","，二者不能混用。支持：",[296,297,298,316],"table",{},[299,300,301],"thead",{},[302,303,304,310,313],"tr",{},[305,306,307],"th",{},[99,308,309],{},"mode",[305,311,312],{},"额外字段",[305,314,315],{},"Version",[317,318,319,334,349,363],"tbody",{},[302,320,321,328,331],{},[322,323,324,327],"td",{},[99,325,326],{},"head","（默认）",[322,329,330],{},"无",[322,332,333],{},"HEAD 提交号",[302,335,336,341,346],{},[322,337,338],{},[99,339,340],{},"branch",[322,342,343,344],{},"必需 ",[99,345,340],{},[322,347,348],{},"分支提交号",[302,350,351,356,360],{},[322,352,353],{},[99,354,355],{},"ref",[322,357,343,358],{},[99,359,355],{},[322,361,362],{},"指定 ref 对应提交号；优先解析注解 tag 的 peeled commit",[302,364,365,370,383],{},[322,366,367],{},[99,368,369],{},"tag",[322,371,372,373,376,377,376,380],{},"可选 ",[99,374,375],{},"include","、",[99,378,379],{},"exclude",[99,381,382],{},"sort",[322,384,385],{},"排序后的原始 tag",[91,387,388,125,390,392,393,395,396,399,400,403,404,125,407,410],{},[99,389,375],{},[99,391,379],{}," 是 Rust 正则，过滤 tag 名。",[99,394,382],{}," 默认 ",[99,397,398],{},"semver","，还可使用 ",[99,401,402],{},"lexicographic","。不要用字典序代替语义版本比较来判断 ",[99,405,406],{},"1.9",[99,408,409],{},"1.10","。",[139,412,414],{"className":141,"code":413,"language":143,"meta":144,"style":144},"{ pin }: {\n  patchelf = pin.mk {\n    checker = pin.checker.git {\n      target = \"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git\";\n      mode = \"tag\";\n      include = \"^[0-9]+[.][0-9]+[.][0-9]+$\";\n      sort = \"semver\";\n    };\n    fetcher = pin.fetcher.git { target = \"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git\"; };\n  };\n}\n",[99,415,416,426,440,459,476,491,507,523,529,562,567],{"__ignoreMap":144},[148,417,418,420,422,424],{"class":150,"line":151},[148,419,155],{"class":154},[148,421,159],{"class":158},[148,423,162],{"class":154},[148,425,165],{"class":154},[148,427,428,430,432,434,436,438],{"class":150,"line":168},[148,429,172],{"class":171},[148,431,175],{"class":154},[148,433,159],{"class":158},[148,435,180],{"class":154},[148,437,183],{"class":158},[148,439,165],{"class":154},[148,441,442,444,446,448,450,452,454,457],{"class":150,"line":188},[148,443,191],{"class":171},[148,445,175],{"class":154},[148,447,159],{"class":158},[148,449,180],{"class":154},[148,451,200],{"class":158},[148,453,180],{"class":154},[148,455,456],{"class":158},"git",[148,458,165],{"class":154},[148,460,461,464,466,468,471,473],{"class":150,"line":232},[148,462,463],{"class":171},"      target",[148,465,175],{"class":154},[148,467,216],{"class":154},[148,469,470],{"class":219},"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git",[148,472,223],{"class":154},[148,474,475],{"class":154},";\n",[148,477,478,481,483,485,487,489],{"class":150,"line":267},[148,479,480],{"class":171},"      mode",[148,482,175],{"class":154},[148,484,216],{"class":154},[148,486,369],{"class":219},[148,488,223],{"class":154},[148,490,475],{"class":154},[148,492,493,496,498,500,503,505],{"class":150,"line":273},[148,494,495],{"class":171},"      include",[148,497,175],{"class":154},[148,499,216],{"class":154},[148,501,502],{"class":219},"^[0-9]+[.][0-9]+[.][0-9]+$",[148,504,223],{"class":154},[148,506,475],{"class":154},[148,508,510,513,515,517,519,521],{"class":150,"line":509},7,[148,511,512],{"class":171},"      sort",[148,514,175],{"class":154},[148,516,216],{"class":154},[148,518,398],{"class":219},[148,520,223],{"class":154},[148,522,475],{"class":154},[148,524,526],{"class":150,"line":525},8,[148,527,528],{"class":154},"    };\n",[148,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560],{"class":150,"line":531},9,[148,533,235],{"class":171},[148,535,175],{"class":154},[148,537,159],{"class":158},[148,539,180],{"class":154},[148,541,244],{"class":158},[148,543,180],{"class":154},[148,545,456],{"class":158},[148,547,208],{"class":154},[148,549,211],{"class":171},[148,551,175],{"class":154},[148,553,216],{"class":154},[148,555,470],{"class":219},[148,557,223],{"class":154},[148,559,226],{"class":154},[148,561,229],{"class":154},[148,563,565],{"class":150,"line":564},10,[148,566,270],{"class":154},[148,568,570],{"class":150,"line":569},11,[148,571,276],{"class":154},[91,573,574,576,577,579],{},[99,575,340],{}," 只用于 branch 模式，",[99,578,355],{}," 只用于 ref 模式。没有匹配 tag 或无法解析 ref 会使该 Pin 失败。",[108,581,583,584],{"id":582},"cratesiopincheckercrate","crates.io：",[99,585,586],{},"pin.checker.crate",[91,588,286,589,290,591,594,595,598,599,602],{},[99,590,289],{},[99,592,593],{},"name","，表示 crate 名。读取 crates.io 返回的 ",[99,596,597],{},"newest_version","，没有该字段时使用 ",[99,600,601],{},"max_version","；不是只选择稳定版本的过滤器。",[139,604,606],{"className":141,"code":605,"language":143,"meta":144,"style":144},"{ pin }: {\n  ripgrep = pin.mk {\n    checker = pin.checker.crate { target = \"ripgrep\"; };\n    fetcher = pin.fetcher.url {\n      url = version: \"https:\u002F\u002Fcrates.io\u002Fapi\u002Fv1\u002Fcrates\u002Fripgrep\u002F${version}\u002Fdownload\";\n    };\n  };\n}\n",[99,607,608,618,633,667,685,719,723,727],{"__ignoreMap":144},[148,609,610,612,614,616],{"class":150,"line":151},[148,611,155],{"class":154},[148,613,159],{"class":158},[148,615,162],{"class":154},[148,617,165],{"class":154},[148,619,620,623,625,627,629,631],{"class":150,"line":168},[148,621,622],{"class":171},"  ripgrep",[148,624,175],{"class":154},[148,626,159],{"class":158},[148,628,180],{"class":154},[148,630,183],{"class":158},[148,632,165],{"class":154},[148,634,635,637,639,641,643,645,647,650,652,654,656,658,661,663,665],{"class":150,"line":188},[148,636,191],{"class":171},[148,638,175],{"class":154},[148,640,159],{"class":158},[148,642,180],{"class":154},[148,644,200],{"class":158},[148,646,180],{"class":154},[148,648,649],{"class":158},"crate",[148,651,208],{"class":154},[148,653,211],{"class":171},[148,655,175],{"class":154},[148,657,216],{"class":154},[148,659,660],{"class":219},"ripgrep",[148,662,223],{"class":154},[148,664,226],{"class":154},[148,666,229],{"class":154},[148,668,669,671,673,675,677,679,681,683],{"class":150,"line":232},[148,670,235],{"class":171},[148,672,175],{"class":154},[148,674,159],{"class":158},[148,676,180],{"class":154},[148,678,244],{"class":158},[148,680,180],{"class":154},[148,682,293],{"class":158},[148,684,165],{"class":154},[148,686,687,690,692,695,698,700,703,706,709,712,715,717],{"class":150,"line":267},[148,688,689],{"class":171},"      url",[148,691,175],{"class":154},[148,693,694],{"class":158}," version",[148,696,697],{"class":154},":",[148,699,216],{"class":154},[148,701,702],{"class":219},"https:\u002F\u002Fcrates.io\u002Fapi\u002Fv1\u002Fcrates\u002Fripgrep\u002F",[148,704,705],{"class":154},"${",[148,707,708],{"class":158},"version",[148,710,711],{"class":154},"}",[148,713,714],{"class":219},"\u002Fdownload",[148,716,223],{"class":154},[148,718,475],{"class":154},[148,720,721],{"class":150,"line":273},[148,722,528],{"class":154},[148,724,725],{"class":150,"line":509},[148,726,270],{"class":154},[148,728,729],{"class":150,"line":525},[148,730,276],{"class":154},[108,732,734,735],{"id":733},"pypipincheckerpypi","PyPI：",[99,736,737],{},"pin.checker.pypi",[91,739,286,740,290,742,744,745,748],{},[99,741,289],{},[99,743,593],{},"，表示 PyPI 项目名。读取项目 JSON 中的 ",[99,746,747],{},"info.version","。下载文件可通过版本映射独立选择：",[139,750,752],{"className":141,"code":751,"language":143,"meta":144,"style":144},"{ pin }: {\n  requests = pin.mk {\n    checker = pin.checker.pypi { target = \"requests\"; };\n    fetcher = pin.fetcher.zip {\n      url = version: \"https:\u002F\u002Ffiles.pythonhosted.org\u002Fpackages\u002Fsource\u002Fr\u002Frequests\u002Frequests-${version}.tar.gz\";\n    };\n  };\n}\n",[99,753,754,764,779,813,832,860,864,868],{"__ignoreMap":144},[148,755,756,758,760,762],{"class":150,"line":151},[148,757,155],{"class":154},[148,759,159],{"class":158},[148,761,162],{"class":154},[148,763,165],{"class":154},[148,765,766,769,771,773,775,777],{"class":150,"line":168},[148,767,768],{"class":171},"  requests",[148,770,175],{"class":154},[148,772,159],{"class":158},[148,774,180],{"class":154},[148,776,183],{"class":158},[148,778,165],{"class":154},[148,780,781,783,785,787,789,791,793,796,798,800,802,804,807,809,811],{"class":150,"line":188},[148,782,191],{"class":171},[148,784,175],{"class":154},[148,786,159],{"class":158},[148,788,180],{"class":154},[148,790,200],{"class":158},[148,792,180],{"class":154},[148,794,795],{"class":158},"pypi",[148,797,208],{"class":154},[148,799,211],{"class":171},[148,801,175],{"class":154},[148,803,216],{"class":154},[148,805,806],{"class":219},"requests",[148,808,223],{"class":154},[148,810,226],{"class":154},[148,812,229],{"class":154},[148,814,815,817,819,821,823,825,827,830],{"class":150,"line":232},[148,816,235],{"class":171},[148,818,175],{"class":154},[148,820,159],{"class":158},[148,822,180],{"class":154},[148,824,244],{"class":158},[148,826,180],{"class":154},[148,828,829],{"class":158},"zip",[148,831,165],{"class":154},[148,833,834,836,838,840,842,844,847,849,851,853,856,858],{"class":150,"line":267},[148,835,689],{"class":171},[148,837,175],{"class":154},[148,839,694],{"class":158},[148,841,697],{"class":154},[148,843,216],{"class":154},[148,845,846],{"class":219},"https:\u002F\u002Ffiles.pythonhosted.org\u002Fpackages\u002Fsource\u002Fr\u002Frequests\u002Frequests-",[148,848,705],{"class":154},[148,850,708],{"class":158},[148,852,711],{"class":154},[148,854,855],{"class":219},".tar.gz",[148,857,223],{"class":154},[148,859,475],{"class":154},[148,861,862],{"class":150,"line":273},[148,863,528],{"class":154},[148,865,866],{"class":150,"line":509},[148,867,270],{"class":154},[148,869,870],{"class":150,"line":525},[148,871,276],{"class":154},[108,873,875,876],{"id":874},"npmpincheckernpm","npm：",[99,877,878],{},"pin.checker.npm",[91,880,286,881,290,883,885,886,395,889,892,893,896,897,900],{},[99,882,289],{},[99,884,593],{},"，支持 scoped package 名。",[99,887,888],{},"distTag",[99,890,891],{},"latest","，读取 registry 的 ",[99,894,895],{},"dist-tags","，可按需设置 ",[99,898,899],{},"next"," 等其他标签。它不会自行扫描所有版本并排序。",[139,902,904],{"className":141,"code":903,"language":143,"meta":144,"style":144},"{ pin }: {\n  vite = pin.mk {\n    checker = pin.checker.npm { target = \"vite\"; distTag = \"latest\"; };\n    fetcher = pin.fetcher.url {\n      url = version: \"https:\u002F\u002Fregistry.npmjs.org\u002Fvite\u002F-\u002Fvite-${version}.tgz\";\n    };\n  };\n}\n",[99,905,906,916,931,978,996,1024,1028,1032],{"__ignoreMap":144},[148,907,908,910,912,914],{"class":150,"line":151},[148,909,155],{"class":154},[148,911,159],{"class":158},[148,913,162],{"class":154},[148,915,165],{"class":154},[148,917,918,921,923,925,927,929],{"class":150,"line":168},[148,919,920],{"class":171},"  vite",[148,922,175],{"class":154},[148,924,159],{"class":158},[148,926,180],{"class":154},[148,928,183],{"class":158},[148,930,165],{"class":154},[148,932,933,935,937,939,941,943,945,948,950,952,954,956,959,961,963,966,968,970,972,974,976],{"class":150,"line":188},[148,934,191],{"class":171},[148,936,175],{"class":154},[148,938,159],{"class":158},[148,940,180],{"class":154},[148,942,200],{"class":158},[148,944,180],{"class":154},[148,946,947],{"class":158},"npm",[148,949,208],{"class":154},[148,951,211],{"class":171},[148,953,175],{"class":154},[148,955,216],{"class":154},[148,957,958],{"class":219},"vite",[148,960,223],{"class":154},[148,962,226],{"class":154},[148,964,965],{"class":171}," distTag",[148,967,175],{"class":154},[148,969,216],{"class":154},[148,971,891],{"class":219},[148,973,223],{"class":154},[148,975,226],{"class":154},[148,977,229],{"class":154},[148,979,980,982,984,986,988,990,992,994],{"class":150,"line":232},[148,981,235],{"class":171},[148,983,175],{"class":154},[148,985,159],{"class":158},[148,987,180],{"class":154},[148,989,244],{"class":158},[148,991,180],{"class":154},[148,993,293],{"class":158},[148,995,165],{"class":154},[148,997,998,1000,1002,1004,1006,1008,1011,1013,1015,1017,1020,1022],{"class":150,"line":267},[148,999,689],{"class":171},[148,1001,175],{"class":154},[148,1003,694],{"class":158},[148,1005,697],{"class":154},[148,1007,216],{"class":154},[148,1009,1010],{"class":219},"https:\u002F\u002Fregistry.npmjs.org\u002Fvite\u002F-\u002Fvite-",[148,1012,705],{"class":154},[148,1014,708],{"class":158},[148,1016,711],{"class":154},[148,1018,1019],{"class":219},".tgz",[148,1021,223],{"class":154},[148,1023,475],{"class":154},[148,1025,1026],{"class":150,"line":273},[148,1027,528],{"class":154},[148,1029,1030],{"class":150,"line":509},[148,1031,270],{"class":154},[148,1033,1034],{"class":150,"line":525},[148,1035,276],{"class":154},[108,1037,1039,1040],{"id":1038},"urlpincheckerurl","URL：",[99,1041,1042],{},"pin.checker.url",[91,1044,286,1045,290,1047,1049,1050,1053],{},[99,1046,289],{},[99,1048,293],{},"，必需 ",[99,1051,1052],{},"regex","。请求 URL 后匹配文本：有捕获组时使用第一组，否则使用完整匹配。匹配结果必须非空。",[139,1055,1057],{"className":141,"code":1056,"language":143,"meta":144,"style":144},"{ pin }: {\n  patchelf = pin.mk {\n    checker = pin.checker.url {\n      target = \"https:\u002F\u002Fapi.github.com\u002Frepos\u002FNixOS\u002Fpatchelf\u002Freleases\u002Flatest\";\n      regex = ''\"tag_name\"[[:space:]]*:[[:space:]]*\"([^\"]+)\"'';\n    };\n    fetcher = pin.fetcher.github { target = \"NixOS\u002Fpatchelf\"; };\n  };\n}\n",[99,1058,1059,1069,1083,1101,1116,1134,1138,1170,1174],{"__ignoreMap":144},[148,1060,1061,1063,1065,1067],{"class":150,"line":151},[148,1062,155],{"class":154},[148,1064,159],{"class":158},[148,1066,162],{"class":154},[148,1068,165],{"class":154},[148,1070,1071,1073,1075,1077,1079,1081],{"class":150,"line":168},[148,1072,172],{"class":171},[148,1074,175],{"class":154},[148,1076,159],{"class":158},[148,1078,180],{"class":154},[148,1080,183],{"class":158},[148,1082,165],{"class":154},[148,1084,1085,1087,1089,1091,1093,1095,1097,1099],{"class":150,"line":188},[148,1086,191],{"class":171},[148,1088,175],{"class":154},[148,1090,159],{"class":158},[148,1092,180],{"class":154},[148,1094,200],{"class":158},[148,1096,180],{"class":154},[148,1098,293],{"class":158},[148,1100,165],{"class":154},[148,1102,1103,1105,1107,1109,1112,1114],{"class":150,"line":232},[148,1104,463],{"class":171},[148,1106,175],{"class":154},[148,1108,216],{"class":154},[148,1110,1111],{"class":219},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FNixOS\u002Fpatchelf\u002Freleases\u002Flatest",[148,1113,223],{"class":154},[148,1115,475],{"class":154},[148,1117,1118,1121,1123,1126,1129,1132],{"class":150,"line":267},[148,1119,1120],{"class":171},"      regex",[148,1122,175],{"class":154},[148,1124,1125],{"class":154}," ''",[148,1127,1128],{"class":219},"\"tag_name\"[[:space:]]*:[[:space:]]*\"([^\"]+)\"",[148,1130,1131],{"class":154},"''",[148,1133,475],{"class":154},[148,1135,1136],{"class":150,"line":273},[148,1137,528],{"class":154},[148,1139,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168],{"class":150,"line":509},[148,1141,235],{"class":171},[148,1143,175],{"class":154},[148,1145,159],{"class":158},[148,1147,180],{"class":154},[148,1149,244],{"class":158},[148,1151,180],{"class":154},[148,1153,205],{"class":158},[148,1155,208],{"class":154},[148,1157,211],{"class":171},[148,1159,175],{"class":154},[148,1161,216],{"class":154},[148,1163,220],{"class":219},[148,1165,223],{"class":154},[148,1167,226],{"class":154},[148,1169,229],{"class":154},[148,1171,1172],{"class":150,"line":525},[148,1173,270],{"class":154},[148,1175,1176],{"class":150,"line":531},[148,1177,276],{"class":154},[108,1179,1181,1182],{"id":1180},"命令pincheckercmd","命令：",[99,1183,1184],{},"pin.checker.cmd",[91,1186,1187],{},"接收命令字符串。stdout 去除首尾空白后作为 Version，必须非空；命令必须成功退出。适合固定版本或内置 Checker 尚未覆盖的上游。",[139,1189,1191],{"className":141,"code":1190,"language":143,"meta":144,"style":144},"{ pin }: {\n  patchelf = pin.mk {\n    checker = pin.checker.cmd \"printf '0.18.0'\";\n    fetcher = pin.fetcher.github { target = \"NixOS\u002Fpatchelf\"; };\n  };\n}\n",[99,1192,1193,1203,1217,1242,1274,1278],{"__ignoreMap":144},[148,1194,1195,1197,1199,1201],{"class":150,"line":151},[148,1196,155],{"class":154},[148,1198,159],{"class":158},[148,1200,162],{"class":154},[148,1202,165],{"class":154},[148,1204,1205,1207,1209,1211,1213,1215],{"class":150,"line":168},[148,1206,172],{"class":171},[148,1208,175],{"class":154},[148,1210,159],{"class":158},[148,1212,180],{"class":154},[148,1214,183],{"class":158},[148,1216,165],{"class":154},[148,1218,1219,1221,1223,1225,1227,1229,1231,1233,1235,1238,1240],{"class":150,"line":188},[148,1220,191],{"class":171},[148,1222,175],{"class":154},[148,1224,159],{"class":158},[148,1226,180],{"class":154},[148,1228,200],{"class":158},[148,1230,180],{"class":154},[148,1232,101],{"class":158},[148,1234,216],{"class":154},[148,1236,1237],{"class":219},"printf '0.18.0'",[148,1239,223],{"class":154},[148,1241,475],{"class":154},[148,1243,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272],{"class":150,"line":232},[148,1245,235],{"class":171},[148,1247,175],{"class":154},[148,1249,159],{"class":158},[148,1251,180],{"class":154},[148,1253,244],{"class":158},[148,1255,180],{"class":154},[148,1257,205],{"class":158},[148,1259,208],{"class":154},[148,1261,211],{"class":171},[148,1263,175],{"class":154},[148,1265,216],{"class":154},[148,1267,220],{"class":219},[148,1269,223],{"class":154},[148,1271,226],{"class":154},[148,1273,229],{"class":154},[148,1275,1276],{"class":150,"line":267},[148,1277,270],{"class":154},[148,1279,1280],{"class":150,"line":273},[148,1281,276],{"class":154},[91,1283,1284],{},"命令配置属于受信任的可执行输入，不是沙箱。stdout 只输出版本，把诊断日志写到 stderr。",[1286,1287,1288],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":144,"searchDepth":168,"depth":168,"links":1290},[1291,1293,1295,1297,1299,1301,1303],{"id":110,"depth":168,"text":1292},"GitHub：pin.checker.github",{"id":279,"depth":168,"text":1294},"Git：pin.checker.git",{"id":582,"depth":168,"text":1296},"crates.io：pin.checker.crate",{"id":733,"depth":168,"text":1298},"PyPI：pin.checker.pypi",{"id":874,"depth":168,"text":1300},"npm：pin.checker.npm",{"id":1038,"depth":168,"text":1302},"URL：pin.checker.url",{"id":1180,"depth":168,"text":1304},"命令：pin.checker.cmd","全部内置版本检查器的参数、版本选择规则与示例。","md",null,{},true,{"title":60,"description":1305},"cqTEJGDjuiWY28_XjexraTiEKv1etwvfjaJQ8fhleuA",[1313,1315],{"title":56,"path":57,"stem":58,"description":1314,"children":-1},"pin.mk、pin.github、pin.git 与 Pin／Source／Package 的关系。",{"title":64,"path":65,"stem":66,"description":1316,"children":-1},"GitHub、Git、Hugging Face、URL 和归档 Fetcher 的字段与版本映射。",1790868074838]