[{"data":1,"prerenderedAt":664},["ShallowReactive",2],{"navigation_docs_zh_CN":3,"\u002Fzh-CN\u002Freference\u002Fpins":85,"\u002Fzh-CN\u002Freference\u002Fpins-surround":659},[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":56,"body":87,"description":652,"extension":653,"links":654,"meta":655,"navigation":656,"path":57,"seo":657,"stem":58,"__hash__":658},"docs_zh_CN\u002Fzh-CN\u002F3.reference\u002F3.pins.md",{"type":88,"value":89,"toc":646},"minimark",[90,107,172,176,199,205,216,328,418,435,441,451,520,547,553,559,600,636,642],[91,92,93,94,98,99,102,103,106],"p",{},"声明文件是 Nix 函数，返回以 Pin 名为键的属性集。可请求 ",[95,96,97],"code",{},"pin","、",[95,100,101],{},"pkgs"," 和 ",[95,104,105],{},"lib"," 参数；仅声明需要的参数即可：",[108,109,114],"pre",{"className":110,"code":111,"language":112,"meta":113,"style":113},"language-nix shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ pin }: {\n  patchelf = pin.github \"NixOS\u002Fpatchelf\";\n}\n","nix","",[95,115,116,135,166],{"__ignoreMap":113},[117,118,121,125,129,132],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"sMK4o","{",[117,126,128],{"class":127},"sHdIc"," pin",[117,130,131],{"class":123}," }:",[117,133,134],{"class":123}," {\n",[117,136,138,142,145,147,150,153,156,160,163],{"class":119,"line":137},2,[117,139,141],{"class":140},"spNyl","  patchelf",[117,143,144],{"class":123}," =",[117,146,128],{"class":127},[117,148,149],{"class":123},".",[117,151,152],{"class":127},"github",[117,154,155],{"class":123}," \"",[117,157,159],{"class":158},"sfazB","NixOS\u002Fpatchelf",[117,161,162],{"class":123},"\"",[117,164,165],{"class":123},";\n",[117,167,169],{"class":119,"line":168},3,[117,170,171],{"class":123},"}\n",[173,174,175],"h2",{"id":175},"数据层次",[177,178,179,187,193],"ul",{},[180,181,182,186],"li",{},[183,184,185],"strong",{},"Pin","：一个 Checker、一个 Version 和若干 Source；是选择与更新的原子单元。",[180,188,189,192],{},[183,190,191],{},"Source","：一个 Fetcher、一个源码 Hash，以及该来源的补丁和 Package。",[180,194,195,198],{},[183,196,197],{},"Package","：一个 Builder 和对应的依赖产物、Derived Hash。",[173,200,202],{"id":201},"pinmk",[95,203,204],{},"pin.mk",[91,206,207,208,211,212,215],{},"用于独立组合 Checker、Fetcher 和 Package。单 Source 可直接提供顶层 ",[95,209,210],{},"fetcher","，它会被命名为 ",[95,213,214],{},"default","：",[108,217,219],{"className":110,"code":218,"language":112,"meta":113,"style":113},"{ pin }: {\n  demo = pin.mk {\n    checker = pin.checker.cmd \"printf '0.18.0'\";\n    fetcher = pin.fetcher.github {\n      target = \"NixOS\u002Fpatchelf\";\n    };\n  };\n}\n",[95,220,221,231,247,275,295,311,317,323],{"__ignoreMap":113},[117,222,223,225,227,229],{"class":119,"line":120},[117,224,124],{"class":123},[117,226,128],{"class":127},[117,228,131],{"class":123},[117,230,134],{"class":123},[117,232,233,236,238,240,242,245],{"class":119,"line":137},[117,234,235],{"class":140},"  demo",[117,237,144],{"class":123},[117,239,128],{"class":127},[117,241,149],{"class":123},[117,243,244],{"class":127},"mk",[117,246,134],{"class":123},[117,248,249,252,254,256,258,261,263,266,268,271,273],{"class":119,"line":168},[117,250,251],{"class":140},"    checker",[117,253,144],{"class":123},[117,255,128],{"class":127},[117,257,149],{"class":123},[117,259,260],{"class":127},"checker",[117,262,149],{"class":123},[117,264,265],{"class":127},"cmd",[117,267,155],{"class":123},[117,269,270],{"class":158},"printf '0.18.0'",[117,272,162],{"class":123},[117,274,165],{"class":123},[117,276,278,281,283,285,287,289,291,293],{"class":119,"line":277},4,[117,279,280],{"class":140},"    fetcher",[117,282,144],{"class":123},[117,284,128],{"class":127},[117,286,149],{"class":123},[117,288,210],{"class":127},[117,290,149],{"class":123},[117,292,152],{"class":127},[117,294,134],{"class":123},[117,296,298,301,303,305,307,309],{"class":119,"line":297},5,[117,299,300],{"class":140},"      target",[117,302,144],{"class":123},[117,304,155],{"class":123},[117,306,159],{"class":158},[117,308,162],{"class":123},[117,310,165],{"class":123},[117,312,314],{"class":119,"line":313},6,[117,315,316],{"class":123},"    };\n",[117,318,320],{"class":119,"line":319},7,[117,321,322],{"class":123},"  };\n",[117,324,326],{"class":119,"line":325},8,[117,327,171],{"class":123},[329,330,331,344],"table",{},[332,333,334],"thead",{},[335,336,337,341],"tr",{},[338,339,340],"th",{},"字段",[338,342,343],{},"含义",[345,346,347,360,370,382,395,405],"tbody",{},[335,348,349,354],{},[350,351,352],"td",{},[95,353,260],{},[350,355,356,357],{},"必需，来自 ",[95,358,359],{},"pin.checker.*",[335,361,362,367],{},[350,363,364],{},[95,365,366],{},"sources",[350,368,369],{},"可选，非空的具名 Source 属性集",[335,371,372,376],{},[350,373,374],{},[95,375,210],{},[350,377,378,379,381],{},"未提供 ",[95,380,366],{}," 时必需，属于单 Source 简写",[335,383,384,389],{},[350,385,386],{},[95,387,388],{},"patches",[350,390,391,392],{},"单 Source 的补丁列表，默认 ",[95,393,394],{},"[]",[335,396,397,402],{},[350,398,399],{},[95,400,401],{},"postPatch",[350,403,404],{},"单 Source 的补丁脚本，默认空字符串",[335,406,407,412],{},[350,408,409],{},[95,410,411],{},"packages",[350,413,414,415],{},"单 Source 的具名 Package 属性集，默认 ",[95,416,417],{},"{}",[91,419,420,421,98,423,98,425,102,427,429,430,434],{},"多 Source 时，",[95,422,210],{},[95,424,388],{},[95,426,401],{},[95,428,411],{}," 放入各 Source，见",[431,432,433],"a",{"href":35},"多 Source","。",[173,436,438],{"id":437},"pingithub",[95,439,440],{},"pin.github",[91,442,443,444,447,448,450],{},"接受 ",[95,445,446],{},"\"owner\u002Frepo\""," 字符串或结构化参数，组合 GitHub release Checker 与 GitHub Fetcher，只生成 ",[95,449,214],{}," Source。",[108,452,454],{"className":110,"code":453,"language":112,"meta":113,"style":113},"{ pin }: {\n  patchelf = pin.github {\n    target = \"NixOS\u002Fpatchelf\";\n    rev = version: version;\n  };\n}\n",[95,455,456,466,480,495,512,516],{"__ignoreMap":113},[117,457,458,460,462,464],{"class":119,"line":120},[117,459,124],{"class":123},[117,461,128],{"class":127},[117,463,131],{"class":123},[117,465,134],{"class":123},[117,467,468,470,472,474,476,478],{"class":119,"line":137},[117,469,141],{"class":140},[117,471,144],{"class":123},[117,473,128],{"class":127},[117,475,149],{"class":123},[117,477,152],{"class":127},[117,479,134],{"class":123},[117,481,482,485,487,489,491,493],{"class":119,"line":168},[117,483,484],{"class":140},"    target",[117,486,144],{"class":123},[117,488,155],{"class":123},[117,490,159],{"class":158},[117,492,162],{"class":123},[117,494,165],{"class":123},[117,496,497,500,502,505,508,510],{"class":119,"line":277},[117,498,499],{"class":140},"    rev",[117,501,144],{"class":123},[117,503,504],{"class":127}," version",[117,506,507],{"class":123},":",[117,509,504],{"class":127},[117,511,165],{"class":123},[117,513,514],{"class":119,"line":297},[117,515,322],{"class":123},[117,517,518],{"class":119,"line":313},[117,519,171],{"class":123},[91,521,522,523,526,527,530,531,534,535,98,538,98,541,98,543,102,545,434],{},"目标可使用 ",[95,524,525],{},"target","，也可用 ",[95,528,529],{},"owner"," 与 ",[95,532,533],{},"repo","；两种方式不能混用。其他字段为 ",[95,536,537],{},"rev",[95,539,540],{},"fetcherArgs",[95,542,388],{},[95,544,401],{},[95,546,411],{},[173,548,550],{"id":549},"pingit",[95,551,552],{},"pin.git",[91,554,555,556,558],{},"接受仓库 URL 字符串或结构化参数，组合 Git Checker 与 Git Fetcher，只生成 ",[95,557,214],{}," Source。默认追踪 Git HEAD：",[108,560,562],{"className":110,"code":561,"language":112,"meta":113,"style":113},"{ pin }: {\n  patchelf = pin.git \"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git\";\n}\n",[95,563,564,574,596],{"__ignoreMap":113},[117,565,566,568,570,572],{"class":119,"line":120},[117,567,124],{"class":123},[117,569,128],{"class":127},[117,571,131],{"class":123},[117,573,134],{"class":123},[117,575,576,578,580,582,584,587,589,592,594],{"class":119,"line":137},[117,577,141],{"class":140},[117,579,144],{"class":123},[117,581,128],{"class":127},[117,583,149],{"class":123},[117,585,586],{"class":127},"git",[117,588,155],{"class":123},[117,590,591],{"class":158},"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git",[117,593,162],{"class":123},[117,595,165],{"class":123},[117,597,598],{"class":119,"line":168},[117,599,171],{"class":123},[91,601,602,603,605,606,98,609,98,612,98,615,98,618,98,621,624,625,98,627,629,630,98,632,98,634,434],{},"结构化参数必须使用 ",[95,604,525],{},"。还可配置 Checker 的 ",[95,607,608],{},"mode",[95,610,611],{},"branch",[95,613,614],{},"ref",[95,616,617],{},"include",[95,619,620],{},"exclude",[95,622,623],{},"sort","，以及 Fetcher 的 ",[95,626,537],{},[95,628,540],{}," 和 Source 的 ",[95,631,388],{},[95,633,401],{},[95,635,411],{},[91,637,638,639,641],{},"复杂组合使用 ",[95,640,204],{},"。声明的未知字段、Fetcher 映射错误和确定性的配置错误会在运行 Checker 前报告。",[643,644,645],"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":113,"searchDepth":137,"depth":137,"links":647},[648,649,650,651],{"id":175,"depth":137,"text":175},{"id":201,"depth":137,"text":204},{"id":437,"depth":137,"text":440},{"id":549,"depth":137,"text":552},"pin.mk、pin.github、pin.git 与 Pin／Source／Package 的关系。","md",null,{},true,{"title":56,"description":652},"8jwLzUg2cpGYeIezkYIgKBDJ2LSL_Pr6fUUBzmrGTV8",[660,662],{"title":52,"path":53,"stem":54,"description":661,"children":-1},"nix-pins.toml、环境变量、路径和并发设置。",{"title":60,"path":61,"stem":62,"description":663,"children":-1},"全部内置版本检查器的参数、版本选择规则与示例。",1790868074262]