# Installing contracts using forge install

**URL:** https://forum.openzeppelin.com/t/installing-contracts-using-forge-install/38027
**Category:** Upgrades
**Created:** [October 6, 2023, 7:46pm UTC](https://forum.openzeppelin.com/t/installing-contracts-using-forge-install/38027 "2023-10-06T19:46:27Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Ibrahim96](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ibrahim96/32/16264_2.png) [@Ibrahim96](https://forum.openzeppelin.com/u/Ibrahim96)
#### Post date: [October 6, 2023, 7:46pm UTC](https://forum.openzeppelin.com/t/installing-contracts-using-forge-install/38027/1 "2023-10-06T19:46:27Z")

</div>

Hey y'all,

I'm trying to install [openzeppelin-contracts-upgradeable](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable) & \* [openzeppelin-contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) using forge.

**Installation:**

```auto
forge install OpenZeppelin/openzeppelin-contracts-upgradeable
forge install OpenZeppelin/openzeppelin-contracts

```

**foundry.toml:**

```auto
remappings = [
    '@openzeppelin/=lib/@openzeppelin-contracts/',
    '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/',
]

```

 ![Screenshot 2023-10-06 at 3.33.25 PM](https://us1.discourse-cdn.com/flex022/uploads/zeppelin/original/3X/3/1/31533e5316787a7cffc4d6a02ad8e27fc2f88f26.png)  
 ![Screenshot 2023-10-06 at 3.37.31 PM](https://us1.discourse-cdn.com/flex022/uploads/zeppelin/original/3X/5/6/5618c6d1e2d1b608691d912c822084e58eb1079c.png)

Is there someone who can help me import the following contracts/utils please?

```auto
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

import "@openzeppelin/contracts/utils/math/SafeMath.sol";

import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";

import "@openzeppelin/contracts/access/AccessControl.sol";

import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

import "@openzeppelin/contracts/security/Pausable.sol";

<------------------------------------------------------------------------------->
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";

import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";

import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";

import "@openzeppelin/contracts/proxy/Clones.sol";

```

CC: @ernestognw

---

<div class="post-metadata">

### Author: ![ericglau](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ericglau/32/15149_2.png) [@ericglau](https://forum.openzeppelin.com/u/ericglau)
#### Post date: [October 6, 2023, 9:38pm UTC](https://forum.openzeppelin.com/t/installing-contracts-using-forge-install/38027/2 "2023-10-06T21:38:58Z")

</div>

Change your remappings in foundry.toml to the following instead:

```auto
remappings = [
  '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/',
  '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/'
]

```

* * *

EDIT: The following works better for Etherscan source code verification. Note that this would mean both `@openzeppelin/contracts/` and `@openzeppelin/contracts-upgradeable/` are coming from the `openzeppelin-contracts-upgradeable` submodule and its subdirectories (which includes its own transitive copy of `openzeppelin-contracts` of the same release version number). Particularly, any `openzeppelin-contracts` that you also have installed separately is NOT used.

foundry.toml:

```auto
remappings = [
  '@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/',
  '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/'
]

```

or remappings.txt:

```auto
@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/

```

---

<div class="post-metadata">

### Author: ![Ibrahim96](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ibrahim96/32/16264_2.png) [@Ibrahim96](https://forum.openzeppelin.com/u/Ibrahim96)
#### Post date: [October 7, 2023, 12:58am UTC](https://forum.openzeppelin.com/t/installing-contracts-using-forge-install/38027/3 "2023-10-07T00:58:29Z")

</div>

> [@ericglau](#):
>
> ```auto
> '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/',
> '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/'
> 
> ```

Seems like it works well; Except for those imports! I'll debug and update

```auto
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/security/Pausable.sol";

```

**UPDATE:**  
These two contracts have different import paths from previous openZeppelin versions (4.7.1)

```auto
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "@openzeppelin/contracts/utils/Pausable.sol";

```

I'm guessing SafeMath.sol no longer available?

---

<div class="post-metadata">

### Author: ![ericglau](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ericglau/32/15149_2.png) [@ericglau](https://forum.openzeppelin.com/u/ericglau)
#### Post date: [October 7, 2023, 4:10pm UTC](https://forum.openzeppelin.com/t/installing-contracts-using-forge-install/38027/4 "2023-10-07T16:10:24Z")

</div>

Yes, some of the paths have changed and SafeMath.sol was removed in 5.0.0. See [https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.0.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.0.0)

---

<div class="post-metadata">

### Author: ![luislucena](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/luislucena/32/15203_2.png) [@luislucena](https://forum.openzeppelin.com/u/luislucena)
#### Post date: [February 2, 2024, 7:46am UTC](https://forum.openzeppelin.com/t/installing-contracts-using-forge-install/38027/6 "2024-02-02T07:46:52Z")

</div>

exactly! @Ibrahim96 you can use `Math` library and see the functions, some were renamed and improved!

@ericglau exactly! your remapping works fine, but I add here the command to run it and make it work:  
` forge install OpenZeppelin/openzeppelin-contracts@v5.0.1 --no-commit`

just a little extra info in case anyone sees it! that worked for me too!
