[{"data":1,"prerenderedAt":481},["ShallowReactive",2],{"navigation_docs_zh_CN":3,"\u002Fzh-CN\u002Fguides\u002Fmulti-source":85,"\u002Fzh-CN\u002Fguides\u002Fmulti-source-surround":476},[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":34,"body":87,"description":469,"extension":470,"links":471,"meta":472,"navigation":473,"path":35,"seo":474,"stem":36,"__hash__":475},"docs_zh_CN\u002Fzh-CN\u002F2.guides\u002F3.multi-source.md",{"type":88,"value":89,"toc":466},"minimark",[90,94,325,336,341,355,429,452,462],[91,92,93],"p",{},"一个 Pin 拥有一个 Checker 和一个 Version，但可以声明多个 Source。Source 的名字由配置作者决定，每个 Source 有自己的 Fetcher、源码 Hash 和 Package。",[95,96,101],"pre",{"className":97,"code":98,"language":99,"meta":100,"style":100},"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    sources = {\n      archive = {\n        fetcher = pin.fetcher.github { target = \"NixOS\u002Fpatchelf\"; };\n      };\n      checkout = {\n        fetcher = pin.fetcher.git {\n          target = \"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git\";\n        };\n      };\n    };\n  };\n}\n","nix","",[102,103,104,123,143,187,197,207,242,248,258,278,296,302,307,313,319],"code",{"__ignoreMap":100},[105,106,109,113,117,120],"span",{"class":107,"line":108},"line",1,[105,110,112],{"class":111},"sMK4o","{",[105,114,116],{"class":115},"sHdIc"," pin",[105,118,119],{"class":111}," }:",[105,121,122],{"class":111}," {\n",[105,124,126,130,133,135,138,141],{"class":107,"line":125},2,[105,127,129],{"class":128},"spNyl","  patchelf",[105,131,132],{"class":111}," =",[105,134,116],{"class":115},[105,136,137],{"class":111},".",[105,139,140],{"class":115},"mk",[105,142,122],{"class":111},[105,144,146,149,151,153,155,158,160,163,166,169,171,174,178,181,184],{"class":107,"line":145},3,[105,147,148],{"class":128},"    checker",[105,150,132],{"class":111},[105,152,116],{"class":115},[105,154,137],{"class":111},[105,156,157],{"class":115},"checker",[105,159,137],{"class":111},[105,161,162],{"class":115},"github",[105,164,165],{"class":111}," {",[105,167,168],{"class":128}," target",[105,170,132],{"class":111},[105,172,173],{"class":111}," \"",[105,175,177],{"class":176},"sfazB","NixOS\u002Fpatchelf",[105,179,180],{"class":111},"\"",[105,182,183],{"class":111},";",[105,185,186],{"class":111}," };\n",[105,188,190,193,195],{"class":107,"line":189},4,[105,191,192],{"class":128},"    sources",[105,194,132],{"class":111},[105,196,122],{"class":111},[105,198,200,203,205],{"class":107,"line":199},5,[105,201,202],{"class":128},"      archive",[105,204,132],{"class":111},[105,206,122],{"class":111},[105,208,210,213,215,217,219,222,224,226,228,230,232,234,236,238,240],{"class":107,"line":209},6,[105,211,212],{"class":128},"        fetcher",[105,214,132],{"class":111},[105,216,116],{"class":115},[105,218,137],{"class":111},[105,220,221],{"class":115},"fetcher",[105,223,137],{"class":111},[105,225,162],{"class":115},[105,227,165],{"class":111},[105,229,168],{"class":128},[105,231,132],{"class":111},[105,233,173],{"class":111},[105,235,177],{"class":176},[105,237,180],{"class":111},[105,239,183],{"class":111},[105,241,186],{"class":111},[105,243,245],{"class":107,"line":244},7,[105,246,247],{"class":111},"      };\n",[105,249,251,254,256],{"class":107,"line":250},8,[105,252,253],{"class":128},"      checkout",[105,255,132],{"class":111},[105,257,122],{"class":111},[105,259,261,263,265,267,269,271,273,276],{"class":107,"line":260},9,[105,262,212],{"class":128},[105,264,132],{"class":111},[105,266,116],{"class":115},[105,268,137],{"class":111},[105,270,221],{"class":115},[105,272,137],{"class":111},[105,274,275],{"class":115},"git",[105,277,122],{"class":111},[105,279,281,284,286,288,291,293],{"class":107,"line":280},10,[105,282,283],{"class":128},"          target",[105,285,132],{"class":111},[105,287,173],{"class":111},[105,289,290],{"class":176},"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git",[105,292,180],{"class":111},[105,294,295],{"class":111},";\n",[105,297,299],{"class":107,"line":298},11,[105,300,301],{"class":111},"        };\n",[105,303,305],{"class":107,"line":304},12,[105,306,247],{"class":111},[105,308,310],{"class":107,"line":309},13,[105,311,312],{"class":111},"    };\n",[105,314,316],{"class":107,"line":315},14,[105,317,318],{"class":111},"  };\n",[105,320,322],{"class":107,"line":321},15,[105,323,324],{"class":111},"}\n",[91,326,327,328,331,332,335],{},"Reader 路径分别为 ",[102,329,330],{},"pins.patchelf.sources.archive.src"," 和 ",[102,333,334],{},"pins.patchelf.sources.checkout.src","。这两个 Source 共享同一个 release Version；任意一个失败都使整个 Pin 保留旧结果。",[337,338,340],"h2",{"id":339},"每个-source-的补丁","每个 Source 的补丁",[91,342,343,344,331,347,350,351,354],{},"Source 可配置 ",[102,345,346],{},"patches",[102,348,349],{},"postPatch","。单 Source 简写也可以直接在 ",[102,352,353],{},"pin.mk"," 或便捷构造器上配置这些字段：",[95,356,358],{"className":97,"code":357,"language":99,"meta":100,"style":100},"{ pin }: {\n  patchelf = pin.github {\n    target = \"NixOS\u002Fpatchelf\";\n    postPatch = ''\n      test -f README.md\n    '';\n  };\n}\n",[102,359,360,370,384,399,409,414,421,425],{"__ignoreMap":100},[105,361,362,364,366,368],{"class":107,"line":108},[105,363,112],{"class":111},[105,365,116],{"class":115},[105,367,119],{"class":111},[105,369,122],{"class":111},[105,371,372,374,376,378,380,382],{"class":107,"line":125},[105,373,129],{"class":128},[105,375,132],{"class":111},[105,377,116],{"class":115},[105,379,137],{"class":111},[105,381,162],{"class":115},[105,383,122],{"class":111},[105,385,386,389,391,393,395,397],{"class":107,"line":145},[105,387,388],{"class":128},"    target",[105,390,132],{"class":111},[105,392,173],{"class":111},[105,394,177],{"class":176},[105,396,180],{"class":111},[105,398,295],{"class":111},[105,400,401,404,406],{"class":107,"line":189},[105,402,403],{"class":128},"    postPatch",[105,405,132],{"class":111},[105,407,408],{"class":111}," ''\n",[105,410,411],{"class":107,"line":199},[105,412,413],{"class":176},"      test -f README.md\n",[105,415,416,419],{"class":107,"line":209},[105,417,418],{"class":111},"    ''",[105,420,295],{"class":111},[105,422,423],{"class":107,"line":244},[105,424,318],{"class":111},[105,426,427],{"class":107,"line":250},[105,428,324],{"class":111},[91,430,431,432,435,436,439,440,443,444,448,449,451],{},"源码 ",[102,433,434],{},"hash"," 针对原始 Fetcher 内容。补丁后的 ",[102,437,438],{},"src"," 供 Package 和传入配置的 Reader 使用；如果希望 Reader 应用这些补丁，必须同时传入 ",[102,441,442],{},"config","，见 ",[445,446,447],"a",{"href":73},"Reader","。补丁和 ",[102,450,349],{}," 来自受信任的 Nix 配置。",[91,453,454,455,458,459,461],{},"配置 ",[102,456,457],{},"sources"," 时，完整声明放在各 Source 中；不要同时依赖顶层单 Source 简写。工具以显式 ",[102,460,457],{}," 为准。",[463,464,465],"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":100,"searchDepth":125,"depth":125,"links":467},[468],{"id":339,"depth":125,"text":340},"用一个 Version 锁定多个具名来源，并给各来源配置独立的补丁和 Package。","md",null,{},true,{"title":34,"description":469},"IauHX7UrVHXnwPWPCs6TuEerDCdLLS0s4di2C7Sj_k4",[477,479],{"title":30,"path":31,"stem":32,"description":478,"children":-1},"从包注册表、Git 或自定义命令选择版本，再独立选择下载方式。",{"title":38,"path":39,"stem":40,"description":480,"children":-1},"为 Go、npm 和 pnpm 准备依赖产物，让下游继续负责应用构建。",1790868073520]