├── LICENSE ├── README.md ├── pg14_amd64 ├── .dockerignore ├── 1.sh ├── 2.sh ├── 3.sh ├── 4.sh ├── 5.sh └── Dockerfile └── pg14_arm64 ├── .dockerignore ├── 1.sh ├── 2.sh ├── 3.sh ├── 4.sh ├── 5.sh └── Dockerfile /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # postgresql_docker_builder 2 | Build PostgreSQL (with 200+ extenstions and tools) DuckDB MySQL and so on into One docker image. It used for learn database easily only. PostgreSQL is stable version, but some extension or tools not, please used carefully by yourself. 3 | 4 | `pg14_arm64` directory is used to build docker image for ARM64 chip. 5 | 6 | `pg14_amd64` directory is used to build docker image for AMD64 chip. 7 | 8 | # How to use this image? 9 | ## AMD64 chip's OS 10 | ``` 11 | # 拉取镜像, 第一次拉取一次即可. 或者需要的时候执行, 将更新到最新镜像版本. 12 | docker pull registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts 13 | 14 | # 启动容器 15 | docker run --platform linux/amd64 -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts 16 | 17 | ##### 如果你想学习备份恢复、修改参数等需要重启数据库实例的case, 换个启动参数, 使用参数--entrypoint将容器根进程换成bash更好. 如下: 18 | docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g --entrypoint /bin/bash registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts 19 | ##### 以上启动方式需要进入容器后手工启动数据库实例: su - postgres; pg_ctl start; 20 | 21 | # 进入容器 22 | docker exec -ti pg bash 23 | 24 | # 连接数据库 25 | psql 26 | ``` 27 | 28 | ## ARM64 chip's OS 29 | ``` 30 | # 拉取镜像, 第一次拉取一次即可. 或者需要的时候执行, 将更新到最新镜像版本. 31 | docker pull registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64 32 | 33 | # 启动容器 34 | docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64 35 | 36 | ##### 如果你想学习备份恢复、修改参数等需要重启数据库实例的case, 换个启动参数, 使用参数--entrypoint将容器根进程换成bash更好. 如下: 37 | docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g --entrypoint /bin/bash registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64 38 | ##### 以上启动方式需要进入容器后手工启动数据库实例: su - postgres; pg_ctl start; 39 | 40 | # 进入容器 41 | docker exec -ti pg bash 42 | 43 | # 连接数据库 44 | psql 45 | ``` 46 | 47 | # The detail info for this docker builder script? 48 | The info contain how to build docker image, and PostgreSQL extensions and tools description. 49 | 50 | [《amd64》](https://github.com/digoal/blog/blob/master/202307/20230710_03.md) 51 | 52 | [《arm64》](https://github.com/digoal/blog/blob/master/202308/20230814_02.md) 53 | 54 | ### image infomation until 20231208 55 | extensions: 56 | ``` 57 | Display all 210 possibilities? (y or n) 58 | address_standardizer parquet_fdw pgtelemetry 59 | "address_standardizer-3" parray_gin pg_tiktoken 60 | address_standardizer_data_us pg4ml pg_track_settings 61 | "address_standardizer_data_us-3" pgagent pg_trgm 62 | adminpack pgaudit pgtt 63 | age pgautofailover pg_utility_trigger_functions 64 | aggs_for_vecs pg_bigm pg_uuidv7 65 | amcheck pg_bm25 pg_variables 66 | anon pg_buffercache pg_visibility 67 | autoinc pg_bulkload pg_wait_sampling 68 | aws_s3 pg_cron pipelinedb 69 | bloom pgcrypto pldbgapi 70 | btree_gin pg_curl pljava 71 | btree_gist pg_dbms_stats pllua 72 | citext pgdd plluau 73 | citus pg_dirtyread plpgsql_check 74 | citus_columnar pgfaceting plprofiler 75 | columnar pgfincore plproxy 76 | credcheck pg_freespacemap plpython3u 77 | cube pggraphblas plr 78 | datasketches pg_hint_plan plrust 79 | dblink pg_idkit pointcloud 80 | dblink_plus pg_ivm pointcloud_postgis 81 | ddlx pg_jieba postgis 82 | decoderbufs pg_jobmon "postgis-3" 83 | dict_int pgjwt postgis_raster 84 | dict_xsyn pgmemcache "postgis_raster-3" 85 | duckdb_fdw pg_migrate postgis_sfcgal 86 | earthdistance pgmp "postgis_sfcgal-3" 87 | embedding pg_nanoid postgis_tiger_geocoder 88 | extra_window_functions pg_net "postgis_tiger_geocoder-3" 89 | file_fdw pg_onnx postgis_topology 90 | first_last_agg pg_partman "postgis_topology-3" 91 | fuzzystrmatch pgpcre postgres_fdw 92 | gevel pgpool_adm powa 93 | h3 pgpool_recovery prefix 94 | h3_postgis pgpool_regclass pre_prepare 95 | hdfs_fdw pg_prewarm prioritize 96 | hll pg_proctab q3c 97 | hnsw pg_profile quantile 98 | hstore pg_qualstats rdkit 99 | hstore_pllua pg_query_rewrite refint 100 | hstore_plluau pg_rational roaringbitmap 101 | hstore_plpython3u pg_repack rum 102 | http pgroonga seg 103 | hypopg pgroonga_database smlar 104 | icu_ext pgrouting sqlite_fdw 105 | imgsmlr pgrowlocks sslinfo 106 | insert_username pg_safer_settings svector 107 | intagg pg_safer_settings_table_dependent_extension tablefunc 108 | intarray pg_safer_settings_table_dependent_subextension table_log 109 | ip4r pg_search tcn 110 | isn pgsentinel tdigest 111 | jsonb_plpython3u pg_show_plans tds_fdw 112 | jsquery pg_similarity temporal_tables 113 | lantern pgsodium timescaledb 114 | lantern_extras pg_sparse timescaledb_toolkit 115 | lo pg_sphere toastinfo 116 | ltree pg_squeeze tsm_system_rows 117 | ltree_plpython3u pg_stat_kcache tsm_system_time 118 | mimeo pg_stat_monitor uint 119 | mobilitydb pg_stat_statements ulid 120 | moddatetime pgstattuple unaccent 121 | mongo_fdw pg_statviz unit 122 | mysql_fdw pg_store_plans "uuid-ossp" 123 | ogr_fdw pg_subtrans_infos vector 124 | old_snapshot pg_subxact_counters vops 125 | oracle_fdw pg_surgery xml2 126 | orafce pgtap zhparser 127 | pageinspect pg_task zson 128 | ``` 129 | 130 | ### tools and extensions description 131 | 132 | #### 集成了哪些插件? 133 | 插件的详细功能和用法请参考: 134 | - [《未来数据库方向 - 以及PostgreSQL 有价值的插件、可改进功能、开放接口 (202005)》](../202005/20200527_06.md) 135 | 136 | 1、PG 14自带的所有插件. 137 | 138 | 2、额外安装的插件或工具 139 | 140 | 类型增强 141 | - pgmp, PostgreSQL Multiple Precision Arithmetic extension, 支持GMP library, 高性能表达decimal类型. 142 | - unit, 支持很多国际单位的类型 143 | - pg_uuidv7, A tiny Postgres extension to create version 7 UUIDs 144 | - zson, ZSON is a PostgreSQL extension for transparent JSONB compression 145 | - uint, 无符号整型. 146 | - nanoid, nanoid类型. 147 | - ulid, 半高uuid类型. 148 | - snowflake, snowflakeID 分布式数据库全局唯一ID生成器, 比UUID效率高. 149 | 150 | 函数增强 151 | - extra-window-functions, 扩展窗口函数 152 | - first-last-agg, 扩展聚合函数 153 | - tdigest, 扩展窗口、聚合函数 154 | - rational, 扩展插值算法和函数 155 | - orafce, 扩展Oracle兼容性 156 | - aggs_for_vecs, 数组类型聚合函数扩展. 157 | - quantile, 统计分析相关聚合函数扩展. 158 | - pgjwt, JSON 值转储格式: JSON Web Tokens 159 | - pg_idkit, 集成了大量UUID方法和函数. 160 | - pgpcre, 正则. This is a module for PostgreSQL that exposes Perl-compatible regular expressions (PCRE) functionality as functions and operators. 161 | 162 | 近似统计分析 163 | - hll, 近似分析, 例如滑动窗口UV, 短视频场景存储已读列表+快速过滤已读视频 164 | - datasketches, 近似统计算法库 165 | 166 | 标签圈选 167 | - smlar, 标签相似搜索 168 | - roaringbitmap, 标签圈选 169 | - pgfaceting, 基于rb index的快速降维分析插件(例如任意条件的UV分析, 滑动窗口分析等) 170 | 171 | 存储引擎、分析加强: 172 | - citus, 分布式和列存储 173 | - columnar, Hydra Columnar extension. 列存储引擎. 174 | - vops, 瓦片存储和向量化计算 175 | - orioledb, 基于UNDO机制的存储引擎. (未集成.) 176 | - zedstore, 行列混合存储引擎. (未集成.) 177 | - pg_cryogen, appendonly的压缩存储引擎. (未集成.) 178 | - pg_ivm, 增量刷新物化视图 179 | 180 | 多值列索引扩展加速 181 | - rum, 多值列+标量复合搜索加速 182 | - parray_gin, 多值列元素值模糊搜索 183 | 184 | 多模型业务场景 185 | - rdkit, 化学类型+算法+索引 186 | - timescaledb, 时序 187 | - pggraphblas, 图式关系加速搜索 188 | - age, 图式关系搜索(兼容cypherQL语法). 189 | - madlib, 机器学习分析库 190 | - pg_variables, 会话或事务级内存变量, 例如用于计数器、需要在会话|事务中存储临时值的场景. 191 | - temporal_tables, 自动按字段时间归档历史数据. 192 | - pgtt, 全局临时表, 类似Oracle 全局临时表的风格. 193 | - pipelinedb, 流计算. 194 | - pg4ml, 使用 plpgsql 编写的机器学习框架. 195 | - PGMQ, pg消息队列. 196 | 197 | 空间业务场景 198 | - pgrouting, 路由算法 199 | - pgrouting-doc 200 | - pgrouting-scripts 201 | - pgsphere, 空间类型+索引 202 | - pointcloud, 点云 203 | - q3c, 空间类型+索引 204 | - postgis-3, 丰富的空间类型+算法+函数接口+索引 205 | - postgis-3-scripts 206 | - ip4r, IP转地理位置信息 207 | - h3, h3_postgis, uber开源的基于H3模型的地图相关插件. 208 | - MobilityDB, An open source geospatial trajectory data management & analysis platform. https://github.com/MobilityDB/MobilityDB 209 | 210 | 向量搜索 211 | - similarity, 近似算法, 类型+索引 212 | - imgsmlr, 图像搜索, 类型+索引 213 | - pgvector, 向量搜索, 类型+索引(ivfflat、hnsw) 214 | - pg_sparse, paradedb开源. 稀疏向量搜索. 使用rust编写. 215 | - svector, paradedb开源. 稀疏向量搜索(就是pg_sparse, 更名为svector). 使用c编写. https://docs.paradedb.com/blog/introducing_sparse 216 | - hnsw, 向量搜索, 类型+索引(hnsw) 217 | - pg_embedding, 向量搜索, 类型+索引(hnsw) 218 | - lantern, 向量搜索, 类型+索引(usearch implemented hnsw) 219 | - lantern_extras, lantern辅助插件: 数据库内置大模型, 外接大模型, 文本|图像向量化, 加速向量索引build等. 220 | - vectorize, 结合pgvector和OpenAI的应用解决方案型插件, 实现db4ai, ai4db的应用. 221 | 222 | 文本场景增强 223 | - prefix, 前缀范围模型 224 | - groonga, 支持wchar的任意模糊搜索 225 | - pg_bigm, 增强pg_trgm模糊搜索 226 | - pg_jieba, 结巴中文分词 227 | - zhparser, scws中文分词 228 | - pg_bm25, paradedb开源. bm25(elastic search目前使用的相关算法)支持, 大数据量文本搜索比传统tsvector,tsrank提升20x性能. 229 | - pg_search, paradedb开源. 通过 bm25+hnsw 支持bm25和向量相似文本搜索 230 | 231 | 数据融合, 冷热分离 232 | - mongo_fdw, 读写mongo数据源 233 | - parquet_s3_fdw, 读写s3,oss对象存储和parquet文件. (未集成, 通过duckdb_fdw可以读写s3, aliyun oss, 更加快捷) 234 | - mysql-fdw, 读写mysql数据源 235 | - ogr-fdw, 基于ogr的通用数据源读写插件 236 | - oracle-fdw, 读写oracle数据源 237 | - tds-fdw, 读写ms sql数据源 238 | - dblink_plus, mysql,sqlite3,oracle的dblink 239 | - duckdb_fdw, 读写duckdb数据源. 通过duckdb_fdw还可以读写存放在s3的csv, parquet文件. 240 | - sqlite_fdw, 读写sqlite3 241 | - parquet_fdw, 读parquet文件. 242 | - hdfs_fdw, 读写hive, spark数据源 243 | - pgmemcache, 直接的memcache控制函数库 244 | - pg_curl, 通过curl支持http,ftp,https等网络协议. 将远程数据加载到数据库中. 245 | - pg_net, 异步HTTP调用接口. 246 | - pgsql-http, HTTP 调用接口. 247 | - pg2arrow , 将pg sql结果转换为arrow格式的数据文件. 适合与其他arrow生态的数据分析产品、DB交换数据, 融入大数据生态, 加速数据分析. 248 | - aws_s3, 读写aws s3对象存储. 249 | - decoderbufs, 逻辑复制decoding, logical decoder output plugin to deliver data as Protocol Buffers 250 | 251 | 扩展协议, 兼容其他产品 252 | - FerretDB, 支持mongodb协议, 可使用mongodb客户端连接. (未集成) 253 | - babelfish, 支持sql server协议, 可使用sqlserver客户端连接. (未集成) 254 | - Apache Arrow Flight SQL adapter, arrow 协议, 可使用arrow driver连接. (未集成, 需PG 15及以上版本.) 255 | 256 | 存储过程和函数语言增强 257 | - jsquery, 增强json语法查询库 258 | - pldebugger, 调试plpgsql函数 259 | - plpgsql-check, 预检查plpgsql函数 260 | - pljava, java存储过程和函数语言 261 | - pllua, lua存储过程和函数语言 262 | - plproxy, 代理(通常用于sharding和并行数据聚合访问场景) 263 | - plv8, google v8存储过程和函数语言. (未集成, 未来可以通过apt安装) 264 | - plpython3, python存储过程和函数语言 265 | - plr, R存储过程和函数语言 266 | - plprofiler, 存储过程和函数的性能分析功能 267 | - plrust, rust存储过程语言支持 268 | 269 | 安全增强 270 | - postgresql_anonymizer, 敏感信息遮蔽 271 | - pgsodium, 敏感信息遮蔽以及sodium加密库函数 272 | - credcheck, 强制约束用户密码复杂度 273 | 274 | 数据库管理、审计、性能优化等 275 | - powa, 索引推荐, 等待事件分析, 命中率, 配置变更跟踪等 276 | - hypopg, 虚拟索引, 索引推荐 277 | - pg-qualstats, 索引推荐 278 | - pg-stat-kcache, 跟踪cpu、文件系统真实读写行为 279 | - pg-wait-sampling, 等待事件采样分析 280 | - show-plans, 执行过程中的SQL执行计划查询 281 | - pg_hint_plan, 强制设定SQL执行计划 282 | - plantuner, 增加了一些参数用来控制SQL执行计划 283 | - pg_store_plans, 保存SQL执行计划 284 | - pg_plan_inspector, 复杂SQL执行计划优化修正插. 使用机器学习的方法对收集到的SQL和执行计划等信息进行分析, 从而提升性能. 通过sql安装, 没有extension control file 285 | - pg_stat_monitor, 保存数据库运行时统计信息快照, 用于分析性能 286 | - pg_statviz, 保存统计信息快照, 使用matplotlib绘图. 287 | - pg_profile, 使用pg_stat_statements, pg_stat_kcache的统计信息打快照并对快照进行分析. 类似[awr](https://zubkov-andrei.github.io/pg_profile/report_examples/pg15.html). 不过我觉得perf insight和pg_stat_monitor更好用. 288 | - pg_statsinfo, PG数据库监控工具, 支持按快照选取分析系统运行状态, 类似Oracle statspark. 289 | - pg_stats_reporter, pg_statsinfo报告的网页呈现, 更加美观, 类似awr效果. 290 | - pgtelemetry, 一些DBA常用的监控数据库和操作系统运行状态的视图. 291 | - pgfincore, 修改数据文件的page cache行为 292 | - pg_repack, 几乎不影响业务的收缩膨胀的表和索引浪费的存储空间 293 | - pg_migrate, online DDL, fork自pg_repack, 实现最短时间持有排他锁的DDL, DDL过程中支持DML. 294 | - squeeze, 几乎不影响业务的收缩膨胀的表和索引浪费的存储空间, 支持设置阈值, 自动调度. 295 | - pgagent, 定时任务 296 | - pg_cron, 定时任务 297 | - pg_task, 数据库后台任务管理. 类似oracle dbms_jobs 298 | - pgaudit, 审计用户行为 299 | - tablelog, 审计表的修改过程 300 | - dirtyread, 脏读 301 | - wal2json, WAL日志转换为json 302 | - pg_bulkload, 高速导入数据 303 | - sqlbench, 压测tpc-c 304 | - pgxnclient, pgxn插件管理 305 | - icu-ext, 扩展的icu字符集 306 | - pg_plan_filter, 基于cbo的限制插件, 例如限制某些用户执行cost大于指定值的SQL. 防止用户"捣乱". 307 | - pg_query_rewrite, 自定义查询重写规则的插件. 308 | - pg_track_settings, 跟踪审计GUC参数设置. 309 | - pg_utility_trigger_functions, 常用功能场景的触发器函数. 310 | - pg_safer_settings, 记录guc参数设置, 并增加一些基于角色的guc 参数setting权限控制和审计. 311 | - ddlx, 生成数据库对象的create语句的插件 312 | - pg_dbms_stats, 统计信息快照, 使用统计信息快照生成执行计划. 类似基线, 确保执行计划的普遍最优性. 313 | - pg_rman, 块级别数据库增量备份, 根据数据块的LSN判断自上次备份后是否被修改. 类似Oracle incremental backup. 314 | - online_analyze, 事务中分析DML后的统计信息, 适合OLAP跑复杂任务场景的及时统计信息刷新, 用于确保复杂SQL的执行计划正确性. 315 | - gevel, 观察gin,gist,sp-gist索引内部结构的插件. 316 | - toastinfo, 观察toast存储结构 317 | - pg_later, PG 异步SQL执行插件. 318 | - mimeo, 表级别复制(逻辑复制前的方法, 现在不建议使用) 319 | - pre_prepare, 数据库端prepared statement自动保存, 便于pool调用. 320 | - prioritize, 结合OS PID task优先级功能, 设置pg backend pid cpu调度优先级 321 | - pgsentinel, postgresql extension providing Active session history 322 | - pgwatch2, PostgreSQL metrics monitor/dashboard. 暂未集成 323 | - pg_top, postgresql的top命令, 类似linux top. 324 | - pgcenter, 类似pg_top, 可一屏显示多个实例的top情况. pgCenter is a command line admin tool for PostgreSQL. 325 | - pg_proctab, 配合pg_top使用, 观察远程postgresql的top资源. 326 | - pgbadger, A fast PostgreSQL Log Analyzer. http://pgbadger.darold.net/ 327 | - pg_auto_failover, Postgres extension and service for automated failover and high-availability. https://github.com/hapostgres/pg_auto_failover 328 | - pghero, A performance dashboard for Postgres. https://github.com/ankane/pghero 329 | - ora2pg, oracle,mysql迁移到postgresql的工具 330 | - pgloader, 使用fdw读取其他数据库的数据, 并快速迁移到PostgreSQL的迁移工具 331 | - pgreplay, 回放postgresql log的工具. 需要开启log_statements. 332 | - pg_subtrans_infos, 查看子事务信息 333 | - pg_subxact_counters, 统计子事务 334 | - pgbackrest, 备份管理工具. 335 | - elephant-shed-pgbackrest, PG备份管理工具pgbackrest web控制台, 同时集成了一些有趣的工具 336 | - PgDD, PostgreSQL Data Dictionary for 开发者, 快速了解数据库概貌. https://github.com/rustprooflabs/pgdd 337 | - pg_partman, Partition management extension for PostgreSQL 338 | - pg_filedump, pg_filedump is a utility to format PostgreSQL heap/index/control files into a human-readable form. 339 | - pg_partman, Partition management extension for PostgreSQL 340 | - pg_jobmon, PostgreSQL extension which provides persistent logging within transactions and functions. 事务即使回滚也能留下数据, 使用的是dblink外部事务实现. 341 | - pgroll, PostgreSQL zero-downtime migrations made easy 342 | 343 | 连接池和读写分离 344 | - pgpool2, 连接池和读写分离 345 | - pgagroal, 高性能连接池 346 | - pgbouncer, 高性能连接池 347 | - pgcat, 连接池和读写分离,sharding等特性, 未来发展前景比较可观 348 | 349 | 嵌入式OLAP数据库 350 | - DuckDB, 嵌入式的OLAP库, 功能非常强大性能非常好. 兼容SQLite3语法和PostgreSQL语法. 351 | 352 | 未来可能还会新增的插件或产品(你有什么想要的插件可以在issue中留言): 353 | ``` 354 | https://neon.tech/docs/extensions/pg-extensions 355 | 356 | PostgreSQL协议兼容分布式数据库: 357 | https://yugabyte.com/ 358 | https://github.com/cockroachdb/cockroach 359 | 360 | 类似aws aurora架构的云原生开源数据库, 修改了pg的page server, fd, wal等接口. 361 | https://neon.tech/ 362 | 363 | OrioleDB is an attempt to improve PostgreSQL by using lock-free page reading, undo logging, row-level WAL and more. 364 | https://www.orioledata.com/ 365 | 366 | https://github.com/supabase/postgres 367 | 368 | Postgres extension for ulid 369 | https://github.com/pksunkara/pgx_ulid 370 | 371 | PostgreSQL implementation of JWT (JSON Web Tokens) 372 | https://github.com/michelp/pgjwt 373 | 374 | Short unique id generator for PostgreSQL, using hashids 375 | https://github.com/iCyberon/pg_hashids 376 | 377 | GraphQL support for PostgreSQL 378 | https://github.com/supabase/pg_graphql 379 | 380 | PostgreSQL extension providing JSON Schema validation 381 | https://github.com/supabase/pg_jsonschema 382 | 383 | A tiny Postgres extension to create version 7 UUIDs 384 | https://github.com/fboulnois/pg_uuidv7 385 | 386 | Build Postgres Extensions with Rust! 387 | https://github.com/pgcentralfoundation/pgrx 388 | 389 | Parquet S3 Foreign Data Wrapper for PostgresSQL 390 | https://github.com/pgspider/parquet_s3_fdw 391 | 392 | PostgresML 393 | https://github.com/postgresml/postgresml 394 | 395 | supavisor, A cloud-native, multi-tenant Postgres connection pooler. 396 | https://github.com/supabase/supavisor 397 | 398 | FerretDB, 前端使用mongo 协议, 后端使用PostgreSQL或SQLite3的数据库 399 | https://github.com/FerretDB/FerretDB 400 | 401 | Apache Arrow Flight SQL adapter for PostgreSQL 402 | https://arrow.apache.org/blog/2023/09/13/flight-sql-postgresql-0.1.0-release/ 403 | https://github.com/apache/arrow-flight-sql-postgresql 404 | 405 | babelfish, sql server wire protocol 406 | https://babelfishpg.org/ 407 | https://github.com/babelfish-for-postgresql/babelfish_compass/releases 408 | 409 | Ora2Pg, 迁移Oracle, MySQL到PostgreSQL的工具 410 | https://github.com/darold/ora2pg 411 | 412 | pg_later, PG 异步SQL执行插件. 413 | 已集成到docker image 414 | https://github.com/tembo-io/pg_later 415 | 416 | PGMQ, pg消息队列 417 | 已集成到docker image 418 | https://github.com/tembo-io/pgmq 419 | https://tembo.io/blog/introducing-pgmq/#using-pgmq 420 | 421 | hydra, PG列存储. 422 | 已集成到docker image 423 | https://hydra-so.notion.site/Hydra-1-0-beta-318504444825401e8ce21796dcadd589 424 | https://github.com/hydradatabase/hydra 425 | 426 | 俄罗斯航空数据集, Demonstration Database 427 | https://postgrespro.com/community/demodb 428 | 429 | 在PostgreSQL中运行wasm binary. 430 | https://github.com/wasmerio/wasmer-postgres 431 | 432 | 使用wasm技术, 将PostgreSQL运行在浏览器虚拟机中. (About A PostgresQL server running in your browser) 433 | https://github.com/snaplet/postgres-wasm 434 | https://supabase.com/blog/postgres-wasm 435 | 436 | lsm3, LSM tree implementation based on standard B-Tree 437 | https://github.com/postgrespro/lsm3 438 | 439 | sr_plan, Save and restore query plans in PostgreSQL 440 | https://github.com/postgrespro/sr_plan 441 | 442 | pg_onnx, 开放的神经网络集市(onnx)在PG中的调用接口. 类似postgresml, 阿里云灵积这样的大模型集市, 在PG内部通过封装好的函数调用AI能力. 443 | 已集成到docker image 444 | https://github.com/kibae/pg_onnx 445 | 446 | onnx model, 已有大模型 447 | 已集成到docker image 448 | https://github.com/onnx/models 449 | https://onnxruntime.ai/ 450 | 451 | pg4ml, 开放的神经网络算法库. 郭铁成老师主导, 内容非常丰富. 452 | 已集成到docker image 453 | https://gitee.com/seanguo_007/plpgsql_pg4ml 454 | 455 | orc_fdw, 访问ORC格式列存储文件 456 | https://github.com/HighgoSoftware/orc_fdw 457 | 458 | zombodb, 使用elastic search作为外部索引. 459 | https://github.com/zombodb/zombodb 460 | 461 | pgwatch2, PostgreSQL metrics monitor/dashboard 462 | https://github.com/cybertec-postgresql/pgwatch2 463 | 464 | pg_timetable, Advanced scheduling for PostgreSQL 465 | https://www.cybertec-postgresql.com/en/products/pg_timetable/ 466 | https://github.com/cybertec-postgresql/pg_timetable/releases 467 | https://github.com/cybertec-postgresql/pg_timetable 468 | https://www.cybertec-postgresql.com/en/introducing-pg_timetable-v5-6-delayed-chains-and-error-handling/ 469 | 470 | partoni, A template for PostgreSQL High Availability with Etcd, Consul, ZooKeeper, or Kubernetes 471 | https://github.com/zalando/patroni 472 | 473 | walminer, 解析wal的工具 474 | https://gitee.com/movead/XLogMiner 475 | 476 | pgroll, PostgreSQL zero-downtime migrations made easy 477 | 已集成到docker image 478 | https://xata.io/blog/pgroll-schema-migrations-postgres 479 | https://github.com/xataio/pgroll 480 | https://github.com/xataio/pgroll/releases 481 | 482 | pgmonitor, crunchydata提供的监控解决方案 483 | https://access.crunchydata.com/documentation/pgmonitor/latest/ 484 | https://github.com/CrunchyData/pgmonitor 485 | ``` 486 | 487 | -------------------------------------------------------------------------------- /pg14_amd64/.dockerignore: -------------------------------------------------------------------------------- 1 | logs/ 2 | -------------------------------------------------------------------------------- /pg14_amd64/1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | cd /tmp 5 | sed -i "s@http://\(deb\|security\).debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list 6 | apt-get update 7 | apt-get reinstall -y apt-transport-https ca-certificates 8 | sed -i "s@http://mirrors.aliyun.com@https://mirrors.aliyun.com@g" /etc/apt/sources.list 9 | apt-get update 10 | apt-get install -y lsb-release wget vim man 11 | 12 | # RUN echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list 13 | echo "deb https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list 14 | apt-get install -y gnupg2 15 | 16 | # RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - 17 | wget --quiet -O - https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ACCC4CF8.asc | apt-key add - 18 | apt-get update 19 | apt-get install -y locales 20 | localedef -i en_US -f UTF-8 en_US.UTF-8 21 | 22 | apt-get install -y curl libicu-dev icu-devtools libbison-dev libfl-dev git libreadline-dev libedit-dev g++ make cmake man-db dnsutils clang libssl-dev default-jdk strace gdb libsqlite3-dev lsof blktrace 23 | apt-get install -y unixodbc unixodbc-dev bash-completion m4 python3-distutils python glibc-source zlib1g-dev pkg-config default-jre openjdk-17-jdk openjdk-17-jdk-headless 24 | apt-get install -y postgresql-14 postgresql-client-14 postgresql-server-dev-14 postgresql-doc-14 25 | apt-get install -y postgresql-14-dirtyread postgresql-14-extra-window-functions postgresql-14-first-last-agg postgresql-14-hll postgresql-14-hypopg 26 | apt-get install -y postgresql-14-ip4r postgresql-14-mysql-fdw postgresql-14-jsquery postgresql-14-ogr-fdw postgresql-14-oracle-fdw postgresql-14-pgmemcache 27 | apt-get install -y postgresql-14-pljava postgresql-14-pllua postgresql-14-plpgsql-check postgresql-14-plproxy postgresql-14-prefix postgresql-14-rational 28 | apt-get install -y postgresql-14-rdkit postgresql-14-orafce postgresql-14-pg-qualstats postgresql-14-pg-stat-kcache 29 | apt-get install -y postgresql-14-pg-wait-sampling postgresql-14-pgfincore postgresql-14-pgaudit postgresql-14-pgpool2 postgresql-14-pgrouting postgresql-14-pgrouting-doc 30 | apt-get install -y postgresql-14-pgrouting-scripts postgresql-14-pgsphere postgresql-14-pgvector postgresql-14-pldebugger postgresql-14-pointcloud postgresql-14-plr 31 | apt-get install -y postgresql-14-postgis-3 postgresql-14-postgis-3-scripts postgresql-14-powa powa-collector postgresql-14-q3c postgresql-14-repack 32 | apt-get install -y postgresql-14-rum postgresql-14-show-plans postgresql-14-similarity postgresql-14-tablelog postgresql-14-tdigest postgresql-14-wal2json 33 | apt-get install -y postgresql-14-tds-fdw postgresql-14-plprofiler postgresql-14-cron 34 | apt-get install -y pgagroal pgpool2 pgbouncer pgxnclient pgagent postgresql-plpython3-14 postgresql-14-icu-ext libpq-dev pgreplay pgbackrest pgbackrest-doc elephant-shed-pgbackrest postgresql-14-partman 35 | 36 | # pghero 目前仅支持x86版本 37 | cd /tmp 38 | dpkg -i pghero_3.4.0-1701207987.0382b812.bullseye_amd64.deb 39 | 40 | echo "deb https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -c -s) main" | tee /etc/apt/sources.list.d/timescaledb.list 41 | wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | gpg --dearmor -o /etc/apt/trusted.gpg.d/timescaledb.gpg 42 | apt-get update 43 | apt-get install -y timescaledb-2-postgresql-14 44 | 45 | wget https://packages.groonga.org/debian/groonga-apt-source-latest-bullseye.deb 46 | apt-get install -y -V ./groonga-apt-source-latest-bullseye.deb 47 | apt-get update 48 | apt-get install -y postgresql-14-pgdg-pgroonga 49 | 50 | apt-get install -y postgresql-14-credcheck postgresql-14-decoderbufs postgresql-14-mimeo postgresql-14-pgmp postgresql-14-preprepare postgresql-14-prioritize postgresql-14-squeeze postgresql-14-toastinfo postgresql-14-unit pgbadger pg-auto-failover-cli postgresql-14-auto-failover net-tools apt-utils ora2pg pgloader 51 | 52 | # https://dev.mysql.com/downloads/repo/apt/ 53 | cd /tmp 54 | wget -T 36000 -t 0 --waitretry=5 https://repo.mysql.com//mysql-apt-config_0.8.29-1_all.deb 55 | dpkg -i mysql-apt-config_0.8.29-1_all.deb 56 | # https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/ add gpg key 57 | apt-key adv --keyserver pgp.mit.edu --recv-keys A8D3785C 58 | apt-get update 59 | apt-get install -y mysql-server 60 | -------------------------------------------------------------------------------- /pg14_amd64/2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | export ROOT_HOME=/root 5 | echo "# add by digoal" >>$ROOT_HOME/.bashrc 6 | echo "alias rm='rm -i'" >>$ROOT_HOME/.bashrc 7 | echo "alias cp='cp -i'" >>$ROOT_HOME/.bashrc 8 | echo "alias ll='ls -larth'" >>$ROOT_HOME/.bashrc 9 | echo "alias mv='mv -i'" >>$ROOT_HOME/.bashrc 10 | echo "export PGHOME=/usr/lib/postgresql/14" >>$ROOT_HOME/.bashrc 11 | echo "export PATH=\$PGHOME/bin:\$PATH" >>$ROOT_HOME/.bashrc 12 | echo "export LD_LIBRARY_PATH=\$PGHOME/lib:/usr/local/lib:/usr/lib/x86_64-linux-gnu:\$LD_LIBRARY_PATH" >>$ROOT_HOME/.bashrc 13 | echo "export PGDATA=/var/lib/postgresql/14/pgdata" >>$ROOT_HOME/.bashrc 14 | echo "export PGUSER=postgres" >>$ROOT_HOME/.bashrc 15 | echo "export PGHOST=\$PGDATA" >>$ROOT_HOME/.bashrc 16 | echo "export PGPORT=1921" >>$ROOT_HOME/.bashrc 17 | echo "export PGDATABASE=postgres" >>$ROOT_HOME/.bashrc 18 | echo "export LC_ALL=en_US.UTF-8" >>$ROOT_HOME/.bashrc 19 | . $ROOT_HOME/.bashrc 20 | 21 | export PG_HOME=/var/lib/postgresql 22 | echo "# add by digoal" >>$PG_HOME/.bash_profile 23 | echo "alias rm='rm -i'" >>$PG_HOME/.bash_profile 24 | echo "alias cp='cp -i'" >>$PG_HOME/.bash_profile 25 | echo "alias ll='ls -larth'" >>$PG_HOME/.bash_profile 26 | echo "alias mv='mv -i'" >>$PG_HOME/.bash_profile 27 | echo "export PGHOME=/usr/lib/postgresql/14" >>$PG_HOME/.bash_profile 28 | echo "export PATH=\$PGHOME/bin:\$PATH" >>$PG_HOME/.bash_profile 29 | echo "export LD_LIBRARY_PATH=\$PGHOME/lib:/usr/local/lib:/usr/lib/x86_64-linux-gnu:\$LD_LIBRARY_PATH" >>$PG_HOME/.bash_profile 30 | echo "export PGDATA=/var/lib/postgresql/14/pgdata" >>$PG_HOME/.bash_profile 31 | echo "export PGUSER=postgres" >>$PG_HOME/.bash_profile 32 | echo "export PGHOST=\$PGDATA" >>$PG_HOME/.bash_profile 33 | echo "export PGPORT=1921" >>$PG_HOME/.bash_profile 34 | echo "export PGDATABASE=postgres" >>$PG_HOME/.bash_profile 35 | echo "export LC_ALL=en_US.UTF-8" >>$PG_HOME/.bash_profile 36 | 37 | echo ". ~/.bash_profile" > $PG_HOME/.profile 38 | chown postgres:postgres $PG_HOME/.bash_profile 39 | chown postgres:postgres $PG_HOME/.profile 40 | -------------------------------------------------------------------------------- /pg14_amd64/3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | export ROOT_HOME=/root 5 | . $ROOT_HOME/.bashrc 6 | 7 | export TEMP_DIR=/tmp 8 | cd $TEMP_DIR 9 | git clone --depth 1 https://github.com/jaiminpan/pg_jieba 10 | cd $TEMP_DIR/pg_jieba 11 | git submodule update --init --recursive --depth 1 12 | mkdir build 13 | cd $TEMP_DIR/pg_jieba/build 14 | cmake -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/14/server .. 15 | make && make install 16 | 17 | cd $TEMP_DIR 18 | git clone --depth 1 https://github.com/ChenHuajun/pg_roaringbitmap 19 | cd $TEMP_DIR/pg_roaringbitmap 20 | USE_PGXS=1 make 21 | USE_PGXS=1 make install 22 | 23 | cd $TEMP_DIR 24 | git clone --depth 1 https://github.com/theirix/parray_gin 25 | cd $TEMP_DIR/parray_gin 26 | USE_PGXS=1 make 27 | USE_PGXS=1 make install 28 | 29 | cd $TEMP_DIR 30 | git clone --depth 1 https://github.com/jirutka/smlar 31 | cd $TEMP_DIR/smlar 32 | USE_PGXS=1 make 33 | USE_PGXS=1 make install 34 | 35 | cd $TEMP_DIR 36 | git clone --depth 1 https://github.com/alitrack/duckdb_fdw 37 | # 14版本 bug fix 之前 38 | # git clone https://github.com/alitrack/duckdb_fdw 39 | cd $TEMP_DIR/duckdb_fdw 40 | # git checkout 87c66cf04243c7bc43e0e75d0b8ce5dd76d81cd5 41 | # wget -T 36000 -t 0 --waitretry=5 https://github.com/duckdb/duckdb/releases/download/v0.9.2/libduckdb-linux-amd64.zip 42 | # curl -Z --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -L https://github.com/duckdb/duckdb/releases/download/v0.9.2/libduckdb-linux-amd64.zip -o libduckdb-linux-amd64.zip 43 | cp $TEMP_DIR/libduckdb-linux-amd64.zip $TEMP_DIR/duckdb_fdw/ 44 | unzip -n -d . libduckdb-linux-amd64.zip 45 | cp libduckdb.so $(pg_config --libdir) 46 | USE_PGXS=1 make 47 | USE_PGXS=1 make install 48 | 49 | cd $TEMP_DIR 50 | git clone --depth 1 https://github.com/EnterpriseDB/hdfs_fdw 51 | cd $TEMP_DIR/hdfs_fdw/libhive 52 | JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 JDK_INCLUDE=$JAVA_HOME/include INSTALL_DIR=/usr/lib/postgresql/14/lib PATH=/usr/lib/postgresql/14/bin:$PATH make 53 | JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 JDK_INCLUDE=$JAVA_HOME/include INSTALL_DIR=/usr/lib/postgresql/14/lib PATH=/usr/lib/postgresql/14/bin:$PATH make install 54 | 55 | cd $TEMP_DIR/hdfs_fdw/libhive/jdbc 56 | javac MsgBuf.java 57 | javac HiveJdbcClient.java 58 | jar cf HiveJdbcClient-1.0.jar *.class 59 | cp HiveJdbcClient-1.0.jar /usr/lib/postgresql/14/lib 60 | 61 | cd $TEMP_DIR/hdfs_fdw 62 | JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 JDK_INCLUDE=$JAVA_HOME/include INSTALL_DIR=/usr/lib/postgresql/14/lib PATH=/usr/lib/postgresql/14/bin:$PATH USE_PGXS=1 make 63 | JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 JDK_INCLUDE=$JAVA_HOME/include INSTALL_DIR=/usr/lib/postgresql/14/lib PATH=/usr/lib/postgresql/14/bin:$PATH USE_PGXS=1 make install 64 | 65 | cd $TEMP_DIR 66 | git clone --depth 1 https://gitlab.com/dalibo/postgresql_anonymizer.git 67 | cd $TEMP_DIR/postgresql_anonymizer 68 | make extension 69 | make install 70 | 71 | cd $TEMP_DIR 72 | git clone --depth 1 --branch stable https://github.com/jedisct1/libsodium 73 | cd $TEMP_DIR/libsodium 74 | ./configure 75 | make 76 | make check 77 | make install 78 | 79 | cd $TEMP_DIR 80 | git clone --depth 1 https://github.com/michelp/pgsodium 81 | cd $TEMP_DIR/pgsodium 82 | C_INCLUDE_PATH=/usr/include/postgresql/14/server PG_LDFLAGS=-L/usr/lib/postgresql/14/lib USE_PGXS=1 make 83 | C_INCLUDE_PATH=/usr/include/postgresql/14/server PG_LDFLAGS=-L/usr/lib/postgresql/14/lib USE_PGXS=1 make install 84 | 85 | cd $TEMP_DIR 86 | wget -T 36000 -t 0 --waitretry=5 https://github.com/libgd/libgd/archive/refs/tags/gd-2.3.3.tar.gz 87 | tar -zxvf gd-2.3.3.tar.gz 88 | cd $TEMP_DIR/libgd-gd-2.3.3 89 | mkdir build 90 | cd $TEMP_DIR/libgd-gd-2.3.3/build 91 | cmake .. 92 | make install 93 | 94 | cd $TEMP_DIR 95 | git clone --depth 1 https://github.com/digoal/imgsmlr 96 | # git clone --depth 1 https://github.com/postgrespro/imgsmlr 97 | cd $TEMP_DIR/imgsmlr 98 | USE_PGXS=1 make 99 | USE_PGXS=1 make install 100 | 101 | cd $TEMP_DIR 102 | git clone --depth 1 https://github.com/postgrespro/vops 103 | cd $TEMP_DIR/vops 104 | USE_PGXS=1 make 105 | USE_PGXS=1 make install 106 | 107 | cd $TEMP_DIR 108 | git clone --depth 1 -b PG14 https://github.com/ossc-db/pg_hint_plan 109 | cd $TEMP_DIR/pg_hint_plan 110 | USE_PGXS=1 make 111 | USE_PGXS=1 make install 112 | 113 | cd $TEMP_DIR 114 | apt-get install -y libselinux1-dev libpam0g-dev libkrb5-dev liblz4-dev 115 | git clone --depth 1 https://github.com/ossc-db/pg_bulkload 116 | cd $TEMP_DIR/pg_bulkload 117 | USE_PGXS=1 make 118 | USE_PGXS=1 make install 119 | 120 | cd $TEMP_DIR 121 | git clone --depth 1 -b 1.6.1 https://github.com/ossc-db/pg_store_plans 122 | cd $TEMP_DIR/pg_store_plans 123 | USE_PGXS=1 make 124 | USE_PGXS=1 make install 125 | 126 | # cd $TEMP_DIR 127 | # git clone --depth 1 -b REL-5_5_0 https://github.com/EnterpriseDB/mongo_fdw 128 | # cd $TEMP_DIR/mongo_fdw 129 | # ./autogen.sh --with-master 130 | # apt-get install -y libmongoc-dev 131 | # # C_INCLUDE_PATH="/include/libmongoc-1.0/mongoc:/include/libbson-1.0" USE_PGXS=1 make 132 | # # C_INCLUDE_PATH="/include/libmongoc-1.0/mongoc:/include/libbson-1.0" USE_PGXS=1 make install 133 | # USE_PGXS=1 make 134 | # USE_PGXS=1 make install 135 | 136 | cd $TEMP_DIR 137 | git clone --depth 1 -b REL-5_5_1 https://github.com/EnterpriseDB/mongo_fdw 138 | cd $TEMP_DIR/mongo_fdw 139 | cp $TEMP_DIR/mongo-c-driver-1.17.3.tar.gz ./ 140 | tar -xzvf mongo-c-driver-1.17.3.tar.gz 141 | rm -rf mongo-c-driver 142 | mv mongo-c-driver-1.17.3 mongo-c-driver 143 | cd $TEMP_DIR/mongo_fdw/mongo-c-driver 144 | cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DENABLE_SSL=AUTO . 145 | make install 146 | 147 | cd $TEMP_DIR/mongo_fdw 148 | cp $TEMP_DIR/json-c-0.15-20200726.tar.gz ./ 149 | tar -xzvf json-c-0.15-20200726.tar.gz 150 | rm -rf json-c 151 | mv json-c-json-c-0.15-20200726 json-c 152 | cd $TEMP_DIR/mongo_fdw/json-c 153 | cmake . 154 | make -j 2 155 | make install 156 | 157 | apt-get install -y libmongoc-dev 158 | 159 | cd $TEMP_DIR/mongo_fdw 160 | echo "#ifdef __CONFIG__" >> config.h 161 | echo "#define META_DRIVER" >> config.h 162 | echo "#endif" >> config.h 163 | export PKG_CONFIG_PATH=mongo-c-driver/src/libmongoc/src:mongo-c-driver/src/libbson/src 164 | mv Makefile Makefile.origin 165 | cp Makefile.meta Makefile 166 | # C_INCLUDE_PATH="/include/libmongoc-1.0/mongoc:/include/libbson-1.0" USE_PGXS=1 make 167 | # C_INCLUDE_PATH="/include/libmongoc-1.0/mongoc:/include/libbson-1.0" USE_PGXS=1 make install 168 | USE_PGXS=1 make 169 | USE_PGXS=1 make install 170 | 171 | cd $TEMP_DIR 172 | git clone --depth 1 https://github.com/neondatabase/neon 173 | cd $TEMP_DIR/neon/pgxn/hnsw 174 | USE_PGXS=1 make 175 | USE_PGXS=1 make install 176 | 177 | cd $TEMP_DIR 178 | curl https://install.citusdata.com/community/deb.sh > add-citus-repo.sh 179 | bash add-citus-repo.sh 180 | apt-get install -y postgresql-14-citus-11.3 181 | 182 | cd $TEMP_DIR 183 | apt-get install -y libboost-all-dev 184 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/datasketches/1.7.0/datasketches-1.7.0.zip 185 | unzip datasketches-1.7.0.zip 186 | cd $TEMP_DIR/datasketches-1.7.0 187 | USE_PGXS=1 make 188 | USE_PGXS=1 make install 189 | 190 | cd $TEMP_DIR 191 | # get GraphBLAS, compile with debug symbols 192 | # curl --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -s -L http://faculty.cse.tamu.edu/davis/GraphBLAS/GraphBLAS-3.1.1.tar.gz | tar zxvf - && cd GraphBLAS-3.1.1 && make library CMAKE_OPTIONS='-DCMAKE_BUILD_TYPE=Debug' && make install 193 | tar -zxvf GraphBLAS-3.1.1.tar.gz 194 | cd GraphBLAS-3.1.1 195 | make library CMAKE_OPTIONS='-DCMAKE_BUILD_TYPE=Debug' 196 | make install 197 | cd $TEMP_DIR 198 | git clone --depth 1 --branch 22July2019 https://github.com/GraphBLAS/LAGraph.git && cd LAGraph && make -j4 library && make install 199 | cd $TEMP_DIR 200 | curl --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -s -L https://github.com/theory/pgtap/archive/v0.99.0.tar.gz | tar zxvf - && cd pgtap-0.99.0 && make -j4 && make install 201 | 202 | cd $TEMP_DIR 203 | git clone --depth 1 https://github.com/michelp/pggraphblas 204 | cd $TEMP_DIR/pggraphblas 205 | USE_PGXS=1 make 206 | USE_PGXS=1 make install 207 | 208 | cd $TEMP_DIR 209 | git clone --depth 1 -b REL1_2_STABLE https://github.com/pgbigm/pg_bigm 210 | cd $TEMP_DIR/pg_bigm 211 | USE_PGXS=1 make 212 | USE_PGXS=1 make install 213 | 214 | cd $TEMP_DIR 215 | git clone --depth 1 https://github.com/percona/pg_stat_monitor 216 | cd $TEMP_DIR/pg_stat_monitor 217 | USE_PGXS=1 make 218 | USE_PGXS=1 make install 219 | 220 | cd $TEMP_DIR 221 | git clone --depth 1 https://github.com/neondatabase/pg_embedding 222 | cd $TEMP_DIR/pg_embedding 223 | USE_PGXS=1 make 224 | USE_PGXS=1 make install 225 | 226 | cd $TEMP_DIR 227 | git clone --depth 1 https://github.com/cybertec-postgresql/pgfaceting 228 | cd $TEMP_DIR/pgfaceting 229 | USE_PGXS=1 make install 230 | 231 | cd $TEMP_DIR 232 | git clone --depth 1 https://github.com/pgexperts/pg_plan_filter 233 | cd $TEMP_DIR/pg_plan_filter 234 | USE_PGXS=1 make install 235 | 236 | cd $TEMP_DIR 237 | git clone --depth 1 https://github.com/postgrespro/pg_variables 238 | cd $TEMP_DIR/pg_variables 239 | USE_PGXS=1 make install 240 | 241 | cd $TEMP_DIR 242 | apt-get install -y libcurl-ocaml-dev 243 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_curl/2.2.2/pg_curl-2.2.2.zip 244 | unzip pg_curl-2.2.2.zip 245 | cd $TEMP_DIR/pg_curl-2.2.2 246 | USE_PGXS=1 make install 247 | 248 | cd $TEMP_DIR 249 | apt-get install -y systemtap-sdt-dev 250 | mkdir -p /usr/lib/postgresql/14/lib 251 | mkdir -p /usr/lib/postgresql/14/lib/bitcode 252 | mkdir -p /usr/share/postgresql/14/extension 253 | mv pg_task.so /usr/lib/postgresql/14/lib/ 254 | mv pg_task.index.bc /usr/lib/postgresql/14/lib/bitcode/ 255 | mv pg_task /usr/lib/postgresql/14/lib/bitcode/ 256 | mv pg_task.control /usr/share/postgresql/14/extension/ 257 | mv pg_task--1.0.sql /usr/share/postgresql/14/extension/ 258 | cd $TEMP_DIR 259 | git clone --depth 1 -b extension https://github.com/RekGRpth/pg_task 260 | # OR 261 | # git clone --depth 1 -b extension https://github.com/RekGRpth/pg_task 262 | # cd $TEMP_DIR/pg_task 263 | # USE_PGXS=1 make install 264 | # OR 265 | # pgxn install pg_task 266 | # OR 267 | # wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_task/2.0.41/pg_task-2.0.41.zip 268 | # unzip pg_task-2.0.41.zip 269 | # cd $TEMP_DIR/pg_task-2.0.41 270 | # USE_PGXS=1 make install 271 | 272 | cd $TEMP_DIR 273 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/temporal_tables/1.2.2/temporal_tables-1.2.2.zip 274 | unzip temporal_tables-1.2.2.zip 275 | cd $TEMP_DIR/temporal_tables-1.2.2 276 | USE_PGXS=1 make install 277 | 278 | cd $TEMP_DIR 279 | git clone --depth 1 -b v3.1 https://github.com/darold/pgtt 280 | cd $TEMP_DIR/pgtt 281 | USE_PGXS=1 make install 282 | 283 | cd $TEMP_DIR 284 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_query_rewrite/0.0.5/pg_query_rewrite-0.0.5.zip 285 | unzip pg_query_rewrite-0.0.5.zip 286 | cd $TEMP_DIR/pg_query_rewrite-0.0.5 287 | USE_PGXS=1 make install 288 | 289 | cd $TEMP_DIR 290 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_track_settings/2.1.2/pg_track_settings-2.1.2.zip 291 | unzip pg_track_settings-2.1.2.zip 292 | cd $TEMP_DIR/pg_track_settings-2.1.2 293 | USE_PGXS=1 make install 294 | 295 | cd $TEMP_DIR 296 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/aggs_for_vecs/1.3.0/aggs_for_vecs-1.3.0.zip 297 | unzip aggs_for_vecs-1.3.0.zip 298 | cd $TEMP_DIR/aggs_for_vecs-1.3.0 299 | USE_PGXS=1 make install 300 | 301 | cd $TEMP_DIR 302 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/quantile/1.1.7/quantile-1.1.7.zip 303 | unzip quantile-1.1.7.zip 304 | cd $TEMP_DIR/quantile-1.1.7 305 | USE_PGXS=1 make install 306 | 307 | cd $TEMP_DIR 308 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_utility_trigger_functions/1.9.1/pg_utility_trigger_functions-1.9.1.zip 309 | unzip pg_utility_trigger_functions-1.9.1.zip 310 | cd $TEMP_DIR/pg_utility_trigger_functions-1.9.1 311 | USE_PGXS=1 make install 312 | 313 | cd $TEMP_DIR 314 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_safer_settings/0.8.10/pg_safer_settings-0.8.10.zip 315 | unzip pg_safer_settings-0.8.10.zip 316 | cd $TEMP_DIR/pg_safer_settings-0.8.10 317 | USE_PGXS=1 make install 318 | 319 | cd $TEMP_DIR 320 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/ddlx/0.27.0/ddlx-0.27.0.zip 321 | unzip ddlx-0.27.0.zip 322 | cd $TEMP_DIR/ddlx-0.27.0 323 | USE_PGXS=1 make install 324 | 325 | cd $TEMP_DIR 326 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pgtelemetry/1.6.0/pgtelemetry-1.6.0.zip 327 | unzip pgtelemetry-1.6.0.zip 328 | cd $TEMP_DIR/pgtelemetry-1.6.0 329 | USE_PGXS=1 make install 330 | 331 | cd $TEMP_DIR 332 | git clone --depth 1 -b REL14_0 https://github.com/ossc-db/pg_dbms_stats 333 | cd $TEMP_DIR/pg_dbms_stats 334 | USE_PGXS=1 make install 335 | 336 | cd $TEMP_DIR 337 | apt-get install -y libzlcore-dev 338 | git clone --depth 1 -b REL_14_STABLE https://github.com/ossc-db/pg_rman 339 | cd $TEMP_DIR/pg_rman 340 | make install 341 | 342 | # http://sigaev.ru/ 和 http://www.sigaev.ru/git/gitweb.cgi 需要开网络授权, 否则无法访问导致build image报错. 343 | cd $TEMP_DIR 344 | git clone --depth 1 git://sigaev.ru/online_analyze 345 | cd $TEMP_DIR/online_analyze/ 346 | USE_PGXS=1 make 347 | USE_PGXS=1 make install 348 | 349 | # http://sigaev.ru/ 和 http://www.sigaev.ru/git/gitweb.cgi 需要开网络授权, 否则无法访问导致build image报错. 350 | cd $TEMP_DIR 351 | git clone --depth 1 git://sigaev.ru/plantuner 352 | cd $TEMP_DIR/plantuner/ 353 | USE_PGXS=1 make 354 | USE_PGXS=1 make install 355 | 356 | cd $TEMP_DIR 357 | git clone --depth 1 https://github.com/digoal/gevel 358 | cd $TEMP_DIR/gevel 359 | . ./install.sh 360 | 361 | cd $TEMP_DIR 362 | git clone --depth 1 -b 4.3 https://github.com/zubkov-andrei/pg_profile 363 | cd $TEMP_DIR/pg_profile 364 | USE_PGXS=1 make 365 | USE_PGXS=1 make install 366 | 367 | cd $TEMP_DIR 368 | # git clone --depth 1 https://github.com/s-hironobu/pg_plan_inspector 369 | # cd $TEMP_DIR/pg_plan_inspector 370 | # bug 修复之前 : https://github.com/s-hironobu/pg_plan_inspector/issues/1 371 | git clone https://github.com/s-hironobu/pg_plan_inspector 372 | cd $TEMP_DIR/pg_plan_inspector 373 | git checkout fa845045ed5a776779f2d5308608ac18ed045aad 374 | USE_PGXS=1 make 375 | USE_PGXS=1 make install 376 | 377 | # apt-get install -y libhealpix-cxx-dev 378 | # cd $TEMP_DIR 379 | # git clone --depth 1 -b 1.2.3 https://github.com/postgrespro/pgsphere 380 | # cd $TEMP_DIR/pgsphere 381 | # USE_PGXS=1 make 382 | # USE_PGXS=1 make install 383 | 384 | cd $TEMP_DIR 385 | git clone --depth 1 https://github.com/sraoss/pg_ivm 386 | cd $TEMP_DIR/pg_ivm 387 | USE_PGXS=1 make 388 | USE_PGXS=1 make install 389 | 390 | cd $TEMP_DIR 391 | git clone --depth 1 https://github.com/pgvector/pgvector 392 | cd $TEMP_DIR/pgvector 393 | USE_PGXS=1 make 394 | USE_PGXS=1 make install 395 | 396 | cd $TEMP_DIR 397 | git clone --depth=1 https://github.com/vyruss/pg_statviz.git 398 | cd $TEMP_DIR/pg_statviz 399 | USE_PGXS=1 make install 400 | 401 | apt-get install -y python3-pip 402 | pip install pg_statviz 403 | 404 | cd $TEMP_DIR 405 | # curl -Z --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -L https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4.tar.gz -o cmake-3.27.4.tar.gz 406 | tar -zxvf cmake-3.27.4.tar.gz 407 | cd $TEMP_DIR/cmake-3.27.4 408 | env CC=clang CXX=clang++ ./bootstrap -- -DCMAKE_BUILD_TYPE:STRING=Release 409 | make -j2 410 | make install 411 | 412 | cd $TEMP_DIR 413 | git clone --depth 1 https://github.com/zachasme/h3-pg 414 | cd $TEMP_DIR/h3-pg 415 | USE_PGXS=1 make all 416 | USE_PGXS=1 make install 417 | 418 | 419 | export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static 420 | export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup 421 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o ./rust.sh 422 | chmod 500 rust.sh 423 | ./rust.sh -y 424 | source "$HOME/.cargo/env" 425 | 426 | cd $TEMP_DIR 427 | git clone --depth 1 https://github.com/postgresml/pgcat 428 | cd $TEMP_DIR/pgcat 429 | cargo build --release 430 | 431 | cd $TEMP_DIR 432 | git clone --depth 1 https://github.com/chimpler/postgres-aws-s3 433 | cd $TEMP_DIR/postgres-aws-s3 434 | USE_PGXS=1 make install 435 | 436 | cd $TEMP_DIR 437 | git clone --depth 1 -b PG14 https://github.com/apache/age 438 | cd $TEMP_DIR/age 439 | USE_PGXS=1 make 440 | USE_PGXS=1 make install 441 | 442 | apt-get install -y npm 443 | # cd $TEMP_DIR 444 | # tar -zxvf node-v14.21.3.tar.gz 445 | # cd node-v14.21.3 446 | # ./configure 447 | # CC=clang CXX=clang++ make -j 4 448 | # CC=clang CXX=clang++ make install 449 | npm config set registry https://registry.npmmirror.com 450 | npm config set fetch-retries 100 451 | npm config set fetch-retry-mintimeout 120000 452 | npm config set fetch-retry-maxtimeout 60000000 453 | npm config set cache-min 3600 454 | npm i pm2 455 | cd $TEMP_DIR 456 | git clone --depth 1 https://github.com/apache/age-viewer 457 | cd $TEMP_DIR/age-viewer 458 | npm run setup 459 | 460 | cd $TEMP_DIR 461 | git clone --depth 1 https://github.com/michelp/pgjwt 462 | cd $TEMP_DIR/pgjwt 463 | USE_PGXS=1 make install 464 | 465 | cd $TEMP_DIR 466 | git clone --depth 1 https://github.com/supabase/pg_net 467 | cd $TEMP_DIR/pg_net 468 | USE_PGXS=1 make install 469 | # bug : ERROR: extension "pg_net" has no installation script nor update path for version "0.7.3" 470 | # cd $TEMP_DIR/pg_net/sql 471 | # cp -f -n ./pg_net.sql ./pg_net--0.7.3.sql /usr/share/postgresql/14/extension/ 472 | 473 | cd $TEMP_DIR 474 | wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 | tar jxf - 475 | cd $TEMP_DIR/scws-1.2.3 476 | ./configure 477 | make install 478 | 479 | cd $TEMP_DIR 480 | git clone --depth 1 https://github.com/amutu/zhparser.git 481 | cd $TEMP_DIR/zhparser 482 | PG_CONFIG=/usr/lib/postgresql/14/bin/pg_config make && make install 483 | 484 | cd $TEMP_DIR 485 | git clone --depth 1 https://github.com/pramsey/pgsql-http 486 | cd $TEMP_DIR/pgsql-http 487 | USE_PGXS=1 make install 488 | 489 | cd $TEMP_DIR 490 | git clone --depth 1 https://github.com/pgsentinel/pgsentinel 491 | cd $TEMP_DIR/pgsentinel/src 492 | USE_PGXS=1 make install 493 | 494 | cd $TEMP_DIR 495 | git clone --depth 1 https://github.com/postgrespro/zson 496 | cd $TEMP_DIR/zson 497 | USE_PGXS=1 make install 498 | 499 | cd $TEMP_DIR 500 | cp pg_tiktoken--0.0.1.sql /usr/share/postgresql/14/extension/ 501 | cp pg_tiktoken.control /usr/share/postgresql/14/extension/ 502 | cp pg_tiktoken.so /usr/lib/postgresql/14/lib/ 503 | 504 | cd $TEMP_DIR 505 | git clone --depth 1 --recursive https://github.com/lanterndata/lantern.git 506 | cd $TEMP_DIR/lantern 507 | mkdir build 508 | cd $TEMP_DIR/lantern/build 509 | cmake .. 510 | make install 511 | 512 | cd $TEMP_DIR 513 | cp lantern_extras--0.0.3.sql /usr/share/postgresql/14/extension/ 514 | cp lantern_extras.control /usr/share/postgresql/14/extension/ 515 | cp lantern_extras.so /usr/lib/postgresql/14/lib/ 516 | cp lantern-cli /var/lib/postgresql/ 517 | chown postgres:postgres /var/lib/postgresql/lantern-cli 518 | 519 | cd $TEMP_DIR 520 | git clone --depth 1 -b v1.1.0 https://github.com/hydradatabase/hydra 521 | cd $TEMP_DIR/hydra/columnar 522 | ./configure 523 | USE_PGXS=1 make install 524 | 525 | cd $TEMP_DIR 526 | mkdir -p /usr/local/onnxruntime 527 | tar vzxf onnxruntime-linux-x64-1.15.1.tgz -C /usr/local/onnxruntime --strip-components=1 528 | echo "/usr/local/onnxruntime/lib" > /etc/ld.so.conf.d/onnxruntime.conf 529 | ldconfig 530 | 531 | cd $TEMP_DIR 532 | git clone --depth 1 https://github.com/kibae/onnxruntime-server 533 | cd $TEMP_DIR/onnxruntime-server 534 | cmake -B build -S . -DCMAKE_BUILD_TYPE=Release 535 | cmake --build build --parallel 4 536 | cmake --install build --prefix /usr/local/onnxruntime-server 537 | 538 | cd $TEMP_DIR 539 | git clone --depth 1 -b v1.15.1 https://github.com/microsoft/onnxruntime 540 | cp /tmp/onnxruntime/include/onnxruntime/core/session/* /usr/local/onnxruntime/ 541 | 542 | cd $TEMP_DIR 543 | git clone --depth 1 --recursive https://github.com/kibae/pg_onnx.git 544 | cd $TEMP_DIR/pg_onnx 545 | cmake -B build -S . -DCMAKE_BUILD_TYPE=Release 546 | cmake --build build --target pg_onnx --parallel 4 547 | cmake --install build/pg_onnx 548 | 549 | cd $TEMP_DIR 550 | # curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash 551 | # apt-get install -y git-lfs 552 | for ((i=1;i>=0;i=1)) 553 | do 554 | curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash 555 | if [ $? -eq 0 ]; then 556 | break 557 | fi 558 | done 559 | 560 | for ((i=1;i>=0;i=1)) 561 | do 562 | apt-get install -y git-lfs 563 | if [ $? -eq 0 ]; then 564 | break 565 | fi 566 | done 567 | 568 | cd $TEMP_DIR 569 | GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 https://github.com/onnx/models 570 | cd $TEMP_DIR/models 571 | git lfs install 572 | 573 | cd $TEMP_DIR 574 | git clone --depth 1 https://github.com/fboulnois/pg_uuidv7 575 | cd $TEMP_DIR/pg_uuidv7 576 | USE_PGXS=1 make install 577 | 578 | # apt-get install -y libcurl4-openssl-dev uuid-dev libpulse-dev 579 | # cd $TEMP_DIR 580 | # # git clone --depth 1 -b apache-arrow-12.0.1 https://github.com/apache/arrow.git 581 | # git clone --depth 1 -b apache-arrow-14.0.2 https://github.com/apache/arrow.git 582 | # cd $TEMP_DIR/arrow/cpp 583 | # mkdir build-release 584 | # cd $TEMP_DIR/arrow/cpp/build-release 585 | # 586 | # # build选项: https://arrow.apache.org/docs/developers/cpp/building.html 587 | # for ((i=1;i>=0;i=1)) 588 | # do 589 | # # cmake -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_PARQUET=ON -DARROW_ORC=ON -DARROW_S3=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_SNAPPY=ON -DARROW_WITH_ZLIB=ON -DARROW_WITH_ZSTD=ON -DPARQUET_REQUIRE_ENCRYPTION=ON .. 590 | # cmake -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_PARQUET=ON .. 591 | # if [ $? -eq 0 ]; then 592 | # break 593 | # fi 594 | # done 595 | # 596 | # for ((i=1;i>=0;i=1)) 597 | # do 598 | # make -j4 599 | # if [ $? -eq 0 ]; then 600 | # break 601 | # fi 602 | # done 603 | # 604 | # make install 605 | # ldconfig 606 | 607 | # https://arrow.apache.org/install/ 608 | cd $TEMP_DIR 609 | apt-get install -y libcurl4-openssl-dev uuid-dev libpulse-dev 610 | for ((i=1;i>=0;i=1)) 611 | do 612 | apt-get update 613 | if [ $? -eq 0 ]; then 614 | break 615 | fi 616 | done 617 | apt install -y -V ca-certificates lsb-release 618 | for ((i=1;i>=0;i=1)) 619 | do 620 | wget -T 36000 -t 0 --waitretry=5 https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb 621 | if [ $? -eq 0 ]; then 622 | break 623 | fi 624 | done 625 | apt-get install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb 626 | for ((i=1;i>=0;i=1)) 627 | do 628 | apt-get update 629 | if [ $? -eq 0 ]; then 630 | break 631 | fi 632 | done 633 | apt-get install -y -V libarrow-dev # For C++ 634 | apt-get install -y -V libarrow-glib-dev # For GLib (C) 635 | apt-get install -y -V libarrow-dataset-dev # For Apache Arrow Dataset C++ 636 | apt-get install -y -V libarrow-dataset-glib-dev # For Apache Arrow Dataset GLib (C) 637 | apt-get install -y -V libarrow-acero-dev # For Apache Arrow Acero 638 | apt-get install -y -V libarrow-flight-dev # For Apache Arrow Flight C++ 639 | apt-get install -y -V libarrow-flight-glib-dev # For Apache Arrow Flight GLib (C) 640 | apt-get install -y -V libarrow-flight-sql-dev # For Apache Arrow Flight SQL C++ 641 | apt-get install -y -V libarrow-flight-sql-glib-dev # For Apache Arrow Flight SQL GLib (C) 642 | apt-get install -y -V libgandiva-dev # For Gandiva C++ 643 | apt-get install -y -V libgandiva-glib-dev # For Gandiva GLib (C) 644 | apt-get install -y -V libparquet-dev # For Apache Parquet C++ 645 | apt-get install -y -V libparquet-glib-dev # For Apache Parquet GLib (C) 646 | 647 | cd $TEMP_DIR 648 | git clone --depth 1 https://github.com/adjust/parquet_fdw 649 | cd $TEMP_DIR/parquet_fdw 650 | make install 651 | 652 | cd $TEMP_DIR 653 | git clone --depth 1 https://github.com/pgspider/sqlite_fdw 654 | cd $TEMP_DIR/sqlite_fdw 655 | USE_PGXS=1 make 656 | USE_PGXS=1 make install 657 | 658 | cd $TEMP_DIR 659 | cp pg_bm25--0.4.3.sql /usr/share/postgresql/14/extension/ 660 | cp pg_bm25.control /usr/share/postgresql/14/extension/ 661 | cp pg_bm25.so /usr/lib/postgresql/14/lib/ 662 | 663 | cd $TEMP_DIR 664 | cp pg_search--0.0.0.sql /usr/share/postgresql/14/extension/ 665 | cp pg_search.control /usr/share/postgresql/14/extension/ 666 | cp pg_search.so /usr/lib/postgresql/14/lib/ 667 | 668 | cd $TEMP_DIR 669 | cp pg_sparse--0.0.0.sql /usr/share/postgresql/14/extension/ 670 | cp pg_sparse.control /usr/share/postgresql/14/extension/ 671 | cp pg_sparse.so /usr/lib/postgresql/14/lib/ 672 | 673 | cd $TEMP_DIR 674 | git clone --depth 1 -b 14.3 https://github.com/ossc-db/pg_statsinfo 675 | cd $TEMP_DIR/pg_statsinfo 676 | PG_LDFLAGS=-L/usr/lib/postgresql/14/lib make 677 | PG_LDFLAGS=-L/usr/lib/postgresql/14/lib make install 678 | 679 | cd /usr/lib/postgresql/14 680 | git clone --depth 1 -b 14.0 https://github.com/ossc-db/pg_stats_reporter 681 | 682 | cd $TEMP_DIR/ 683 | git clone --depth 1 https://gitlab.com/pg_proctab/pg_proctab 684 | cd $TEMP_DIR/pg_proctab 685 | USE_PGXS=1 make install 686 | 687 | apt-get install -y libelf-dev 688 | cd $TEMP_DIR/ 689 | git clone --depth 1 https://gitlab.com/pg_top/pg_top 690 | cd $TEMP_DIR/pg_top 691 | cmake CMakeLists.txt 692 | USE_PGXS=1 make install 693 | 694 | cd $TEMP_DIR/ 695 | wget https://golang.org/dl/go1.17.linux-amd64.tar.gz 696 | tar -zxvf go1.17.linux-amd64.tar.gz -C /usr/local/ 697 | export PATH=/usr/local/go/bin:${PATH} 698 | echo "export PATH=/usr/local/go/bin:${PATH}" >>/root/.bashrc 699 | echo "export PATH=/usr/local/go/bin:${PATH}" >>/var/lib/postgresql/.bash_profile 700 | cd $TEMP_DIR/ 701 | git clone --depth 1 https://github.com/lesovsky/pgcenter 702 | cd $TEMP_DIR/pgcenter 703 | make dep 704 | make build 705 | make install 706 | 707 | # pgadmin4 apt 安装目前仅支持x86. arm需要源码安装 708 | cd $TEMP_DIR/ 709 | curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg 710 | sh -c 'echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list' 711 | for ((i=1;i>=0;i=1)) 712 | do 713 | apt-get update 714 | if [ $? -eq 0 ]; then 715 | break 716 | fi 717 | done 718 | 719 | for ((i=1;i>=0;i=1)) 720 | do 721 | apt-get install -y pgadmin4-web 722 | if [ $? -eq 0 ]; then 723 | break 724 | fi 725 | done 726 | 727 | # apt-get install -y pgadmin4 728 | # apt-get install -y pgadmin4-web 729 | # docker内不支持systemctl, 需要修改 /usr/pgadmin4/bin/setup-web.sh systemctl 控制的apache2服务全部改成如下: 730 | # /etc/init.d/apache2 start 731 | # /etc/init.d/apache2 restart 732 | # #COMMAND="systemctl restart ${APACHE}" 733 | # /etc/init.d/apache2 restart 734 | # #if ! systemctl enable ${APACHE}; then 735 | # if ! /etc/init.d/apache2 start; then 736 | # if ! systemctl start ${APACHE}; then 737 | # if ! /etc/init.d/apache2 start; then 738 | # 启动pgadmin4 web: 739 | # /usr/pgadmin4/bin/setup-web.sh --yes 740 | # 在主机查看80端口映射, docker inspect pg 741 | # 在主机chrome中打开 127.0.0.1:port/pgadmin 742 | # 注意pgadmin在docker容器中, 连接容器中的pg数据库地址是 127.0.0.1:1921 743 | # 拿泰森多边形练手: https://github.com/digoal/blog/blob/master/201904/20190421_01.md 744 | 745 | cd $TEMP_DIR 746 | git clone --depth 1 https://github.com/petere/pguint 747 | cd $TEMP_DIR/pguint 748 | USE_PGXS=1 make install 749 | 750 | cd $TEMP_DIR 751 | git clone --depth 1 -b v0.4.3 https://github.com/paradedb/paradedb 752 | cd $TEMP_DIR/paradedb/pg_sparse 753 | USE_PGXS=1 make install 754 | chmod 644 ./sql/svector--0.4.1.sql 755 | cp ./sql/svector--0.4.1.sql /usr/share/postgresql/14/extension/ 756 | 757 | cd $TEMP_DIR 758 | git clone --depth 1 https://github.com/bdrouvot/pg_subtrans_infos 759 | cd $TEMP_DIR/pg_subtrans_infos 760 | USE_PGXS=1 make install 761 | 762 | cd $TEMP_DIR 763 | git clone --depth 1 https://github.com/bdrouvot/pg_subxact_counters 764 | cd $TEMP_DIR/pg_subxact_counters/c 765 | USE_PGXS=1 make install 766 | 767 | cd $TEMP_DIR 768 | cp pg_idkit--0.2.1.sql /usr/share/postgresql/14/extension/ 769 | cp pg_idkit.control /usr/share/postgresql/14/extension/ 770 | cp pg_idkit.so /usr/lib/postgresql/14/lib/ 771 | 772 | cd $TEMP_DIR 773 | apt-get install -y build-essential libproj-dev libjson-c-dev libgsl-dev libgeos-dev 774 | git clone --depth 1 https://github.com/MobilityDB/MobilityDB 775 | cd $TEMP_DIR/MobilityDB 776 | mkdir build 777 | cd $TEMP_DIR/MobilityDB/build 778 | cmake .. 779 | make -j 4 780 | make install 781 | 782 | cd $TEMP_DIR 783 | cp pgdd--0.5.2.sql /usr/share/postgresql/14/extension/ 784 | cp pgdd.control /usr/share/postgresql/14/extension/ 785 | cp pgdd.so /usr/lib/postgresql/14/lib/ 786 | 787 | cd $TEMP_DIR 788 | git clone --depth 1 https://github.com/PGer/pipelinedb_pg14.git 789 | cd $TEMP_DIR/pipelinedb_pg14 790 | apt-get install -y libczmq4 libczmq-dev 791 | USE_PGXS=1 make install 792 | 793 | cd $TEMP_DIR 794 | git clone --depth 1 https://github.com/jaiminpan/pg_nanoid.git 795 | cd $TEMP_DIR/pg_nanoid 796 | USE_PGXS=1 make install 797 | 798 | cd $TEMP_DIR 799 | git clone --depth 1 https://github.com/andrielfn/pg-ulid.git 800 | cd $TEMP_DIR/pg-ulid 801 | USE_PGXS=1 make install 802 | 803 | cd $TEMP_DIR 804 | git clone --depth 1 https://github.com/phillbaker/pg_migrate.git 805 | cd $TEMP_DIR/pg_migrate/ 806 | USE_PGXS=1 make install 807 | 808 | cd $TEMP_DIR 809 | git clone --depth 1 https://github.com/df7cb/pg_filedump.git 810 | cd $TEMP_DIR/pg_filedump/ 811 | USE_PGXS=1 make install 812 | 813 | cd $TEMP_DIR 814 | git clone --depth 1 https://github.com/petere/pgpcre 815 | cd $TEMP_DIR/pgpcre 816 | USE_PGXS=1 make install 817 | 818 | cd $TEMP_DIR 819 | git clone --depth 1 https://github.com/omniti-labs/pg_jobmon 820 | cd $TEMP_DIR/pg_jobmon 821 | USE_PGXS=1 make install 822 | 823 | cd $TEMP_DIR 824 | git clone --depth 1 https://github.com/pgpartman/pg_partman 825 | cd $TEMP_DIR/pg_partman 826 | USE_PGXS=1 make install 827 | 828 | # rustup版本必须和plrust需要的rust版本一致, 这里是1.72.0 829 | su - postgres -c "export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static ; export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup ; curl --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --profile minimal --default-toolchain 1.72.0 --no-modify-path -y ; source /var/lib/postgresql/.cargo/env ; rustup component add rustc-dev" 830 | echo "source /var/lib/postgresql/.cargo/env" >> /var/lib/postgresql/.bash_profile 831 | dpkg -i /tmp/plrust-trusted-1.2.7_1.72.0-debian-pg14-amd64.deb 832 | 833 | cd $TEMP_DIR 834 | git clone --depth 1 https://gitee.com/seanguo_007/plpgsql_pg4ml.git 835 | cd $TEMP_DIR/plpgsql_pg4ml 836 | USE_PGXS=1 make install 837 | 838 | cd $TEMP_DIR 839 | cp pgmq--1.1.1.sql /usr/share/postgresql/14/extension/ 840 | cp pgmq.control /usr/share/postgresql/14/extension/ 841 | cp pgmq.so /usr/lib/postgresql/14/lib/ 842 | 843 | cd $TEMP_DIR 844 | cp pg_later--0.0.13.sql /usr/share/postgresql/14/extension/ 845 | cp pg_later.control /usr/share/postgresql/14/extension/ 846 | cp pg_later.so /usr/lib/postgresql/14/lib/ 847 | 848 | cd $TEMP_DIR 849 | cp vectorize--0.7.0.sql /usr/share/postgresql/14/extension/ 850 | cp vectorize.control /usr/share/postgresql/14/extension/ 851 | cp vectorize.so /usr/lib/postgresql/14/lib/ 852 | 853 | cd $TEMP_DIR 854 | git clone --depth 1 https://github.com/pgEdge/snowflake 855 | cd $TEMP_DIR/snowflake 856 | USE_PGXS=1 make install 857 | 858 | cd /usr/lib/postgresql/14 859 | git clone --depth 1 https://github.com/swida/sqlbench 860 | cd /usr/lib/postgresql/14/sqlbench 861 | autoreconf -if 862 | ./configure --with-postgresql="$PGHOME" 863 | C_INCLUDE_PATH=/usr/include/postgresql make 864 | C_INCLUDE_PATH=/usr/include/postgresql make install 865 | 866 | apt-get install -y libpcap-dev libnl-genl-3-dev 867 | cd /tmp 868 | git clone --depth 1 -b 8.4.0-stable https://github.com/ntop/PF_RING 869 | cd /tmp/PF_RING/userland/lib 870 | ./configure && make 871 | make install 872 | cd /tmp 873 | git clone --depth 1 https://github.com/heterodb/pg-strom 874 | cd /tmp/pg-strom/arrow-tools 875 | PG_CONFIG=/usr/lib/postgresql/14/bin/pg_config C_INCLUDE_PATH=/tmp/PF_RING/kernel make 876 | PG_CONFIG=/usr/lib/postgresql/14/bin/pg_config C_INCLUDE_PATH=/tmp/PF_RING/kernel make install 877 | 878 | cd /usr/lib/postgresql/14 879 | git clone --depth 1 https://github.com/apache/madlib 880 | cd /usr/lib/postgresql/14/madlib 881 | mkdir build 882 | cd /usr/lib/postgresql/14/madlib/build 883 | cmake .. 884 | make -j 4 885 | # $BUILD_ROOT/src/bin/madpack -s madlib -p postgres -c [user[/password]@][host][:port][/database] install 886 | -------------------------------------------------------------------------------- /pg14_amd64/4.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | echo "* soft nofile 1024000" >> /etc/security/limits.conf 5 | echo "* hard nofile 1024000" >> /etc/security/limits.conf 6 | echo "* soft nproc unlimited" >> /etc/security/limits.conf 7 | echo "* hard nproc unlimited" >> /etc/security/limits.conf 8 | echo "* soft core unlimited" >> /etc/security/limits.conf 9 | echo "* hard core unlimited" >> /etc/security/limits.conf 10 | echo "* soft memlock unlimited" >> /etc/security/limits.conf 11 | echo "* hard memlock unlimited" >> /etc/security/limits.conf 12 | -------------------------------------------------------------------------------- /pg14_amd64/5.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | export PG_HOME=/var/lib/postgresql 5 | . $PG_HOME/.bash_profile 6 | initdb -D $PGDATA -U postgres -E UTF8 --lc-collate=C --lc-ctype=en_US.UTF8 7 | 8 | cd $PGDATA 9 | echo "host all all 0.0.0.0/0 scram-sha-256" >> ./pg_hba.conf 10 | 11 | echo "listen_addresses = '0.0.0.0'" >> ./postgresql.auto.conf 12 | echo "port = 1921" >> ./postgresql.auto.conf 13 | echo "max_connections = 2000" >> ./postgresql.auto.conf 14 | echo "unix_socket_directories = '., /var/run/postgresql'" >> ./postgresql.auto.conf 15 | echo "shared_buffers = 128MB" >> ./postgresql.auto.conf 16 | echo "dynamic_shared_memory_type = posix" >> ./postgresql.auto.conf 17 | echo "vacuum_cost_delay = 0" >> ./postgresql.auto.conf 18 | echo "bgwriter_delay = 20ms" >> ./postgresql.auto.conf 19 | echo "bgwriter_lru_maxpages = 500" >> ./postgresql.auto.conf 20 | echo "bgwriter_lru_multiplier = 5.0" >> ./postgresql.auto.conf 21 | echo "max_parallel_workers_per_gather = 0" >> ./postgresql.auto.conf 22 | echo "synchronous_commit = off" >> ./postgresql.auto.conf 23 | echo "wal_compression = on" >> ./postgresql.auto.conf 24 | echo "wal_writer_delay = 10ms" >> ./postgresql.auto.conf 25 | echo "max_wal_size = 1GB " >> ./postgresql.auto.conf 26 | echo "min_wal_size = 80MB " >> ./postgresql.auto.conf 27 | echo "random_page_cost = 1.1" >> ./postgresql.auto.conf 28 | echo "log_destination = 'csvlog'" >> ./postgresql.auto.conf 29 | echo "logging_collector = on" >> ./postgresql.auto.conf 30 | echo "log_truncate_on_rotation = on" >> ./postgresql.auto.conf 31 | echo "log_timezone = 'Etc/UTC' " >> ./postgresql.auto.conf 32 | echo "autovacuum = on" >> ./postgresql.auto.conf 33 | echo "autovacuum_vacuum_cost_delay = 0ms" >> ./postgresql.auto.conf 34 | echo "vacuum_freeze_table_age = 750000000 " >> ./postgresql.auto.conf 35 | echo "vacuum_multixact_freeze_table_age = 750000000 " >> ./postgresql.auto.conf 36 | echo "datestyle = 'iso, mdy' " >> ./postgresql.auto.conf 37 | echo "timezone = 'Etc/UTC' " >> ./postgresql.auto.conf 38 | echo "lc_messages = 'en_US.UTF-8'" >> ./postgresql.auto.conf 39 | echo "lc_monetary = 'en_US.UTF-8'" >> ./postgresql.auto.conf 40 | echo "lc_numeric = 'en_US.UTF-8'" >> ./postgresql.auto.conf 41 | echo "lc_time = 'en_US.UTF-8'" >> ./postgresql.auto.conf 42 | echo "default_text_search_config = 'pg_catalog.english'" >> ./postgresql.auto.conf 43 | -------------------------------------------------------------------------------- /pg14_amd64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=$TARGETPLATFORM debian:11.7 2 | MAINTAINER digoal zhou "dege.zzz@alibaba-inc.com" 3 | ARG TARGETPLATFORM 4 | ARG BUILDPLATFORM 5 | RUN echo "I am running on $BUILDPLATFORM, building for $TARGETPLATFORM" 6 | ENV DEBIAN_FRONTEND=noninteractive TEMP_DIR=/tmp ROOT_HOME=/root PG_HOME=/var/lib/postgresql PG_DATA=/var/lib/postgresql/14/pgdata PGHOME=/usr/lib/postgresql/14 7 | STOPSIGNAL SIGINT 8 | COPY --chmod=555 1.sh 2.sh 3.sh 4.sh 5.sh $TEMP_DIR/ 9 | COPY GraphBLAS-3.1.1.tar.gz libduckdb-linux-amd64.zip duckdb_cli-linux-amd64.zip cmake-3.27.4.tar.gz mongo-c-driver-1.17.3.tar.gz json-c-0.15-20200726.tar.gz pg_tiktoken--0.0.1.sql pg_tiktoken.control pg_tiktoken.so lantern_extras--0.0.3.sql lantern_extras.control lantern_extras.so lantern-cli onnxruntime-linux-x64-1.15.1.tgz node-v14.21.3.tar.gz pg_bm25.control pg_bm25.so pg_bm25--0.4.3.sql pg_search.control pg_search.so pg_search--0.0.0.sql pg_sparse.so pg_sparse.control pg_sparse--0.0.0.sql pg_task.so pg_task.index.bc pg_task.control pg_task--1.0.sql pg_idkit--0.2.1.sql pg_idkit.control pg_idkit.so pgdd--0.5.2.sql pgdd.control pgdd.so pghero_3.4.0-1701207987.0382b812.bullseye_amd64.deb plrust-trusted-1.2.7_1.72.0-debian-pg14-amd64.deb pgroll pgmq.control pgmq--1.1.1.sql pgmq.so pg_later.control pg_later.so pg_later--0.0.13.sql vectorize.control vectorize.so vectorize--0.7.0.sql $TEMP_DIR/ 10 | RUN mkdir /tmp/pg_task 11 | COPY pg_task /tmp/pg_task 12 | 13 | RUN $TEMP_DIR/1.sh 14 | RUN $TEMP_DIR/2.sh 15 | RUN $TEMP_DIR/3.sh 16 | 17 | # WORKDIR $TEMP_DIR 18 | # RUN apt install -y libtinfo5 build-essential ninja-build python3 19 | # RUN git clone --depth 1 -b v3.1.7 https://github.com/plv8/plv8 20 | # WORKDIR $TEMP_DIR/plv8 21 | # RUN USE_ICU=1 USE_PGXS=1 make 22 | # RUN USE_ICU=1 USE_PGXS=1 make install 23 | # 24 | # WORKDIR $TEMP_DIR 25 | # RUN git clone --depth 1 -b apache-arrow-12.0.1 https://github.com/apache/arrow.git 26 | # WORKDIR $TEMP_DIR/arrow/cpp 27 | # RUN mkdir build-release 28 | # WORKDIR $TEMP_DIR/arrow/cpp/build-release 29 | # RUN cmake -DARROW_DEPENDENCY_SOURCE=BUNDLED .. 30 | # RUN make -j4 31 | # RUN make install 32 | # 33 | # WORKDIR $TEMP_DIR 34 | # RUN apt install -y libcurl4-openssl-dev uuid-dev libpulse-dev 35 | # RUN git clone --depth 1 -b 1.9.263 https://github.com/aws/aws-sdk-cpp 36 | # WORKDIR $TEMP_DIR/aws-sdk-cpp 37 | # RUN git submodule update --init --recursive --depth 1 38 | # RUN mkdir build 39 | # WORKDIR $TEMP_DIR/aws-sdk-cpp/build 40 | # RUN cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_ONLY="s3;core" 41 | # RUN make -j4 42 | # RUN make install 43 | # 44 | # WORKDIR $TEMP_DIR 45 | # RUN git clone --depth 1 -b v1.0.0 https://github.com/pgspider/parquet_s3_fdw 46 | # WORKDIR $TEMP_DIR/parquet_s3_fdw 47 | # RUN PG_CPPFLAGS="-Wno-register -D_GLIBCXX_USE_CXX11_ABI=0" USE_PGXS=1 make 48 | # RUN PG_CPPFLAGS="-std=c++17 -Wno-register -D_GLIBCXX_USE_CXX11_ABI=0" USE_PGXS=1 make 49 | # RUN PG_CPPFLAGS="-std=c++17 -Wno-register -D_GLIBCXX_USE_CXX11_ABI=0" USE_PGXS=1 make install 50 | # RUN echo "/usr/local/lib" >>/etc/ld.so.conf 51 | # RUN ldconfig 52 | 53 | 54 | ENV ORACLE_BASE /usr/lib/postgresql/14/lib 55 | WORKDIR $ORACLE_BASE 56 | COPY instantclient_12_2/libclntsh.so.12.1 . 57 | RUN ln -s libclntsh.so.12.1 libclntsh.so 58 | RUN mkdir -p oracle/network/admin 59 | COPY instantclient_12_2 ./oracle 60 | RUN echo "export LD_LIBRARY_PATH=\$PGHOME/lib/oracle:\$LD_LIBRARY_PATH" >>$PG_HOME/.bash_profile 61 | RUN echo "export ORACLE_HOME=\$PGHOME/lib/oracle" >>$PG_HOME/.bash_profile 62 | RUN echo "export TNS_ADMIN=\$ORACLE_HOME/network/admin/" >>$PG_HOME/.bash_profile 63 | RUN echo "export LD_LIBRARY_PATH=\$PGHOME/lib/oracle:\$LD_LIBRARY_PATH" >>$ROOT_HOME/.bashrc 64 | RUN echo "export ORACLE_HOME=\$PGHOME/lib/oracle" >>$ROOT_HOME/.bashrc 65 | RUN echo "export TNS_ADMIN=\$ORACLE_HOME/network/admin/" >>$ROOT_HOME/.bashrc 66 | RUN . $ROOT_HOME/.bashrc 67 | 68 | RUN echo "/usr/lib/postgresql/14/lib/oracle" >> /etc/ld.so.conf 69 | RUN echo "/usr/local/lib" >> /etc/ld.so.conf 70 | RUN echo "/usr/lib/postgresql/14/lib" >> /etc/ld.so.conf 71 | RUN ldconfig 72 | 73 | WORKDIR $TEMP_DIR 74 | # RUN apt install -y libsqlite3-dev 75 | RUN git clone --depth 1 https://github.com/ossc-db/dblink_plus 76 | WORKDIR $TEMP_DIR/dblink_plus 77 | RUN cp -r /usr/lib/postgresql/14/lib/oracle/sdk/include/* ./ 78 | RUN PG_CFLAGS=-I/usr/lib/postgresql/14/lib/oracle/sdk/include PG_LDFLAGS=-L/usr/lib/postgresql/14/lib/oracle USE_PGXS=1 make 79 | RUN PG_CFLAGS=-I/usr/lib/postgresql/14/lib/oracle/sdk/include PG_LDFLAGS=-L/usr/lib/postgresql/14/lib/oracle USE_PGXS=1 make install 80 | 81 | # RUN rm -rf $TEMP_DIR/* 82 | 83 | RUN $TEMP_DIR/4.sh 84 | 85 | USER postgres 86 | RUN $TEMP_DIR/5.sh 87 | 88 | WORKDIR $PG_HOME 89 | # RUN wget -T 36000 -t 0 --waitretry=5 https://github.com/duckdb/duckdb/releases/download/v0.9.2/duckdb_cli-linux-amd64.zip 90 | # RUN curl -Z --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -L https://github.com/duckdb/duckdb/releases/download/v0.9.2/duckdb_cli-linux-amd64.zip -o duckdb_cli-linux-amd64.zip 91 | RUN cp $TEMP_DIR/duckdb_cli-linux-amd64.zip $PG_HOME/ 92 | RUN unzip -d . duckdb_cli-linux-amd64.zip 93 | 94 | RUN cp $TEMP_DIR/pgroll $PG_HOME/ 95 | 96 | USER root 97 | WORKDIR $ROOT_HOME 98 | 99 | EXPOSE 1921 100 | EXPOSE 3000 101 | EXPOSE 8080 102 | EXPOSE 80 103 | EXPOSE 3306 104 | ENTRYPOINT ["su", "-", "postgres", "-c", "/usr/lib/postgresql/14/bin/postgres -D \"/var/lib/postgresql/14/pgdata\""] 105 | -------------------------------------------------------------------------------- /pg14_arm64/.dockerignore: -------------------------------------------------------------------------------- 1 | logs/ 2 | -------------------------------------------------------------------------------- /pg14_arm64/1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | cd /tmp 5 | sed -i "s@http://\(deb\|security\).debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list 6 | apt-get update 7 | apt-get reinstall -y apt-transport-https ca-certificates 8 | sed -i "s@http://mirrors.aliyun.com@https://mirrors.aliyun.com@g" /etc/apt/sources.list 9 | apt-get update 10 | apt-get install -y lsb-release wget vim man 11 | 12 | # RUN echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list 13 | echo "deb https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list 14 | apt-get install -y gnupg2 15 | 16 | # RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - 17 | wget --quiet -O - https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ACCC4CF8.asc | apt-key add - 18 | apt-get update 19 | apt-get install -y locales 20 | localedef -i en_US -f UTF-8 en_US.UTF-8 21 | 22 | apt-get install -y curl libicu-dev icu-devtools libbison-dev libfl-dev git libreadline-dev libedit-dev g++ make cmake man-db dnsutils clang libssl-dev default-jdk strace gdb libsqlite3-dev lsof blktrace 23 | apt-get install -y unixodbc unixodbc-dev bash-completion m4 python3-distutils python glibc-source zlib1g-dev pkg-config default-jre openjdk-17-jdk openjdk-17-jdk-headless 24 | apt-get install -y postgresql-14 postgresql-client-14 postgresql-server-dev-14 postgresql-doc-14 25 | apt-get install -y postgresql-14-dirtyread postgresql-14-extra-window-functions postgresql-14-first-last-agg postgresql-14-hll postgresql-14-hypopg 26 | apt-get install -y postgresql-14-ip4r postgresql-14-mysql-fdw postgresql-14-jsquery postgresql-14-ogr-fdw postgresql-14-oracle-fdw postgresql-14-pgmemcache 27 | apt-get install -y postgresql-14-pljava postgresql-14-pllua postgresql-14-plpgsql-check postgresql-14-plproxy postgresql-14-prefix postgresql-14-rational 28 | apt-get install -y postgresql-14-rdkit postgresql-14-orafce postgresql-14-pg-qualstats postgresql-14-pg-stat-kcache 29 | apt-get install -y postgresql-14-pg-wait-sampling postgresql-14-pgfincore postgresql-14-pgaudit postgresql-14-pgpool2 postgresql-14-pgrouting postgresql-14-pgrouting-doc 30 | apt-get install -y postgresql-14-pgrouting-scripts postgresql-14-pgsphere postgresql-14-pgvector postgresql-14-pldebugger postgresql-14-pointcloud postgresql-14-plr 31 | apt-get install -y postgresql-14-postgis-3 postgresql-14-postgis-3-scripts postgresql-14-powa powa-collector postgresql-14-q3c postgresql-14-repack 32 | apt-get install -y postgresql-14-rum postgresql-14-show-plans postgresql-14-similarity postgresql-14-tablelog postgresql-14-tdigest postgresql-14-wal2json 33 | apt-get install -y postgresql-14-tds-fdw postgresql-14-plprofiler postgresql-14-cron 34 | apt-get install -y pgagroal pgpool2 pgbouncer pgxnclient pgagent postgresql-plpython3-14 postgresql-14-icu-ext libpq-dev pgreplay pgbackrest pgbackrest-doc elephant-shed-pgbackrest 35 | 36 | echo "deb https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -c -s) main" | tee /etc/apt/sources.list.d/timescaledb.list 37 | wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | gpg --dearmor -o /etc/apt/trusted.gpg.d/timescaledb.gpg 38 | apt-get update 39 | apt-get install -y timescaledb-2-postgresql-14 timescaledb-toolkit-postgresql-14 timescaledb-2-loader-postgresql-14 40 | 41 | wget https://packages.groonga.org/debian/groonga-apt-source-latest-bullseye.deb 42 | apt-get install -y -V ./groonga-apt-source-latest-bullseye.deb 43 | apt-get update 44 | apt-get install -y postgresql-14-pgdg-pgroonga 45 | 46 | apt-get install -y postgresql-14-credcheck postgresql-14-decoderbufs postgresql-14-mimeo postgresql-14-pgmp postgresql-14-preprepare postgresql-14-prioritize postgresql-14-squeeze postgresql-14-toastinfo postgresql-14-unit pgbadger pg-auto-failover-cli postgresql-14-auto-failover net-tools apt-utils ora2pg pgloader postgresql-14-partman 47 | 48 | # 包安装方式暂不支持ARM架构 49 | # https://dev.mysql.com/downloads/repo/apt/ 50 | # cd /tmp 51 | # wget -T 36000 -t 0 --waitretry=5 https://repo.mysql.com//mysql-apt-config_0.8.28-1_all.deb 52 | # dpkg -i mysql-apt-config_0.8.28-1_all.deb 53 | # apt-get update 54 | # apt-get install -y mysql-server 55 | -------------------------------------------------------------------------------- /pg14_arm64/2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | export ROOT_HOME=/root 5 | echo "# add by digoal" >>$ROOT_HOME/.bashrc 6 | echo "alias rm='rm -i'" >>$ROOT_HOME/.bashrc 7 | echo "alias cp='cp -i'" >>$ROOT_HOME/.bashrc 8 | echo "alias ll='ls -larth'" >>$ROOT_HOME/.bashrc 9 | echo "alias mv='mv -i'" >>$ROOT_HOME/.bashrc 10 | echo "export PGHOME=/usr/lib/postgresql/14" >>$ROOT_HOME/.bashrc 11 | echo "export PATH=\$PGHOME/bin:\$PATH" >>$ROOT_HOME/.bashrc 12 | echo "export LD_LIBRARY_PATH=\$PGHOME/lib:/usr/local/lib:/usr/lib/aarch64-linux-gnu:\$LD_LIBRARY_PATH" >>$ROOT_HOME/.bashrc 13 | echo "export PGDATA=/var/lib/postgresql/14/pgdata" >>$ROOT_HOME/.bashrc 14 | echo "export PGUSER=postgres" >>$ROOT_HOME/.bashrc 15 | echo "export PGHOST=\$PGDATA" >>$ROOT_HOME/.bashrc 16 | echo "export PGPORT=1921" >>$ROOT_HOME/.bashrc 17 | echo "export PGDATABASE=postgres" >>$ROOT_HOME/.bashrc 18 | echo "export LC_ALL=en_US.UTF-8" >>$ROOT_HOME/.bashrc 19 | . $ROOT_HOME/.bashrc 20 | 21 | export PG_HOME=/var/lib/postgresql 22 | echo "# add by digoal" >>$PG_HOME/.bash_profile 23 | echo "alias rm='rm -i'" >>$PG_HOME/.bash_profile 24 | echo "alias cp='cp -i'" >>$PG_HOME/.bash_profile 25 | echo "alias ll='ls -larth'" >>$PG_HOME/.bash_profile 26 | echo "alias mv='mv -i'" >>$PG_HOME/.bash_profile 27 | echo "export PGHOME=/usr/lib/postgresql/14" >>$PG_HOME/.bash_profile 28 | echo "export PATH=\$PGHOME/bin:\$PATH" >>$PG_HOME/.bash_profile 29 | echo "export LD_LIBRARY_PATH=\$PGHOME/lib:/usr/local/lib:/usr/lib/aarch64-linux-gnu:\$LD_LIBRARY_PATH" >>$PG_HOME/.bash_profile 30 | echo "export PGDATA=/var/lib/postgresql/14/pgdata" >>$PG_HOME/.bash_profile 31 | echo "export PGUSER=postgres" >>$PG_HOME/.bash_profile 32 | echo "export PGHOST=\$PGDATA" >>$PG_HOME/.bash_profile 33 | echo "export PGPORT=1921" >>$PG_HOME/.bash_profile 34 | echo "export PGDATABASE=postgres" >>$PG_HOME/.bash_profile 35 | echo "export LC_ALL=en_US.UTF-8" >>$PG_HOME/.bash_profile 36 | 37 | echo ". ~/.bash_profile" > $PG_HOME/.profile 38 | chown postgres:postgres $PG_HOME/.bash_profile 39 | chown postgres:postgres $PG_HOME/.profile 40 | -------------------------------------------------------------------------------- /pg14_arm64/3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | export ROOT_HOME=/root 5 | . $ROOT_HOME/.bashrc 6 | 7 | export TEMP_DIR=/tmp 8 | cd $TEMP_DIR 9 | git clone --depth 1 https://github.com/jaiminpan/pg_jieba 10 | cd $TEMP_DIR/pg_jieba 11 | git submodule update --init --recursive --depth 1 12 | mkdir build 13 | cd $TEMP_DIR/pg_jieba/build 14 | cmake -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/14/server .. 15 | make && make install 16 | 17 | cd $TEMP_DIR 18 | git clone --depth 1 https://github.com/ChenHuajun/pg_roaringbitmap 19 | cd $TEMP_DIR/pg_roaringbitmap 20 | USE_PGXS=1 make 21 | USE_PGXS=1 make install 22 | 23 | cd $TEMP_DIR 24 | git clone --depth 1 https://github.com/theirix/parray_gin 25 | cd $TEMP_DIR/parray_gin 26 | USE_PGXS=1 make 27 | USE_PGXS=1 make install 28 | 29 | cd $TEMP_DIR 30 | git clone --depth 1 https://github.com/jirutka/smlar 31 | cd $TEMP_DIR/smlar 32 | USE_PGXS=1 make 33 | USE_PGXS=1 make install 34 | 35 | cd $TEMP_DIR 36 | git clone --depth 1 https://github.com/alitrack/duckdb_fdw 37 | # 14版本 bug fix 之前 38 | # git clone https://github.com/alitrack/duckdb_fdw 39 | cd $TEMP_DIR/duckdb_fdw 40 | # git checkout 87c66cf04243c7bc43e0e75d0b8ce5dd76d81cd5 41 | # wget -T 36000 -t 0 --waitretry=5 https://github.com/duckdb/duckdb/releases/download/v0.9.2/libduckdb-linux-aarch64.zip 42 | # curl -Z --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -L https://github.com/duckdb/duckdb/releases/download/v0.9.2/libduckdb-linux-aarch64.zip -o libduckdb-linux-aarch64.zip 43 | cp $TEMP_DIR/libduckdb-linux-aarch64.zip $TEMP_DIR/duckdb_fdw/ 44 | unzip -n -d . libduckdb-linux-aarch64.zip 45 | cp libduckdb.so $(pg_config --libdir) 46 | USE_PGXS=1 make 47 | USE_PGXS=1 make install 48 | 49 | cd $TEMP_DIR 50 | git clone --depth 1 https://github.com/EnterpriseDB/hdfs_fdw 51 | cd $TEMP_DIR/hdfs_fdw/libhive 52 | JAVA_HOME=/usr/lib/jvm/java-17-openjdk-arm64 JDK_INCLUDE=$JAVA_HOME/include INSTALL_DIR=/usr/lib/postgresql/14/lib PATH=/usr/lib/postgresql/14/bin:$PATH make 53 | JAVA_HOME=/usr/lib/jvm/java-17-openjdk-arm64 JDK_INCLUDE=$JAVA_HOME/include INSTALL_DIR=/usr/lib/postgresql/14/lib PATH=/usr/lib/postgresql/14/bin:$PATH make install 54 | 55 | cd $TEMP_DIR/hdfs_fdw/libhive/jdbc 56 | javac MsgBuf.java 57 | javac HiveJdbcClient.java 58 | jar cf HiveJdbcClient-1.0.jar *.class 59 | cp HiveJdbcClient-1.0.jar /usr/lib/postgresql/14/lib 60 | 61 | cd $TEMP_DIR/hdfs_fdw 62 | JAVA_HOME=/usr/lib/jvm/java-17-openjdk-arm64 JDK_INCLUDE=$JAVA_HOME/include INSTALL_DIR=/usr/lib/postgresql/14/lib PATH=/usr/lib/postgresql/14/bin:$PATH USE_PGXS=1 make 63 | JAVA_HOME=/usr/lib/jvm/java-17-openjdk-arm64 JDK_INCLUDE=$JAVA_HOME/include INSTALL_DIR=/usr/lib/postgresql/14/lib PATH=/usr/lib/postgresql/14/bin:$PATH USE_PGXS=1 make install 64 | 65 | cd $TEMP_DIR 66 | git clone --depth 1 https://gitlab.com/dalibo/postgresql_anonymizer.git 67 | cd $TEMP_DIR/postgresql_anonymizer 68 | make extension 69 | make install 70 | 71 | cd $TEMP_DIR 72 | git clone --depth 1 --branch stable https://github.com/jedisct1/libsodium 73 | cd $TEMP_DIR/libsodium 74 | ./configure 75 | make 76 | make check 77 | make install 78 | 79 | cd $TEMP_DIR 80 | git clone --depth 1 https://github.com/michelp/pgsodium 81 | cd $TEMP_DIR/pgsodium 82 | C_INCLUDE_PATH=/usr/include/postgresql/14/server PG_LDFLAGS=-L/usr/lib/postgresql/14/lib USE_PGXS=1 make 83 | C_INCLUDE_PATH=/usr/include/postgresql/14/server PG_LDFLAGS=-L/usr/lib/postgresql/14/lib USE_PGXS=1 make install 84 | 85 | cd $TEMP_DIR 86 | wget -T 36000 -t 0 --waitretry=5 https://github.com/libgd/libgd/archive/refs/tags/gd-2.3.3.tar.gz 87 | tar -zxvf gd-2.3.3.tar.gz 88 | cd $TEMP_DIR/libgd-gd-2.3.3 89 | mkdir build 90 | cd $TEMP_DIR/libgd-gd-2.3.3/build 91 | cmake .. 92 | make install 93 | 94 | cd $TEMP_DIR 95 | git clone --depth 1 https://github.com/digoal/imgsmlr 96 | # git clone --depth 1 https://github.com/postgrespro/imgsmlr 97 | cd $TEMP_DIR/imgsmlr 98 | USE_PGXS=1 make 99 | USE_PGXS=1 make install 100 | 101 | cd $TEMP_DIR 102 | git clone --depth 1 https://github.com/postgrespro/vops 103 | cd $TEMP_DIR/vops 104 | USE_PGXS=1 make 105 | USE_PGXS=1 make install 106 | 107 | cd $TEMP_DIR 108 | git clone --depth 1 -b PG14 https://github.com/ossc-db/pg_hint_plan 109 | cd $TEMP_DIR/pg_hint_plan 110 | USE_PGXS=1 make 111 | USE_PGXS=1 make install 112 | 113 | cd $TEMP_DIR 114 | apt-get install -y libselinux1-dev libpam0g-dev libkrb5-dev liblz4-dev 115 | git clone --depth 1 https://github.com/ossc-db/pg_bulkload 116 | cd $TEMP_DIR/pg_bulkload 117 | USE_PGXS=1 make 118 | USE_PGXS=1 make install 119 | 120 | cd $TEMP_DIR 121 | git clone --depth 1 -b 1.6.1 https://github.com/ossc-db/pg_store_plans 122 | cd $TEMP_DIR/pg_store_plans 123 | USE_PGXS=1 make 124 | USE_PGXS=1 make install 125 | 126 | # cd $TEMP_DIR 127 | # git clone --depth 1 -b REL-5_5_1 https://github.com/EnterpriseDB/mongo_fdw 128 | # cd $TEMP_DIR/mongo_fdw 129 | # ./autogen.sh --with-master 130 | # apt-get install -y libmongoc-dev 131 | # # C_INCLUDE_PATH="/include/libmongoc-1.0/mongoc:/include/libbson-1.0" USE_PGXS=1 make 132 | # # C_INCLUDE_PATH="/include/libmongoc-1.0/mongoc:/include/libbson-1.0" USE_PGXS=1 make install 133 | # USE_PGXS=1 make 134 | # USE_PGXS=1 make install 135 | 136 | cd $TEMP_DIR 137 | git clone --depth 1 -b REL-5_5_1 https://github.com/EnterpriseDB/mongo_fdw 138 | cd $TEMP_DIR/mongo_fdw 139 | cp $TEMP_DIR/mongo-c-driver-1.17.3.tar.gz ./ 140 | tar -xzvf mongo-c-driver-1.17.3.tar.gz 141 | rm -rf mongo-c-driver 142 | mv mongo-c-driver-1.17.3 mongo-c-driver 143 | cd $TEMP_DIR/mongo_fdw/mongo-c-driver 144 | cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DENABLE_SSL=AUTO . 145 | make install 146 | 147 | cd $TEMP_DIR/mongo_fdw 148 | cp $TEMP_DIR/json-c-0.15-20200726.tar.gz ./ 149 | tar -xzvf json-c-0.15-20200726.tar.gz 150 | rm -rf json-c 151 | mv json-c-json-c-0.15-20200726 json-c 152 | cd $TEMP_DIR/mongo_fdw/json-c 153 | cmake . 154 | make -j 2 155 | make install 156 | 157 | apt-get install -y libmongoc-dev 158 | 159 | cd $TEMP_DIR/mongo_fdw 160 | echo "#ifdef __CONFIG__" >> config.h 161 | echo "#define META_DRIVER" >> config.h 162 | echo "#endif" >> config.h 163 | export PKG_CONFIG_PATH=mongo-c-driver/src/libmongoc/src:mongo-c-driver/src/libbson/src 164 | mv Makefile Makefile.origin 165 | cp Makefile.meta Makefile 166 | # C_INCLUDE_PATH="/include/libmongoc-1.0/mongoc:/include/libbson-1.0" USE_PGXS=1 make 167 | # C_INCLUDE_PATH="/include/libmongoc-1.0/mongoc:/include/libbson-1.0" USE_PGXS=1 make install 168 | USE_PGXS=1 make 169 | USE_PGXS=1 make install 170 | 171 | cd $TEMP_DIR 172 | git clone --depth 1 https://github.com/neondatabase/neon 173 | cd $TEMP_DIR/neon/pgxn/hnsw 174 | USE_PGXS=1 make 175 | USE_PGXS=1 make install 176 | 177 | # cd $TEMP_DIR 178 | # curl https://install.citusdata.com/community/deb.sh > add-citus-repo.sh 179 | # bash add-citus-repo.sh 180 | # apt-get install -y postgresql-14-citus-12 181 | # Unfortunately, the Citus repository does not contain packages for non-x86_64 architectures. 182 | 183 | apt-get install -y libzstd-dev libxslt1-dev libxml2-dev libcurl-ocaml-dev 184 | cd $TEMP_DIR 185 | git clone --depth 1 https://github.com/citusdata/citus 186 | cd $TEMP_DIR/citus 187 | ./autogen.sh 188 | ./configure 189 | make -j8 190 | make install 191 | 192 | cd $TEMP_DIR 193 | apt-get install -y libboost-all-dev 194 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/datasketches/1.7.0/datasketches-1.7.0.zip 195 | unzip datasketches-1.7.0.zip 196 | cd $TEMP_DIR/datasketches-1.7.0 197 | USE_PGXS=1 make 198 | USE_PGXS=1 make install 199 | 200 | cd $TEMP_DIR 201 | # get GraphBLAS, compile with debug symbols 202 | # curl -Z --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -L http://faculty.cse.tamu.edu/davis/GraphBLAS/GraphBLAS-3.1.1.tar.gz -o GraphBLAS-3.1.1.tar.gz 203 | tar -zxvf GraphBLAS-3.1.1.tar.gz 204 | cd GraphBLAS-3.1.1 205 | make library CMAKE_OPTIONS='-DCMAKE_BUILD_TYPE=Debug' 206 | make install 207 | cd $TEMP_DIR 208 | git clone --depth 1 --branch 22July2019 https://github.com/GraphBLAS/LAGraph.git && cd LAGraph && make -j4 library && make install 209 | cd $TEMP_DIR 210 | curl --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -s -L https://github.com/theory/pgtap/archive/v0.99.0.tar.gz | tar zxvf - && cd pgtap-0.99.0 && make -j4 && make install 211 | 212 | cd $TEMP_DIR 213 | git clone --depth 1 https://github.com/michelp/pggraphblas 214 | cd $TEMP_DIR/pggraphblas 215 | USE_PGXS=1 make 216 | USE_PGXS=1 make install 217 | 218 | cd $TEMP_DIR 219 | git clone --depth 1 -b REL1_2_STABLE https://github.com/pgbigm/pg_bigm 220 | cd $TEMP_DIR/pg_bigm 221 | USE_PGXS=1 make 222 | USE_PGXS=1 make install 223 | 224 | cd $TEMP_DIR 225 | git clone --depth 1 https://github.com/percona/pg_stat_monitor 226 | cd $TEMP_DIR/pg_stat_monitor 227 | USE_PGXS=1 make 228 | USE_PGXS=1 make install 229 | 230 | cd $TEMP_DIR 231 | git clone --depth 1 https://github.com/neondatabase/pg_embedding 232 | cd $TEMP_DIR/pg_embedding 233 | USE_PGXS=1 make 234 | USE_PGXS=1 make install 235 | 236 | cd $TEMP_DIR 237 | git clone --depth 1 https://github.com/cybertec-postgresql/pgfaceting 238 | cd $TEMP_DIR/pgfaceting 239 | USE_PGXS=1 make install 240 | 241 | cd $TEMP_DIR 242 | git clone --depth 1 https://github.com/pgexperts/pg_plan_filter 243 | cd $TEMP_DIR/pg_plan_filter 244 | USE_PGXS=1 make install 245 | 246 | cd $TEMP_DIR 247 | git clone --depth 1 https://github.com/postgrespro/pg_variables 248 | cd $TEMP_DIR/pg_variables 249 | USE_PGXS=1 make install 250 | 251 | cd $TEMP_DIR 252 | apt-get install -y libcurl-ocaml-dev 253 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_curl/2.2.2/pg_curl-2.2.2.zip 254 | unzip pg_curl-2.2.2.zip 255 | cd $TEMP_DIR/pg_curl-2.2.2 256 | USE_PGXS=1 make install 257 | 258 | cd $TEMP_DIR 259 | apt-get install -y systemtap-sdt-dev 260 | mkdir -p /usr/lib/postgresql/14/lib 261 | mkdir -p /usr/lib/postgresql/14/lib/bitcode 262 | mkdir -p /usr/share/postgresql/14/extension 263 | mv pg_task.so /usr/lib/postgresql/14/lib/ 264 | mv pg_task.index.bc /usr/lib/postgresql/14/lib/bitcode/ 265 | mv pg_task /usr/lib/postgresql/14/lib/bitcode/ 266 | mv pg_task.control /usr/share/postgresql/14/extension/ 267 | mv pg_task--1.0.sql /usr/share/postgresql/14/extension/ 268 | cd $TEMP_DIR 269 | git clone --depth 1 -b extension https://github.com/RekGRpth/pg_task 270 | # OR 271 | # git clone --depth 1 -b extension https://github.com/RekGRpth/pg_task 272 | # cd $TEMP_DIR/pg_task 273 | # USE_PGXS=1 make install 274 | # OR 275 | # wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_task/2.0.41/pg_task-2.0.41.zip 276 | # unzip pg_task-2.0.41.zip 277 | # cd $TEMP_DIR/pg_task-2.0.41 278 | # USE_PGXS=1 make install 279 | 280 | cd $TEMP_DIR 281 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/temporal_tables/1.2.2/temporal_tables-1.2.2.zip 282 | unzip temporal_tables-1.2.2.zip 283 | cd $TEMP_DIR/temporal_tables-1.2.2 284 | USE_PGXS=1 make install 285 | 286 | cd $TEMP_DIR 287 | git clone --depth 1 -b v3.1 https://github.com/darold/pgtt 288 | cd $TEMP_DIR/pgtt 289 | USE_PGXS=1 make install 290 | 291 | cd $TEMP_DIR 292 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_query_rewrite/0.0.5/pg_query_rewrite-0.0.5.zip 293 | unzip pg_query_rewrite-0.0.5.zip 294 | cd $TEMP_DIR/pg_query_rewrite-0.0.5 295 | USE_PGXS=1 make install 296 | 297 | cd $TEMP_DIR 298 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_track_settings/2.1.2/pg_track_settings-2.1.2.zip 299 | unzip pg_track_settings-2.1.2.zip 300 | cd $TEMP_DIR/pg_track_settings-2.1.2 301 | USE_PGXS=1 make install 302 | 303 | cd $TEMP_DIR 304 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/aggs_for_vecs/1.3.0/aggs_for_vecs-1.3.0.zip 305 | unzip aggs_for_vecs-1.3.0.zip 306 | cd $TEMP_DIR/aggs_for_vecs-1.3.0 307 | USE_PGXS=1 make install 308 | 309 | cd $TEMP_DIR 310 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/quantile/1.1.7/quantile-1.1.7.zip 311 | unzip quantile-1.1.7.zip 312 | cd $TEMP_DIR/quantile-1.1.7 313 | USE_PGXS=1 make install 314 | 315 | cd $TEMP_DIR 316 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_utility_trigger_functions/1.9.1/pg_utility_trigger_functions-1.9.1.zip 317 | unzip pg_utility_trigger_functions-1.9.1.zip 318 | cd $TEMP_DIR/pg_utility_trigger_functions-1.9.1 319 | USE_PGXS=1 make install 320 | 321 | cd $TEMP_DIR 322 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pg_safer_settings/0.8.10/pg_safer_settings-0.8.10.zip 323 | unzip pg_safer_settings-0.8.10.zip 324 | cd $TEMP_DIR/pg_safer_settings-0.8.10 325 | USE_PGXS=1 make install 326 | 327 | cd $TEMP_DIR 328 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/ddlx/0.27.0/ddlx-0.27.0.zip 329 | unzip ddlx-0.27.0.zip 330 | cd $TEMP_DIR/ddlx-0.27.0 331 | USE_PGXS=1 make install 332 | 333 | cd $TEMP_DIR 334 | wget -T 36000 -t 0 --waitretry=5 https://api.pgxn.org/dist/pgtelemetry/1.6.0/pgtelemetry-1.6.0.zip 335 | unzip pgtelemetry-1.6.0.zip 336 | cd $TEMP_DIR/pgtelemetry-1.6.0 337 | USE_PGXS=1 make install 338 | 339 | cd $TEMP_DIR 340 | git clone --depth 1 -b REL14_0 https://github.com/ossc-db/pg_dbms_stats 341 | cd $TEMP_DIR/pg_dbms_stats 342 | USE_PGXS=1 make install 343 | 344 | cd $TEMP_DIR 345 | apt-get install -y libzlcore-dev 346 | git clone --depth 1 -b REL_14_STABLE https://github.com/ossc-db/pg_rman 347 | cd $TEMP_DIR/pg_rman 348 | make install 349 | 350 | # http://sigaev.ru/ 和 http://www.sigaev.ru/git/gitweb.cgi 需要开网络授权, 否则无法访问导致build image报错. 351 | cd $TEMP_DIR 352 | git clone --depth 1 git://sigaev.ru/online_analyze 353 | cd $TEMP_DIR/online_analyze/ 354 | USE_PGXS=1 make 355 | USE_PGXS=1 make install 356 | 357 | # http://sigaev.ru/ 和 http://www.sigaev.ru/git/gitweb.cgi 需要开网络授权, 否则无法访问导致build image报错. 358 | cd $TEMP_DIR 359 | git clone --depth 1 git://sigaev.ru/plantuner 360 | cd $TEMP_DIR/plantuner/ 361 | USE_PGXS=1 make 362 | USE_PGXS=1 make install 363 | 364 | cd $TEMP_DIR 365 | git clone --depth 1 https://github.com/digoal/gevel 366 | cd $TEMP_DIR/gevel 367 | . ./install.sh 368 | 369 | cd $TEMP_DIR 370 | git clone --depth 1 -b 4.3 https://github.com/zubkov-andrei/pg_profile 371 | cd $TEMP_DIR/pg_profile 372 | USE_PGXS=1 make 373 | USE_PGXS=1 make install 374 | 375 | cd $TEMP_DIR 376 | # git clone --depth 1 https://github.com/s-hironobu/pg_plan_inspector 377 | # cd $TEMP_DIR/pg_plan_inspector 378 | # bug 修复之前 : https://github.com/s-hironobu/pg_plan_inspector/issues/1 379 | git clone https://github.com/s-hironobu/pg_plan_inspector 380 | cd $TEMP_DIR/pg_plan_inspector 381 | git checkout fa845045ed5a776779f2d5308608ac18ed045aad 382 | USE_PGXS=1 make 383 | USE_PGXS=1 make install 384 | 385 | # apt-get install -y libhealpix-cxx-dev 386 | # cd $TEMP_DIR 387 | # git clone --depth 1 -b 1.2.3 https://github.com/postgrespro/pgsphere 388 | # cd $TEMP_DIR/pgsphere 389 | # USE_PGXS=1 make 390 | # USE_PGXS=1 make install 391 | 392 | cd $TEMP_DIR 393 | git clone --depth 1 https://github.com/sraoss/pg_ivm 394 | cd $TEMP_DIR/pg_ivm 395 | USE_PGXS=1 make 396 | USE_PGXS=1 make install 397 | 398 | cd $TEMP_DIR 399 | git clone --depth 1 https://github.com/pgvector/pgvector 400 | cd $TEMP_DIR/pgvector 401 | USE_PGXS=1 make 402 | USE_PGXS=1 make install 403 | 404 | cd $TEMP_DIR 405 | git clone --depth=1 https://github.com/vyruss/pg_statviz.git 406 | cd $TEMP_DIR/pg_statviz 407 | USE_PGXS=1 make install 408 | 409 | apt-get install -y python3-pip 410 | pip install pg_statviz 411 | 412 | cd $TEMP_DIR 413 | # curl -Z --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -L https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4.tar.gz -o cmake-3.27.4.tar.gz 414 | tar -zxvf cmake-3.27.4.tar.gz 415 | cd $TEMP_DIR/cmake-3.27.4 416 | env CC=clang CXX=clang++ ./bootstrap -- -DCMAKE_BUILD_TYPE:STRING=Release 417 | make -j8 418 | make install 419 | 420 | cd $TEMP_DIR 421 | git clone --depth 1 https://github.com/zachasme/h3-pg 422 | cd $TEMP_DIR/h3-pg 423 | USE_PGXS=1 make all 424 | USE_PGXS=1 make install 425 | 426 | 427 | cd $TEMP_DIR 428 | export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static 429 | export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup 430 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o ./rust.sh 431 | chmod 500 rust.sh 432 | ./rust.sh -y 433 | source "$HOME/.cargo/env" 434 | 435 | cd $TEMP_DIR 436 | git clone --depth 1 https://github.com/postgresml/pgcat 437 | cd $TEMP_DIR/pgcat 438 | cargo build --release 439 | 440 | cd $TEMP_DIR 441 | git clone --depth 1 https://github.com/chimpler/postgres-aws-s3 442 | cd $TEMP_DIR/postgres-aws-s3 443 | USE_PGXS=1 make install 444 | 445 | cd $TEMP_DIR 446 | git clone --depth 1 -b PG14 https://github.com/apache/age 447 | cd $TEMP_DIR/age 448 | USE_PGXS=1 make 449 | USE_PGXS=1 make install 450 | 451 | apt-get install -y npm 452 | # cd $TEMP_DIR 453 | # tar -zxvf node-v14.21.3.tar.gz 454 | # cd node-v14.21.3 455 | # ./configure 456 | # CC=clang CXX=clang++ make -j 4 457 | # CC=clang CXX=clang++ make install 458 | npm config set registry https://registry.npmmirror.com 459 | npm config set fetch-retries 100 460 | npm config set fetch-retry-mintimeout 120000 461 | npm config set fetch-retry-maxtimeout 60000000 462 | npm config set cache-min 3600 463 | npm i pm2 464 | cd $TEMP_DIR 465 | git clone --depth 1 https://github.com/apache/age-viewer 466 | cd $TEMP_DIR/age-viewer 467 | npm run setup 468 | 469 | cd $TEMP_DIR 470 | git clone --depth 1 https://github.com/michelp/pgjwt 471 | cd $TEMP_DIR/pgjwt 472 | USE_PGXS=1 make install 473 | 474 | cd $TEMP_DIR 475 | git clone --depth 1 https://github.com/supabase/pg_net 476 | cd $TEMP_DIR/pg_net 477 | USE_PGXS=1 make install 478 | # bug : ERROR: extension "pg_net" has no installation script nor update path for version "0.7.3" 479 | # cd $TEMP_DIR/pg_net/sql 480 | # cp -f -n ./pg_net.sql ./pg_net--0.7.3.sql /usr/share/postgresql/14/extension/ 481 | 482 | cd $TEMP_DIR 483 | wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 | tar jxf - 484 | cd $TEMP_DIR/scws-1.2.3 485 | ./configure 486 | make install 487 | 488 | cd $TEMP_DIR 489 | git clone --depth 1 https://github.com/amutu/zhparser.git 490 | cd $TEMP_DIR/zhparser 491 | PG_CONFIG=/usr/lib/postgresql/14/bin/pg_config make && make install 492 | 493 | cd $TEMP_DIR 494 | git clone --depth 1 https://github.com/pramsey/pgsql-http 495 | cd $TEMP_DIR/pgsql-http 496 | USE_PGXS=1 make install 497 | 498 | cd $TEMP_DIR 499 | git clone --depth 1 https://github.com/pgsentinel/pgsentinel 500 | cd $TEMP_DIR/pgsentinel/src 501 | USE_PGXS=1 make install 502 | 503 | cd $TEMP_DIR 504 | git clone --depth 1 https://github.com/postgrespro/zson 505 | cd $TEMP_DIR/zson 506 | USE_PGXS=1 make install 507 | 508 | cd $TEMP_DIR 509 | cp pg_tiktoken--0.0.1.sql /usr/share/postgresql/14/extension/ 510 | cp pg_tiktoken.control /usr/share/postgresql/14/extension/ 511 | cp pg_tiktoken.so /usr/lib/postgresql/14/lib/ 512 | 513 | cd $TEMP_DIR 514 | git clone --depth 1 --recursive https://github.com/lanterndata/lantern.git 515 | cd $TEMP_DIR/lantern 516 | mkdir build 517 | cd $TEMP_DIR/lantern/build 518 | cmake .. 519 | make install 520 | 521 | cd $TEMP_DIR 522 | cp lantern_extras--0.0.3.sql /usr/share/postgresql/14/extension/ 523 | cp lantern_extras.control /usr/share/postgresql/14/extension/ 524 | cp lantern_extras.so /usr/lib/postgresql/14/lib/ 525 | cp lantern-cli /var/lib/postgresql/ 526 | chown postgres:postgres /var/lib/postgresql/lantern-cli 527 | 528 | cd $TEMP_DIR 529 | git clone --depth 1 -b v1.1.0 https://github.com/hydradatabase/hydra 530 | cd $TEMP_DIR/hydra/columnar 531 | ./configure 532 | USE_PGXS=1 make install 533 | 534 | cd $TEMP_DIR 535 | mkdir -p /usr/local/onnxruntime 536 | tar vzxf onnxruntime-linux-aarch64-1.15.1.tgz -C /usr/local/onnxruntime --strip-components=1 537 | echo "/usr/local/onnxruntime/lib" > /etc/ld.so.conf.d/onnxruntime.conf 538 | ldconfig 539 | 540 | cd $TEMP_DIR 541 | git clone --depth 1 https://github.com/kibae/onnxruntime-server 542 | cd $TEMP_DIR/onnxruntime-server 543 | cmake -B build -S . -DCMAKE_BUILD_TYPE=Release 544 | cmake --build build --parallel 4 545 | cmake --install build --prefix /usr/local/onnxruntime-server 546 | 547 | cd $TEMP_DIR 548 | git clone --depth 1 -b v1.15.1 https://github.com/microsoft/onnxruntime 549 | cp /tmp/onnxruntime/include/onnxruntime/core/session/* /usr/local/onnxruntime/ 550 | 551 | cd $TEMP_DIR 552 | git clone --depth 1 --recursive https://github.com/kibae/pg_onnx.git 553 | cd $TEMP_DIR/pg_onnx 554 | cmake -B build -S . -DCMAKE_BUILD_TYPE=Release 555 | cmake --build build --target pg_onnx --parallel 4 556 | cmake --install build/pg_onnx 557 | 558 | cd $TEMP_DIR 559 | # curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash 560 | # apt-get install -y git-lfs 561 | for ((i=1;i>=0;i=1)) 562 | do 563 | curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash 564 | if [ $? -eq 0 ]; then 565 | break 566 | fi 567 | done 568 | 569 | for ((i=1;i>=0;i=1)) 570 | do 571 | apt-get install -y git-lfs 572 | if [ $? -eq 0 ]; then 573 | break 574 | fi 575 | done 576 | 577 | cd $TEMP_DIR 578 | GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 https://github.com/onnx/models 579 | cd $TEMP_DIR/models 580 | git lfs install 581 | 582 | cd $TEMP_DIR 583 | git clone --depth 1 https://github.com/fboulnois/pg_uuidv7 584 | cd $TEMP_DIR/pg_uuidv7 585 | USE_PGXS=1 make install 586 | 587 | # apt-get install -y libcurl4-openssl-dev uuid-dev libpulse-dev 588 | # cd $TEMP_DIR 589 | # # git clone --depth 1 -b apache-arrow-12.0.1 https://github.com/apache/arrow.git 590 | # git clone --depth 1 -b apache-arrow-14.0.2 https://github.com/apache/arrow.git 591 | # cd $TEMP_DIR/arrow/cpp 592 | # mkdir build-release 593 | # cd $TEMP_DIR/arrow/cpp/build-release 594 | # 595 | # # build选项: https://arrow.apache.org/docs/developers/cpp/building.html 596 | # for ((i=1;i>=0;i=1)) 597 | # do 598 | # # cmake -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_PARQUET=ON -DARROW_ORC=ON -DARROW_S3=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_SNAPPY=ON -DARROW_WITH_ZLIB=ON -DARROW_WITH_ZSTD=ON -DPARQUET_REQUIRE_ENCRYPTION=ON .. 599 | # cmake -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_PARQUET=ON .. 600 | # if [ $? -eq 0 ]; then 601 | # break 602 | # fi 603 | # done 604 | # 605 | # for ((i=1;i>=0;i=1)) 606 | # do 607 | # make -j4 608 | # if [ $? -eq 0 ]; then 609 | # break 610 | # fi 611 | # done 612 | # 613 | # make install 614 | # ldconfig 615 | 616 | # https://arrow.apache.org/install/ 617 | cd $TEMP_DIR 618 | apt-get install -y libcurl4-openssl-dev uuid-dev libpulse-dev 619 | for ((i=1;i>=0;i=1)) 620 | do 621 | apt-get update 622 | if [ $? -eq 0 ]; then 623 | break 624 | fi 625 | done 626 | apt install -y -V ca-certificates lsb-release 627 | for ((i=1;i>=0;i=1)) 628 | do 629 | wget -T 36000 -t 0 --waitretry=5 https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb 630 | if [ $? -eq 0 ]; then 631 | break 632 | fi 633 | done 634 | apt-get install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb 635 | for ((i=1;i>=0;i=1)) 636 | do 637 | apt-get update 638 | if [ $? -eq 0 ]; then 639 | break 640 | fi 641 | done 642 | apt-get install -y -V libarrow-dev # For C++ 643 | apt-get install -y -V libarrow-glib-dev # For GLib (C) 644 | apt-get install -y -V libarrow-dataset-dev # For Apache Arrow Dataset C++ 645 | apt-get install -y -V libarrow-dataset-glib-dev # For Apache Arrow Dataset GLib (C) 646 | apt-get install -y -V libarrow-acero-dev # For Apache Arrow Acero 647 | apt-get install -y -V libarrow-flight-dev # For Apache Arrow Flight C++ 648 | apt-get install -y -V libarrow-flight-glib-dev # For Apache Arrow Flight GLib (C) 649 | apt-get install -y -V libarrow-flight-sql-dev # For Apache Arrow Flight SQL C++ 650 | apt-get install -y -V libarrow-flight-sql-glib-dev # For Apache Arrow Flight SQL GLib (C) 651 | apt-get install -y -V libgandiva-dev # For Gandiva C++ 652 | apt-get install -y -V libgandiva-glib-dev # For Gandiva GLib (C) 653 | apt-get install -y -V libparquet-dev # For Apache Parquet C++ 654 | apt-get install -y -V libparquet-glib-dev # For Apache Parquet GLib (C) 655 | 656 | cd $TEMP_DIR 657 | git clone --depth 1 https://github.com/adjust/parquet_fdw 658 | cd $TEMP_DIR/parquet_fdw 659 | # 这个bug 解决之前 (这个clang flag不支持arm平台) 660 | # clang: error: unknown argument: '-moutline-atomics' 661 | /usr/bin/clang-11 -xc++ -Wno-ignored-attributes -Wno-register -fno-strict-aliasing -fwrapv -O2 -I. -I./ -I/usr/include/postgresql/14/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -emit-llvm -c -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security -fno-strict-aliasing -fwrapv -g -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -std=c++17 -O3 -fPIC -I. -I./ -I/usr/include/postgresql/14/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -o src/common.bc src/common.cpp 662 | /usr/bin/clang-11 -xc++ -Wno-ignored-attributes -Wno-register -fno-strict-aliasing -fwrapv -O2 -I. -I./ -I/usr/include/postgresql/14/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -emit-llvm -c -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security -fno-strict-aliasing -fwrapv -g -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -std=c++17 -O3 -fPIC -I. -I./ -I/usr/include/postgresql/14/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -o src/reader.bc src/reader.cpp 663 | /usr/bin/clang-11 -xc++ -Wno-ignored-attributes -Wno-register -fno-strict-aliasing -fwrapv -O2 -I. -I./ -I/usr/include/postgresql/14/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -emit-llvm -c -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security -fno-strict-aliasing -fwrapv -g -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -std=c++17 -O3 -fPIC -I. -I./ -I/usr/include/postgresql/14/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -o src/exec_state.bc src/exec_state.cpp 664 | /usr/bin/clang-11 -xc++ -Wno-ignored-attributes -Wno-register -fno-strict-aliasing -fwrapv -O2 -I. -I./ -I/usr/include/postgresql/14/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -emit-llvm -c -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security -fno-strict-aliasing -fwrapv -g -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -std=c++17 -O3 -fPIC -I. -I./ -I/usr/include/postgresql/14/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -o src/parquet_impl.bc src/parquet_impl.cpp 665 | make install 666 | 667 | cd $TEMP_DIR 668 | git clone --depth 1 https://github.com/pgspider/sqlite_fdw 669 | cd $TEMP_DIR/sqlite_fdw 670 | USE_PGXS=1 make 671 | USE_PGXS=1 make install 672 | 673 | cd $TEMP_DIR 674 | cp pg_bm25--0.4.3.sql /usr/share/postgresql/14/extension/ 675 | cp pg_bm25.control /usr/share/postgresql/14/extension/ 676 | cp pg_bm25.so /usr/lib/postgresql/14/lib/ 677 | 678 | cd $TEMP_DIR 679 | cp pg_search--0.0.0.sql /usr/share/postgresql/14/extension/ 680 | cp pg_search.control /usr/share/postgresql/14/extension/ 681 | cp pg_search.so /usr/lib/postgresql/14/lib/ 682 | 683 | cd $TEMP_DIR 684 | cp pg_sparse--0.0.0.sql /usr/share/postgresql/14/extension/ 685 | cp pg_sparse.control /usr/share/postgresql/14/extension/ 686 | cp pg_sparse.so /usr/lib/postgresql/14/lib/ 687 | 688 | cd $TEMP_DIR 689 | git clone --depth 1 -b 14.3 https://github.com/ossc-db/pg_statsinfo 690 | cd $TEMP_DIR/pg_statsinfo 691 | PG_LDFLAGS=-L/usr/lib/postgresql/14/lib make 692 | PG_LDFLAGS=-L/usr/lib/postgresql/14/lib make install 693 | 694 | cd /usr/lib/postgresql/14 695 | git clone --depth 1 -b 14.0 https://github.com/ossc-db/pg_stats_reporter 696 | 697 | cd $TEMP_DIR/ 698 | git clone --depth 1 https://gitlab.com/pg_proctab/pg_proctab 699 | cd $TEMP_DIR/pg_proctab 700 | USE_PGXS=1 make install 701 | 702 | apt-get install -y libelf-dev 703 | cd $TEMP_DIR/ 704 | git clone --depth 1 https://gitlab.com/pg_top/pg_top 705 | cd $TEMP_DIR/pg_top 706 | cmake CMakeLists.txt 707 | USE_PGXS=1 make install 708 | 709 | cd $TEMP_DIR/ 710 | wget https://golang.org/dl/go1.17.linux-arm64.tar.gz 711 | tar -zxvf go1.17.linux-arm64.tar.gz -C /usr/local/ 712 | export PATH=/usr/local/go/bin:${PATH} 713 | echo "export PATH=/usr/local/go/bin:${PATH}" >>/root/.bashrc 714 | echo "export PATH=/usr/local/go/bin:${PATH}" >>/var/lib/postgresql/.bash_profile 715 | cd $TEMP_DIR/ 716 | git clone --depth 1 https://github.com/lesovsky/pgcenter 717 | cd $TEMP_DIR/pgcenter 718 | make dep 719 | make build 720 | make install 721 | 722 | cd $TEMP_DIR 723 | git clone --depth 1 https://github.com/petere/pguint 724 | cd $TEMP_DIR/pguint 725 | USE_PGXS=1 make install 726 | 727 | cd $TEMP_DIR 728 | git clone --depth 1 -b v0.4.3 https://github.com/paradedb/paradedb 729 | cd $TEMP_DIR/paradedb/pg_sparse 730 | USE_PGXS=1 make install 731 | chmod 644 ./sql/svector--0.4.1.sql 732 | cp ./sql/svector--0.4.1.sql /usr/share/postgresql/14/extension/ 733 | 734 | cd $TEMP_DIR 735 | git clone --depth 1 https://github.com/bdrouvot/pg_subtrans_infos 736 | cd $TEMP_DIR/pg_subtrans_infos 737 | USE_PGXS=1 make install 738 | 739 | cd $TEMP_DIR 740 | git clone --depth 1 https://github.com/bdrouvot/pg_subxact_counters 741 | cd $TEMP_DIR/pg_subxact_counters/c 742 | USE_PGXS=1 make install 743 | 744 | cd $TEMP_DIR 745 | cp pg_idkit--0.2.1.sql /usr/share/postgresql/14/extension/ 746 | cp pg_idkit.control /usr/share/postgresql/14/extension/ 747 | cp pg_idkit.so /usr/lib/postgresql/14/lib/ 748 | 749 | cd $TEMP_DIR 750 | apt-get install -y build-essential libproj-dev libjson-c-dev libgsl-dev libgeos-dev 751 | git clone --depth 1 https://github.com/MobilityDB/MobilityDB 752 | cd $TEMP_DIR/MobilityDB 753 | mkdir build 754 | cd $TEMP_DIR/MobilityDB/build 755 | cmake .. 756 | make -j 4 757 | make install 758 | 759 | cd $TEMP_DIR 760 | cp pgdd--0.5.2.sql /usr/share/postgresql/14/extension/ 761 | cp pgdd.control /usr/share/postgresql/14/extension/ 762 | cp pgdd.so /usr/lib/postgresql/14/lib/ 763 | 764 | cd $TEMP_DIR 765 | git clone --depth 1 https://github.com/PGer/pipelinedb_pg14.git 766 | cd $TEMP_DIR/pipelinedb_pg14 767 | apt-get install -y libczmq4 libczmq-dev 768 | USE_PGXS=1 make install 769 | 770 | cd $TEMP_DIR 771 | git clone --depth 1 https://github.com/jaiminpan/pg_nanoid.git 772 | cd $TEMP_DIR/pg_nanoid 773 | USE_PGXS=1 make install 774 | 775 | cd $TEMP_DIR 776 | git clone --depth 1 https://github.com/andrielfn/pg-ulid.git 777 | cd $TEMP_DIR/pg-ulid 778 | USE_PGXS=1 make install 779 | 780 | cd $TEMP_DIR 781 | git clone --depth 1 https://github.com/phillbaker/pg_migrate.git 782 | cd $TEMP_DIR/pg_migrate/ 783 | USE_PGXS=1 make install 784 | 785 | cd $TEMP_DIR 786 | git clone --depth 1 https://github.com/df7cb/pg_filedump.git 787 | cd $TEMP_DIR/pg_filedump/ 788 | USE_PGXS=1 make install 789 | 790 | cd $TEMP_DIR 791 | git clone --depth 1 https://github.com/petere/pgpcre 792 | cd $TEMP_DIR/pgpcre 793 | USE_PGXS=1 make install 794 | 795 | cd $TEMP_DIR 796 | git clone --depth 1 https://github.com/omniti-labs/pg_jobmon 797 | cd $TEMP_DIR/pg_jobmon 798 | USE_PGXS=1 make install 799 | 800 | cd $TEMP_DIR 801 | git clone --depth 1 https://github.com/pgpartman/pg_partman 802 | cd $TEMP_DIR/pg_partman 803 | USE_PGXS=1 make install 804 | 805 | cd $TEMP_DIR 806 | git clone --depth 1 https://gitee.com/seanguo_007/plpgsql_pg4ml.git 807 | cd $TEMP_DIR/plpgsql_pg4ml 808 | USE_PGXS=1 make install 809 | 810 | cd $TEMP_DIR 811 | cp pgmq--1.1.1.sql /usr/share/postgresql/14/extension/ 812 | cp pgmq.control /usr/share/postgresql/14/extension/ 813 | cp pgmq.so /usr/lib/postgresql/14/lib/ 814 | 815 | cd $TEMP_DIR 816 | cp pg_later--0.0.13.sql /usr/share/postgresql/14/extension/ 817 | cp pg_later.control /usr/share/postgresql/14/extension/ 818 | cp pg_later.so /usr/lib/postgresql/14/lib/ 819 | 820 | cd $TEMP_DIR 821 | cp vectorize--0.7.0.sql /usr/share/postgresql/14/extension/ 822 | cp vectorize.control /usr/share/postgresql/14/extension/ 823 | cp vectorize.so /usr/lib/postgresql/14/lib/ 824 | 825 | cd $TEMP_DIR 826 | git clone --depth 1 https://github.com/pgEdge/snowflake 827 | cd $TEMP_DIR/snowflake 828 | USE_PGXS=1 make install 829 | 830 | cd /usr/lib/postgresql/14 831 | git clone --depth 1 https://github.com/swida/sqlbench 832 | cd /usr/lib/postgresql/14/sqlbench 833 | autoreconf -if 834 | ./configure --with-postgresql="$PGHOME" 835 | C_INCLUDE_PATH=/usr/include/postgresql make 836 | C_INCLUDE_PATH=/usr/include/postgresql make install 837 | 838 | apt-get install -y libpcap-dev libnl-genl-3-dev 839 | cd /tmp 840 | git clone --depth 1 -b 8.4.0-stable https://github.com/ntop/PF_RING 841 | cd /tmp/PF_RING/userland/lib 842 | ./configure && make 843 | make install 844 | cd /tmp 845 | git clone --depth 1 https://github.com/heterodb/pg-strom 846 | cd /tmp/pg-strom/arrow-tools 847 | PG_CONFIG=/usr/lib/postgresql/14/bin/pg_config C_INCLUDE_PATH=/tmp/PF_RING/kernel make 848 | PG_CONFIG=/usr/lib/postgresql/14/bin/pg_config C_INCLUDE_PATH=/tmp/PF_RING/kernel make install 849 | 850 | cd /usr/lib/postgresql/14 851 | git clone --depth 1 https://github.com/apache/madlib 852 | cd /usr/lib/postgresql/14/madlib 853 | mkdir build 854 | cd /usr/lib/postgresql/14/madlib/build 855 | cmake .. 856 | make -j 4 857 | # $BUILD_ROOT/src/bin/madpack -s madlib -p postgres -c [user[/password]@][host][:port][/database] install 858 | -------------------------------------------------------------------------------- /pg14_arm64/4.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | echo "* soft nofile 1024000" >> /etc/security/limits.conf 5 | echo "* hard nofile 1024000" >> /etc/security/limits.conf 6 | echo "* soft nproc unlimited" >> /etc/security/limits.conf 7 | echo "* hard nproc unlimited" >> /etc/security/limits.conf 8 | echo "* soft core unlimited" >> /etc/security/limits.conf 9 | echo "* hard core unlimited" >> /etc/security/limits.conf 10 | echo "* soft memlock unlimited" >> /etc/security/limits.conf 11 | echo "* hard memlock unlimited" >> /etc/security/limits.conf 12 | -------------------------------------------------------------------------------- /pg14_arm64/5.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -vx 3 | 4 | export PG_HOME=/var/lib/postgresql 5 | . $PG_HOME/.bash_profile 6 | initdb -D $PGDATA -U postgres -E UTF8 --lc-collate=C --lc-ctype=en_US.UTF8 7 | 8 | cd $PGDATA 9 | echo "host all all 0.0.0.0/0 scram-sha-256" >> ./pg_hba.conf 10 | 11 | echo "listen_addresses = '0.0.0.0'" >> ./postgresql.auto.conf 12 | echo "port = 1921" >> ./postgresql.auto.conf 13 | echo "max_connections = 2000" >> ./postgresql.auto.conf 14 | echo "unix_socket_directories = '., /var/run/postgresql'" >> ./postgresql.auto.conf 15 | echo "shared_buffers = 128MB" >> ./postgresql.auto.conf 16 | echo "dynamic_shared_memory_type = posix" >> ./postgresql.auto.conf 17 | echo "vacuum_cost_delay = 0" >> ./postgresql.auto.conf 18 | echo "bgwriter_delay = 20ms" >> ./postgresql.auto.conf 19 | echo "bgwriter_lru_maxpages = 500" >> ./postgresql.auto.conf 20 | echo "bgwriter_lru_multiplier = 5.0" >> ./postgresql.auto.conf 21 | echo "max_parallel_workers_per_gather = 0" >> ./postgresql.auto.conf 22 | echo "synchronous_commit = off" >> ./postgresql.auto.conf 23 | echo "wal_compression = on" >> ./postgresql.auto.conf 24 | echo "wal_writer_delay = 10ms" >> ./postgresql.auto.conf 25 | echo "max_wal_size = 1GB " >> ./postgresql.auto.conf 26 | echo "min_wal_size = 80MB " >> ./postgresql.auto.conf 27 | echo "random_page_cost = 1.1" >> ./postgresql.auto.conf 28 | echo "log_destination = 'csvlog'" >> ./postgresql.auto.conf 29 | echo "logging_collector = on" >> ./postgresql.auto.conf 30 | echo "log_truncate_on_rotation = on" >> ./postgresql.auto.conf 31 | echo "log_timezone = 'Etc/UTC' " >> ./postgresql.auto.conf 32 | echo "autovacuum = on" >> ./postgresql.auto.conf 33 | echo "autovacuum_vacuum_cost_delay = 0ms" >> ./postgresql.auto.conf 34 | echo "vacuum_freeze_table_age = 750000000 " >> ./postgresql.auto.conf 35 | echo "vacuum_multixact_freeze_table_age = 750000000 " >> ./postgresql.auto.conf 36 | echo "datestyle = 'iso, mdy' " >> ./postgresql.auto.conf 37 | echo "timezone = 'Etc/UTC' " >> ./postgresql.auto.conf 38 | echo "lc_messages = 'en_US.UTF-8'" >> ./postgresql.auto.conf 39 | echo "lc_monetary = 'en_US.UTF-8'" >> ./postgresql.auto.conf 40 | echo "lc_numeric = 'en_US.UTF-8'" >> ./postgresql.auto.conf 41 | echo "lc_time = 'en_US.UTF-8'" >> ./postgresql.auto.conf 42 | echo "default_text_search_config = 'pg_catalog.english'" >> ./postgresql.auto.conf 43 | -------------------------------------------------------------------------------- /pg14_arm64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=$TARGETPLATFORM debian:11.7 2 | MAINTAINER digoal zhou "dege.zzz@alibaba-inc.com" 3 | ARG TARGETPLATFORM 4 | ARG BUILDPLATFORM 5 | RUN echo "I am running on $BUILDPLATFORM, building for $TARGETPLATFORM" 6 | ENV DEBIAN_FRONTEND=noninteractive TEMP_DIR=/tmp ROOT_HOME=/root PG_HOME=/var/lib/postgresql PG_DATA=/var/lib/postgresql/14/pgdata PGHOME=/usr/lib/postgresql/14 7 | STOPSIGNAL SIGINT 8 | COPY --chmod=555 1.sh 2.sh 3.sh 4.sh 5.sh $TEMP_DIR/ 9 | COPY GraphBLAS-3.1.1.tar.gz libduckdb-linux-aarch64.zip duckdb_cli-linux-aarch64.zip cmake-3.27.4.tar.gz mongo-c-driver-1.17.3.tar.gz json-c-0.15-20200726.tar.gz pg_tiktoken--0.0.1.sql pg_tiktoken.control pg_tiktoken.so lantern_extras--0.0.3.sql lantern_extras.control lantern_extras.so lantern-cli onnxruntime-linux-aarch64-1.15.1.tgz node-v14.21.3.tar.gz pg_bm25.control pg_bm25.so pg_bm25--0.4.3.sql pg_search.control pg_search.so pg_search--0.0.0.sql pg_sparse.so pg_sparse.control pg_sparse--0.0.0.sql pg_task.so pg_task.index.bc pg_task.control pg_task--1.0.sql pg_idkit--0.2.1.sql pg_idkit.control pg_idkit.so pgdd--0.5.2.sql pgdd.control pgdd.so pgroll pgmq.control pgmq--1.1.1.sql pgmq.so pg_later.control pg_later.so pg_later--0.0.13.sql vectorize.control vectorize.so vectorize--0.7.0.sql $TEMP_DIR/ 10 | RUN mkdir /tmp/pg_task 11 | COPY pg_task /tmp/pg_task 12 | 13 | RUN $TEMP_DIR/1.sh 14 | RUN $TEMP_DIR/2.sh 15 | RUN $TEMP_DIR/3.sh 16 | 17 | # WORKDIR $TEMP_DIR 18 | # RUN apt-get install -y libtinfo5 build-essential ninja-build python3 19 | # RUN git clone --depth 1 -b v3.1.7 https://github.com/plv8/plv8 20 | # WORKDIR $TEMP_DIR/plv8 21 | # RUN USE_ICU=1 USE_PGXS=1 make 22 | # RUN USE_ICU=1 USE_PGXS=1 make install 23 | # 24 | # WORKDIR $TEMP_DIR 25 | # RUN git clone --depth 1 -b apache-arrow-12.0.1 https://github.com/apache/arrow.git 26 | # WORKDIR $TEMP_DIR/arrow/cpp 27 | # RUN mkdir build-release 28 | # WORKDIR $TEMP_DIR/arrow/cpp/build-release 29 | # RUN cmake -DARROW_DEPENDENCY_SOURCE=BUNDLED .. 30 | # RUN make -j4 31 | # RUN make install 32 | # 33 | # WORKDIR $TEMP_DIR 34 | # RUN apt-get install -y libcurl4-openssl-dev uuid-dev libpulse-dev 35 | # RUN git clone --depth 1 -b 1.9.263 https://github.com/aws/aws-sdk-cpp 36 | # WORKDIR $TEMP_DIR/aws-sdk-cpp 37 | # RUN git submodule update --init --recursive --depth 1 38 | # RUN mkdir build 39 | # WORKDIR $TEMP_DIR/aws-sdk-cpp/build 40 | # RUN cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_ONLY="s3;core" 41 | # RUN make -j4 42 | # RUN make install 43 | # 44 | # WORKDIR $TEMP_DIR 45 | # RUN git clone --depth 1 -b v1.0.0 https://github.com/pgspider/parquet_s3_fdw 46 | # WORKDIR $TEMP_DIR/parquet_s3_fdw 47 | # RUN PG_CPPFLAGS="-Wno-register -D_GLIBCXX_USE_CXX11_ABI=0" USE_PGXS=1 make 48 | # RUN PG_CPPFLAGS="-std=c++17 -Wno-register -D_GLIBCXX_USE_CXX11_ABI=0" USE_PGXS=1 make 49 | # RUN PG_CPPFLAGS="-std=c++17 -Wno-register -D_GLIBCXX_USE_CXX11_ABI=0" USE_PGXS=1 make install 50 | # RUN echo "/usr/local/lib" >>/etc/ld.so.conf 51 | # RUN ldconfig 52 | 53 | 54 | ENV ORACLE_BASE /usr/lib/postgresql/14/lib 55 | WORKDIR $ORACLE_BASE 56 | COPY instantclient_19_19/libclntsh.so.19.1 . 57 | RUN ln -s libclntsh.so.19.1 libclntsh.so 58 | RUN mkdir -p oracle/network/admin 59 | COPY instantclient_19_19 ./oracle 60 | RUN echo "export LD_LIBRARY_PATH=\$PGHOME/lib/oracle:\$LD_LIBRARY_PATH" >>$PG_HOME/.bash_profile 61 | RUN echo "export ORACLE_HOME=\$PGHOME/lib/oracle" >>$PG_HOME/.bash_profile 62 | RUN echo "export TNS_ADMIN=\$ORACLE_HOME/network/admin/" >>$PG_HOME/.bash_profile 63 | RUN echo "export LD_LIBRARY_PATH=\$PGHOME/lib/oracle:\$LD_LIBRARY_PATH" >>$ROOT_HOME/.bashrc 64 | RUN echo "export ORACLE_HOME=\$PGHOME/lib/oracle" >>$ROOT_HOME/.bashrc 65 | RUN echo "export TNS_ADMIN=\$ORACLE_HOME/network/admin/" >>$ROOT_HOME/.bashrc 66 | RUN . $ROOT_HOME/.bashrc 67 | 68 | RUN echo "/usr/lib/postgresql/14/lib/oracle" >> /etc/ld.so.conf 69 | RUN echo "/usr/local/lib" >> /etc/ld.so.conf 70 | RUN echo "/usr/lib/postgresql/14/lib" >> /etc/ld.so.conf 71 | RUN ldconfig 72 | 73 | WORKDIR $TEMP_DIR 74 | # RUN apt-get install -y libsqlite3-dev 75 | RUN git clone --depth 1 https://github.com/ossc-db/dblink_plus 76 | WORKDIR $TEMP_DIR/dblink_plus 77 | RUN cp -r /usr/lib/postgresql/14/lib/oracle/sdk/include/* ./ 78 | RUN PG_CFLAGS=-I/usr/lib/postgresql/14/lib/oracle/sdk/include PG_LDFLAGS=-L/usr/lib/postgresql/14/lib/oracle USE_PGXS=1 make 79 | RUN PG_CFLAGS=-I/usr/lib/postgresql/14/lib/oracle/sdk/include PG_LDFLAGS=-L/usr/lib/postgresql/14/lib/oracle USE_PGXS=1 make install 80 | 81 | 82 | # RUN rm -rf $TEMP_DIR/* 83 | 84 | RUN $TEMP_DIR/4.sh 85 | 86 | USER postgres 87 | RUN $TEMP_DIR/5.sh 88 | 89 | WORKDIR $PG_HOME 90 | # RUN wget -T 36000 -t 0 --waitretry=5 https://github.com/duckdb/duckdb/releases/download/v0.9.2/duckdb_cli-linux-aarch64.zip 91 | # RUN curl -Z --connect-timeout 120 -m 36000 --retry 12000 --retry-delay 5 --retry-max-time 1200 -L https://github.com/duckdb/duckdb/releases/download/v0.9.2/duckdb_cli-linux-aarch64.zip -o duckdb_cli-linux-aarch64.zip 92 | RUN cp $TEMP_DIR/duckdb_cli-linux-aarch64.zip $PG_HOME/ 93 | RUN unzip -d . duckdb_cli-linux-aarch64.zip 94 | 95 | RUN cp $TEMP_DIR/pgroll $PG_HOME/ 96 | 97 | USER root 98 | WORKDIR $ROOT_HOME 99 | 100 | EXPOSE 1921 101 | EXPOSE 3000 102 | EXPOSE 8080 103 | EXPOSE 80 104 | EXPOSE 3306 105 | ENTRYPOINT ["su", "-", "postgres", "-c", "/usr/lib/postgresql/14/bin/postgres -D \"/var/lib/postgresql/14/pgdata\""] 106 | --------------------------------------------------------------------------------