工具介绍
PackageManagement (又名 OneGet) 是一个适用于 Windows 的包管理器
## Announcement
This module is currently not in development. We are no longer accepting any pull requests to this repository. OneGet is in a stable state and is expected to recieve only high-priority bug fixes from Microsoft in the future.
Alternatively, we would suggest looking at the community [AnyPackage](https://github.com/anypackage/anypackage) project as an actively developed replacement for OneGet.
If you have a question, or are seeing an unexpected behavior from this module please open up an issue in this repository.
The PowerShell/PowerShellGet repository is actively in development as the new PowerShell package manager.
### Build Status - Master
| AppVeyor (Windows) | Travis CI (Linux / macOS) |
|--------------------------|--------------------------|
| [![av-image][]][av-site] | [![tv-image][]][tv-site] |
[tv-image]: https://travis-ci.org/OneGet/oneget.svg?branch=master
[tv-site]: https://travis-ci.org/OneGet/oneget/branches
[av-image]: https://ci.appveyor.com/api/projects/status/0q1frhm84pp83syh/branch/master?svg=true
[av-site]: https://ci.appveyor.com/project/jianyunt/oneget
### Build Status - Nightly Builds
|AppVeyor (Windows) |
|------------------------------------|
| [![av-nightimage][]][av-nightsite] |
[av-nightimage]: https://ci.appveyor.com/api/projects/status/87d07mj8s9eyhfst/branch/master?svg=true
[av-nightsite]:https://ci.appveyor.com/project/jianyunt/oneget-weumx
# PackageManagement (aka OneGet)
### What's New
PackageManagement is supported in Windows, Linux and MacOS now.
We periodically make binary drops to [PowerShellCore][pscore],
meaning PackageManagement is a part of PowerShell Core releases.
Also PackageManagement and PowershellGet Modules are regularly updated in [PowerShellGallery.com](https://www.PowerShellGallery.com).
Thus check out the latest version from PowerShellGallery.com.
[pscore]: https://github.com/PowerShell/PowerShell
### Get Started!
OneGet is shipped in Win10 and Windows Server 2016! For downlevel OS, you can install the [WMF 5.1][WMF5RTM] and then start using the OneGet.
You can follow [@PSOneGet on Twitter](http://twitter.com/PSOneGet) to be notified of every new build.
* Learn how to [use the PowerShell OneGet cmdlets](https://github.com/OneGet/oneget/wiki/cmdlets) and [try some samples](https://github.com/PowerShell/PowerShell-Docs/blob/staging/wmf/5.0/oneget_cmdlets.md)
* Read our [General Q and A](https://github.com/OneGet/oneget/wiki/Q-and-A)
* Read [Writing OneGet Provider Guidelines](./docs/writepowershellbasedprovider.md)
* Learn about the [8 Laws of Software Installation](https://github.com/OneGet/oneget/wiki/8-Laws-of-Software-Installation)
* [General Troubleshooting](https://github.com/OneGet/oneget/wiki/General-Troubleshooting)
* Check out more help information [in our wiki page](https://github.com/oneget/oneget/wiki)
[WMF5RTM]: https://aka.ms/wmf5download
### What is PackageManagement (OneGet)?
OneGet is a Windows package manager, renamed as PackageManagement. It is a unified interface to package management systems and aims to make Software Discovery, Installation, and Inventory (SDII) work via a common set of cmdlets (and eventually a set of APIs). Regardless of the installation technology underneath, users can use these common cmdlets to install/uninstall packages, add/remove/query package repositories, and query a system for the software installed.
With OneGet, you can
* Manage a list of software repositories in which packages can be searched, acquired, and installed
* Search and filter your repositories to find the packages you need
* Seamlessly install and uninstall packages from one or more repositories with a single PowerShell command
#### PackageManagement Architecture
### Let's Try it
#### Prerequisites
- Windows 10, Windows Server 2016, or down-level Windows OS + WMF5
- Linux or Mac with the [PowerShellCore][pscore]
#### Working with PowerShellGallery.com
```
…
```
#### Working with http://www.NuGet.org repository
```
…
```
### Try the latest PackageManagement (OneGet)
You can run `install-module PowerShellGet` to install the latest PackageManagment and PowerShellGet from [PowerShellGallery](https://www.powershellgallery.com).
### Downloading the Source Code
OneGet repo has a number of other repositories embeded as submodules. To make things easy, you can just clone recursively:
```powershell
git clone --recursive https://github.com/OneGet/oneget.git
```
If you already cloned but forgot to use `--recursive`, you can update submodules manually:
```powershell
git submodule update --init
```
### Building the code
``` powershell
# After cloning this repository, go to the project folder:
> cd oneget
> cd src
# download the dotnet cli tool
> .\bootstrap.ps1
# building OneGet for fullclr
> .\build.ps1 net452
#building OneGet for coreclr
> .\build.ps1 netstandard2.0
```
If successfully built above, you should be able to see a folder:
`oneget\src\out\PackageManagement\` whose layout looks like below:
* `coreclr`
* `fullclr`
* `PackageManagement.format.ps1xml`
* `PackageManagement.psd1`
* `PackageManagement.psm1`
* `PackageProviderFunctions.psm1`
### Deploying it
#### Generate PackageManagement.nupkg
We can use `publish-module` to create a .nupkg. Assuming you want to put the generated .nupkg in c:\test folder. You can do something like below. Note I cloned to E:\OneGet folder.
```powershell
cd E:\OneGet\oneget\src\out\PackageManagement
Register-PSRepository -name local -SourceLocation c:\test
Get-PSRepository
Publish-Module -path .\ -Repository local
PS E:\OneGet\oneget\src\out\PackageManagement> dir c:\test\PackageManagement*.nupkg
Directory: C:\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11/4/2016 4:15 PM 1626335 PackageManagement.1.1.0.0.nupkg
```
Then you can do
```powershell
find-module -Repository local
install-module -Repository local -Name PackageManagement
```
to get the newly built PackageManagement on your machines.
#### Manual copy
You can also manually copy the OneGet binaries. For example, copy the entire `E:\OneGet\oneget\src\out\PackageManagement` folder you just built to your
`$env:Programfiles\WindowsPowerShell\Modules\PackageManagement\#onegetversion\`
If you are running within PowerShellCore,
similarily drop the PackageManagement folder to your `$env:Programfiles\PowerShell\#psversion\Modules\PackageManagement\#onegetversion\`,
or copy to `/opt/microsoft/powershell//Modules/PackageManagement/#onegetversion/`,
if you are running on Linux or Mac.
**Note**: OneGet version number can be found from the PackageManagement.psd1 file.
### Testing the code
```PowerShell
> cd oneget
> cd Test
> & '.\run-tests.ps1' fullclr
> & '.\run-tests.ps1' coreclr
```
### Understanding the OneGet code repository
Feel free to clone the repository and check out the different branches:
#### Branches
There are currently three branches in the git repository:
| Branch/Tag | Purpose |
| ------- | ---------------------------|
|`master`| The `master` branch is where the daily builds of OneGet will be made from. |
|`WMF5_RTM`| The `WMF5_RTM` tag is to mark the WMF 5.0 RTM release point. |
|`TP5`| The `TP5` tag is to mark the TP5 release point. |
|`wip`| The `wip` branch is where the current **unstable** and **not-likely-working** coding is taking place. This lets you see where I'm at before stuff actually hits the master branch. Fun to read, but really, the wild-west of code branches. |
### Team Members
| Branch | Purpose |
| ------- | ---------------------------|
|@sydneyhsmith | Program Manager on OneGet. |
|@jianyunt| Engineer owner on OneGet & its providers. |
|@edyoung| Our engineer manager on OneGet. |
|@alerickson| Engineer on the team. |
[Follow us on Twitter](https://twitter.com/PSOneGet)
### More Resources
- [NuGet Provider](https://github.com/OneGet/NuGetProvider)
- [PowerShellGet Provider](https://github.com/PowerShell/PowerShellGet)
- [MicrosoftDockerProvider](https://github.com/OneGet/MicrosoftDockerProvider)
- [NanoServerPackage](https://github.com/OneGet/NanoServerPackage)
- Check out OneGet providers from our Community such as Gistprovider, OfficeProvider, 0Install and more from powershellgallery.com or simply run [Find-PackageProvider cmdlet](https://msdn.microsoft.com/en-us/powershell/gallery/psget/oneget/packagemanagement_cmdlets)
- Want to write a provider? Check out our [sample provider](https://www.powershellgallery.com/packages/MyAlbum/)
- Want to download packages from http://Chocolatey.org, try out [ChocolateyGet provider](https://www.powershellgallery.com/packages/ChocolateyGet)
- Want to control which packages to use and where to get them from based on your organization? Check out [PSL provider](https://github.com/OneGet/PSLProvider)
=======
## Announcement
This module is currently not in development. We are no longer accepting any pull requests to this repository. OneGet is in a stable state and is expected to recieve only high-priority bug fixes from Microsoft in the future.
If you have a question, or are seeing an unexpected behavior from this module please open up an issue in this repository.
The PowerShell/PowerShellGet repository is actively in development as the new PowerShell package manager.
### Build Status - Master
| AppVeyor (Windows) | Travis CI (Linux / macOS) |
|--------------------------|--------------------------|
| [![av-image][]][av-site] | [![tv-image][]][tv-site] |
[tv-image]: https://travis-ci.org/OneGet/oneget.svg?branch=master
[tv-site]: https://travis-ci.org/OneGet/oneget/branches
[av-image]: https://ci.appveyor.com/api/projects/status/0q1frhm84pp83syh/branch/master?svg=true
[av-site]: https://ci.appveyor.com/project/jianyunt/oneget
### Build Status - Nightly Builds
|AppVeyor (Windows) |
|------------------------------------|
| [![av-nightimage][]][av-nightsite] |
[av-nightimage]: https://ci.appveyor.com/api/projects/status/87d07mj8s9eyhfst/branch/master?svg=true
[av-nightsite]:https://ci.appveyor.com/project/jianyunt/oneget-weumx
# PackageManagement (aka OneGet)
### What's New
PackageManagement is supported in Windows, Linux and MacOS now.
We periodically make binary drops to [PowerShellCore][pscore],
meaning PackageManagement is a part of PowerShell Core releases.
Also PackageManagement and PowershellGet Modules are regularly updated in [PowerShellGallery.com](https://www.PowerShellGallery.com).
Thus check out the latest version from PowerShellGallery.com.
[pscore]: https://github.com/PowerShell/PowerShell
### Get Started!
OneGet is shipped in Win10 and Windows Server 2016! For downlevel OS, you can install the [WMF 5.1][WMF5RTM] and then start using the OneGet.
You can follow [@PSOneGet on Twitter](http://twitter.com/PSOneGet) to be notified of every new build.
* Learn how to [use the PowerShell OneGet cmdlets](https://github.com/OneGet/oneget/wiki/cmdlets) and [try some samples](https://github.com/PowerShell/PowerShell-Docs/blob/staging/wmf/5.0/oneget_cmdlets.md)
* Read our [General Q and A](https://github.com/OneGet/oneget/wiki/Q-and-A)
* Read [Writing OneGet Provider Guidelines](./docs/writepowershellbasedprovider.md)
* Learn about the [8 Laws of Software Installation](https://github.com/OneGet/oneget/wiki/8-Laws-of-Software-Installation)
* [General Troubleshooting](https://github.com/OneGet/oneget/wiki/General-Troubleshooting)
* Check out more help information [in our wiki page](https://github.com/oneget/oneget/wiki)
[WMF5RTM]: https://aka.ms/wmf5download
### What is PackageManagement (OneGet)?
OneGet is a Windows package manager, renamed as PackageManagement. It is a unified interface to package management systems and aims to make Software Discovery, Installation, and Inventory (SDII) work via a common set of cmdlets (and eventually a set of APIs). Regardless of the installation technology underneath, use