This answer is under the assumption of an authoritative server.
Should I only move the objects when a new update packet is received?
When the user issues an order, the client can start moving the objects, while the order is sent to the server. However, when the update comes from the server, you must synchronize the position to what the server says.
So, no, you are not obligated to only move objects when an update is received. However, that doesn't mean that you have to move objects without an update either. For intance, you have the objects change their animation, and play audio cues that indicate that the client registered the input... and then only move the objects when the update is received.
With that said, for a real time strategy game, you want to relay high level orders. For instance, instead of sending the position of a unit every update, just send its destination. If the client can do the same pathfinding than the server, it will result in the same path, and it is less network traffic.
There might be, of course, instances where the client simulation predicts the update from the server wrong. For example, assuming the client is kept in the dark about the state of whole map (the fog of war exists at network level※), if there is an obstacle that the client is unaware of, the client could pick a different path than the server... well, why would the unit be avoiding an obstacle that it should be unware of? Have the server do pathfinding ignoring anything controlled by other players that is not behind fog of war, so that it picks the path the client would pick.
※: Which is a good thing, because it means that snooping (intercepting) the network communication will not allow to get information of what happens outside of fog of war. And also, it is less network traffic.
You might be interesting in searching about "client-side prediction", "synced state" and "lag compensation".