Migrating Arch Linux to new hardware requires exporting the package list and mounting storage correctly. The command
listpacman does not exist; instead, use
pacman -Qqm for AUR packages and
pacman -Qm for third-party repos. You must mount your target drives before installing these packages to ensure they are placed on the correct filesystem.
Understanding Package Categories in Arch
Before migrating, it is crucial to distinguish between official repository packages, community-maintained packages, and AUR (Arch User Repository) packages. Official packages installed via
pacman -S are tracked by default. However, many users rely on AUR helpers like
yay or
paru to install software not found in the main repositories. These packages require special handling during migration because their build scripts and dependencies may differ between machines.
The original question referenced a fictional tool called
listpacman. This package does not exist in the Arch ecosystem. Attempting to run
sudo pacman -S listpacman will result in a "target not found" error. Instead, you must use standard Pacman query flags to export your installed software lists. Understanding this distinction prevents wasted time searching for non-existent tools and ensures you capture all necessary components of your system.
Exporting Official Packages
To migrate your base system, you need a list of all packages installed from the official repositories. Run the following command on your source machine:
pacman -Qqe > packages-official.txt
This command queries explicitly installed packages (
-Qe) that are not orphaned (
-q implies quiet mode, but combined with output redirection, it lists them). The
-Qe flag is critical because it excludes dependencies that were automatically installed to satisfy other packages' requirements. Including them would bloat your installation list and potentially break dependency trees on the new machine. Save this file to a USB drive or cloud storage accessible from your new environment.
Exporting Third-Party and AUR Packages
AUR packages are often built from source using helpers like
yay. To get a clean list of these, you should query the local database for packages marked as foreign or specifically from the AUR.
For packages installed via
yay that are not in the official repos, use:
yay -Qm | awk '{print $1}' > packages-aur.txt
The
-Qm flag lists "mismatches," which typically includes packages installed from external sources like the AUR or third-party repositories. Using
awk extracts just the package names, removing version numbers and descriptions, which makes the file easier to process later. Note that
yay uses the
-m flag, not
-aur, so be careful not to use incorrect syntax when querying.
Preparing the New Machine
Once you have transferred your text files to the new machine, you must prepare the filesystem. Migration involves more than just copying data; it requires proper mount points. If you are installing Arch Linux fresh, follow the standard installation guide, ensuring you partition your disks correctly. For detailed troubleshooting if your installation gets stuck during mounting, refer to our guide on
Installing Arch Linux on Acer Predator Helios 300 (Neo 16).
After booting into your new Arch installation, create a directory where you will temporarily store your exported lists. Mount your home partition or external drive containing the
packages-official.txt and
packages-aur.txt files. Verify the mount point with
mount | grep /mnt or whichever directory you chose.
Installing the Migrated Packages
With the lists ready and the drive mounted, you can begin installing packages. It is dangerous to blindly loop through a package list without checking for existence or updates. Always use the
--needed flag to avoid reinstalling packages that are already up-to-date or present.
First, update your system to ensure you have the latest package database:
sudo pacman -Syu
Next, install the official packages. Use a while loop to read each line from your file:
while IFS= read -r pkg; do sudo pacman --needed -S "$pkg"; done < packages-official.txt
The
IFS= read -r construct safely handles package names with spaces or special characters. The
--needed flag ensures efficiency. If a package fails to install, the loop will stop or print an error, allowing you to investigate. Do not use
-y inside the loop, as this forces unnecessary database refreshes for every single package, slowing down the process significantly.
For AUR packages, use your preferred helper. If you use
yay:
while IFS= read -r pkg; do yay --needed -S "$pkg"; done < packages-aur.txt
Again,
--needed is essential. Some AUR packages may require manual intervention or have changed build scripts since the old machine was active. Be prepared to review PKGBUILDs if builds fail.
Handling Errors and Orphans
Not all packages will transfer seamlessly. Hardware-specific drivers or deprecated software may cause issues. After installation, clean up orphaned packages that are no longer required by any installed program:
sudo pacman -Rns $(pacman -Qtdq)
This step is optional but recommended for a clean system. If you encounter errors during the import process, check the Arch Wiki for specific package conflicts. For related issues regarding installation failures, see
How to Fix Accidentally Installing Arch Linux with Wrong Root Partition.
Final Configuration Steps
After installing packages, verify your bootloader configuration. If you migrated from different hardware, you may need to regenerate your initramfs to detect new storage controllers or GPUs:
sudo mkinitcpio -P
Also, check your network configurations. NetworkManager profiles might need adjustment if the MAC addresses of your network cards have changed. Finally, reboot your system to ensure everything loads correctly.
Frequently Asked Questions
What if an AUR package fails to build?
Check the PKGBUILD for recent changes or missing dependencies. You may need to manually install build tools like
base-devel or resolve conflicting libraries before retrying the installation.
Can I use paru instead of yay for AUR packages?
Yes,
paru is a popular alternative. Replace
yay with
paru in the installation commands. Ensure
paru is installed and configured similarly to
yay on your new machine.
Why did my installation skip some packages?
If you used the
--needed flag, packages already at the latest version were skipped intentionally. This is normal behavior designed to save time and bandwidth during migration.
Should I include auto-installed dependencies in my list?
No. Only export explicitly installed packages using
-Qe. Including dependencies creates a bloated list and can lead to broken dependencies if those dependencies are updated or removed by other packages.
Is it safe to run pacman -S without --needed?
It is unsafe for large migrations. Without
--needed, Pacman will reinstall every package, wasting significant time and disk I/O. Always use
--needed to ensure only outdated or missing packages are processed.