To solve this optimization problem, we first need to identify the decision variables, constraints, and the objective function. The decision variables in this case are the quantities of mango-lovers packages (let's call this \(x_1\)) and regular packages (let's call this \(x_2\)) that the store should prepare.

The constraints arise from the limited stock of fruits:
- For lemons, we have 30 lemons available. Since each mango-lovers package requires 4 lemons and each regular package requires 3 lemons, we can write the constraint as \(4x_1 + 3x_2 \leq 30\).
- For mangos, with 40 mangos in stock, and each mango-lovers package requiring 8 mangos and each regular package requiring 5 mangos, the constraint is \(8x_1 + 5x_2 \leq 40\).
- For pears, with 50 pears available and only the regular packages using them (at a rate of 10 pears per package), the constraint is \(10x_2 \leq 50\).

The objective function represents the total profit from selling these packages. Since each mango-lovers package yields a profit of 5 euros and each regular package yields a profit of 6.5 euros, we want to maximize \(5x_1 + 6.5x_2\).

All variables should be non-negative since you cannot sell a negative quantity of packages.

Now, let's write the Gurobi code in Python that solves this linear programming problem:

```python
from gurobipy import *

# Create a new model
m = Model("Fruit Store Optimization")

# Define the decision variables
x1 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="MangoLoversPackages")
x2 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="RegularPackages")

# Define the constraints
m.addConstr(4*x1 + 3*x2 <= 30, "LemonsConstraint")
m.addConstr(8*x1 + 5*x2 <= 40, "MangosConstraint")
m.addConstr(10*x2 <= 50, "PearsConstraint")

# Define the objective function
m.setObjective(5*x1 + 6.5*x2, GRB.MAXIMIZE)

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution found: {x1.varName} = {x1.x}, {x2.varName} = {x2.x}")
    print(f"Maximum profit: {m.objVal} euros")
else:
    print("No optimal solution found")

```